Heim >Computer-Tutorials >Computerwissen >Schreiben Sie ein Programm in C-Sprache, um die Summe der Ziffern einer ganzen Zahl zu berechnen
Der Schlüssel zu dieser Frage ist, Zahlen zu trennen. Verwenden Sie zum Beispiel 119, um eine Trennung zu erreichen Auf diese Weise (1) Bei Verwendung von 119 % 10 ist der Rest nach der Division von 119 durch 10 9, oder? Wenn Sie schlau sind, sollten Sie inzwischen herausgefunden haben, dass 9 getrennt wurde. Dann kann das Ergebnis von 119/10 nur eine ganze Zahl sein, also 11, oder? und der Rest nach der Division von 11 durch 10 ist 1, oder? Ist 1 wieder getrennt? (3) Schließlich ist es die Hunderterstelle. Das Ergebnis von 11/10 ist 1, richtig, und die Hunderterstelle ist auch getrennt. (4) Am Ende müssen wir sie nur addieren.
Die Endbedingung der Trennung liegt vor, wenn das teilbare Ergebnis kleiner als 10 ist.
Während des Trennungsprozesses können wir Arrays verwenden, um die getrennten Zahlen zu speichern.
Der spezifische Code lautet wie folgt:
/*Methode 1 ist eine rekursive Methode. Ich denke, diese Methode ist einfacher und am besten zu verstehen*/
#include
int show(int num)
{
if(num
return num;/*rekursiver Exit*/
sonst
return num%10+show(num/10);
}
void main()
{
int num,sum;
printf("Bitte geben Sie eine Ganzzahl ein:");
scanf("%d",&num);
sum=show(num);
printf ("Das Ergebnis der Summe jeder Ziffer ist: %dn",sum);
}
/*Methode 2 wird mit Arrays durchgeführt. Die Methode ist möglicherweise zu kompliziert. Wenn Sie gute Methoden haben, teilen Sie sie bitte mit
#include{
int-Wert[10];
int num;
printf("Bitte geben Sie eine Ganzzahl ein:");
scanf("%d",&num);
while(num
=10000)
{printf („Dieser Code unterstützt derzeit nur die Berechnung von 4-stelligen Zahlen unter 10000 und die eingegebene Ganzzahl ist ungültig! Bitte erneut eingeben:“
scanf("%d",&num);
}
if(num>=0&num printf ("Das Ergebnis ist: %dn",num);
else if(num>=10&num {
value[0]=num%10;
Wert[1]=num/10;
printf ("Das Ergebnis ist: %dn", Wert[0]+Wert[1]);
}
else if(num>=100&num {
value[0]=num%10; /*einzelne Ziffern trennen*/
value[1]=num/10; /*Neue zu trennende Zahl abrufen*/
Wert[2]=Wert[1]%10; /*Zehnerziffern trennen*/
value[3]=value[1]/10; /*Erhalte die Hunderterstelle*/
printf ("Das Ergebnis ist: %dn", Wert[0]+Wert[2]+Wert[3]);
}
sonst
{
value[0]=num%10; /*einzelne Ziffern trennen*/
value[1]=num/10; /*Neue zu trennende Zahl abrufen*/
Wert[2]=Wert[1]%10; /*Zehnerziffern trennen*/
value[3]=value[1]/10; /*Die neue zu trennende Zahl abrufen*/
value[4]=value[3]%10; /*Erhalte die Hunderterstelle*/
value[5]=value[3]/10; /*Erhalte die Zahl in Tausend*/
printf ("Das Ergebnis ist: %dn", Wert[0]+Wert[2]+Wert[4]+Wert[5]);
}
}
Eine Frage zu Arrays in der Sprache C. C-Experten können helfen
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //Ein Array von 10 Elementen ist definiert, jedes Element ist vom Typ int und Ein p-Zeiger ist definiert.
p=a; //p Zeiger zeigt auf Array a
printf („%xn“,p); //Ausgabe zeigt die Adresse von p hexadezimal an,
printf („%xn“,p+9); //p+9 bedeutet, die Adresse um 9 Int-Typ-Abstände zu verschieben und sie dann in eine hexadezimale Anzeige zu ändern,
}
Wenn Sie die Adresse wirklich drucken möchten, verwenden Sie einfach das %p-Format. Der Effekt ist der gleiche wie %x, einige Operationen werden jedoch weggelassen.
Wenn eine Variable vom Typ int 2 Bytes belegt,
Die Ausgabe der ersten printf-Anweisung ist 194, dann ist das Ausgabeergebnis der zweiten printf-Anweisung
Mit dieser Frage möchten wir Sie fragen, wie viele Bytes vom ersten bis zum letzten Element belegt sind
0x194 +2* 9=
Rechnen Sie einfach selbst, ich bin zu faul zum Umrechnen.
194 stellt die erste Adresse des Arrays im Hexadezimalformat dar. Ein Int-Typ belegt 2 Bytes, sodass der Abstand zum Verschieben von 9 Elementen 2*9 Bytes beträgt und dann die Adresse angezeigt wird.
Dies geht tief in das Darstellungsformat des Typs im Speicher ein. Denken Sie daran, dass +1 die Distanz zum Verschieben eines Elementtyps bedeutet.
Ein paar einfache Fragen zur C-Sprachprogrammierung zu Arrays. Danke!
#include "stdio.h"
void main()
{int a[10];
int i,max;
for(i=0;i scanf("%d,",&a[i]);
max=a[0];
for(i=1;i {
wenn(max
max=a[i];
}
printf("Der Maximalwert ist: %d",max);
}
Zweite Frage:
#include "stdio.h"
void main()
{
int i,a[10];
long int sum; /*sum ist die Gesamtpunktzahl*/
Float-Durchschnitt; /*Durchschnitt*/
for(i=0;i {
printf ("Bitte geben Sie die Punktzahl von Schüler %d: ein", (i+1));
scanf("%d",a[i]);
printf("n");
}
for(i=0;i sum=sum+a[i];
Durchschnitt=Summe/10,0;
printf("Die durchschnittliche Punktzahl von 10 Schülern beträgt: %f",durchschnittlich);
}
Frage 3:
#include "stdio.h"
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int c[10];
for(i=0;i
c[i]=a[i]+b[i];
for(i=0;i
printf("%d,",c[i]);
}
Frage 4:
#include "stdio.h"
{
int i,a[100];
int cx;
for(i=1;i
{
a[i]=i+2;
}
scanf("Geben Sie den Wert ein, den Sie abfragen möchten: %d",cx);
for(i=0;i
if(cx==a[i])
{
printf („Die %d-te Zahl ist der Wert, den Sie abfragen möchten!“);
Pause;
}
sonst
printf („Der von Ihnen eingegebene Wert ist nicht in diesem Array“);
}
Das obige ist der detaillierte Inhalt vonSchreiben Sie ein Programm in C-Sprache, um die Summe der Ziffern einer ganzen Zahl zu berechnen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!