Maison > Article > tutoriels informatiques > Écrire un programme en langage C pour calculer la somme des chiffres d'un entier
La clé de cette question est de séparer les nombres. Vous pouvez utiliser cette méthode pour séparer. Par exemple, utilisez 119 pour obtenir la séparation. Selon la question, le résultat est 1+1+9=11, n'est-ce pas ? de cette façon, (1) En utilisant 119 %10, le reste après avoir divisé 119 par 10 est 9, n'est-ce pas ? Si vous êtes intelligent, vous devriez avoir découvert que 9 a été séparé maintenant. (2) Ensuite, séparez les chiffres des dizaines. Le résultat de 119/10 ne peut être qu'un nombre entier, qui est 11, n'est-ce pas ? et le reste après avoir divisé 11 par 10 est 1, n'est-ce pas ? Est-ce que 1 est à nouveau séparé ? (3) Finalement, c'est le chiffre des centaines. Le résultat de 11/10 est 1, n'est-ce pas, et le chiffre des centaines est également séparé (4) Au final, il suffit de les additionner.
La condition finale de séparation est lorsque le résultat divisible est inférieur à 10.
Pendant le processus de séparation, nous pouvons utiliser des tableaux pour stocker les nombres séparés.
Le code spécifique est le suivant :
/*La méthode 1 est une méthode récursive je pense que cette méthode est la plus simple et la meilleure à comprendre*/
#inclure
int show(int num)
{
si(num
numéro de retour;/*sortie récursive*/
autre
retourner num%10+show(num/10);
}
void main()
{
int num,somme;
printf("Veuillez saisir un entier :");
scanf("%d",&num);
sum=show(num);
printf ("Le résultat de la somme de chaque chiffre est : %dn",sum);
}
/*La méthode 2 est réalisée à l'aide de tableaux. La méthode est peut-être trop compliquée. Ne la suggérez pas. Si vous avez de bonnes méthodes, partagez-les*/
.#inclure
void main()
{
valeur int[10];
int num;
printf("Veuillez saisir un entier :");
scanf("%d",&num);
pendant(num=10000)
{
printf ("Ce code ne prend actuellement en charge que le calcul des nombres à 4 chiffres inférieurs à 10 000, et l'entier saisi n'est pas valide ! Veuillez ressaisir :"
) ;scanf("%d",&num);
}
if(num>=0&num
printf ("Le résultat est : %dn",num);
sinon si(num>=10&num
{
valeur[0]=num%10;
valeur[1]=num/10;
printf ("Le résultat est : %dn", valeur[0]+valeur[1]);
}
sinon si(num>=100&num
{
value[0]=num%10; /*chiffres séparés*/
value[1]=num/10; /*Obtenir le nouveau numéro à séparer*/
value[2]=value[1]%10; /*Dizaines séparées*/
value[3]=value[1]/10; /*Obtenir le chiffre des centaines*/
printf ("Le résultat est : %dn", valeur[0]+valeur[2]+valeur[3]);
}
autre
{
value[0]=num%10; /*chiffres séparés*/
value[1]=num/10; /*Obtenir le nouveau numéro à séparer*/
value[2]=value[1]%10; /*Dizaines séparées*/
value[3]=value[1]/10; /*Obtenir le nouveau nombre à séparer*/
value[4]=value[3]%10; /*Obtenir le chiffre des centaines*/
value[5]=value[3]/10; /*Obtenir le nombre en milliers*/
printf ("Le résultat est : %dn", valeur[0]+valeur[2]+valeur[4]+valeur[5]);
}
}
#inclure
principale()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //Un tableau de 10 éléments est défini, chaque élément est de type int, et Un pointeur p est défini.
p=a; //p le pointeur pointe vers le tableau a
printf ("%xn",p); //La sortie affiche l'adresse de p en hexadécimal,
printf ("%xn",p+9); //p+9 signifie déplacer l'adresse d'une distance de type 9 int puis la changer en affichage hexadécimal,
}
Si vous voulez vraiment imprimer l'adresse, utilisez simplement le format %p. La valeur par défaut est hexadécimale. L'effet est le même que %x, mais certaines opérations sont omises.
Si une variable de type int occupe 2 octets,
La sortie de la première instruction printf est 194, puis le résultat de la deuxième instruction printf est
Cette question revient à vous demander combien d'octets sont occupés du premier élément au dernier élément
0x194 +2* 9=
Faites le calcul vous-même, je suis trop paresseux pour me convertir.
194 représente la première adresse du tableau en hexadécimal. Un type Int occupe 2 octets, donc la distance pour déplacer 9 éléments est de 2*9 octets, puis l'adresse est affichée.
Cela va en profondeur dans le format de représentation du type dans la mémoire. N'oubliez pas que +1 signifie la distance pour déplacer un type d'élément.
Première question :
#include "stdio.h"
void main()
{int a[10];
int i,max;
pour(i=0;i
scanf("%d,",&a[i]);
max=a[0];
pour(i=1;i
{
si(max
max=a[i];
}
printf("La valeur maximale est : %d",max);
}
Deuxième question :
#include "stdio.h"
void main()
{
int i,a[10];
long int sum /*la somme est le score total*/
moyenne flottante ; /*moyenne*/
pour(i=0;i
{
printf ("Veuillez saisir le score de l'élève %d:", (i+1));
scanf("%d",a[i]);
printf("n");
}
pour(i=0;i
somme=somme+a[i];
moyenne=somme/10.0;
printf("La note moyenne de 10 élèves est : %f",moyenne);
}
Question 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];
pour(i=0;i
c[i]=a[i]+b[i];
pour(i=0;i
printf("%d,",c[i]);
}
Question 4 :
#include "stdio.h"
{
int i,a[100];
int cx;
pour(i=1;i
{
a[i]=i+2;
}
scanf("Entrez la valeur que vous souhaitez interroger : %d",cx);
pour(i=0;i
if(cx==a[i])
{
printf ("Le %dth nombre est la valeur que vous souhaitez interroger !"
);pause;
}
autre
printf ("La valeur que vous avez saisie n'est pas dans ce tableau");
}Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!