J'essaie de trouver la Et voici ma sortie: Pourquoi ma précédente Ma sortie souhaitée: somme des chiffres avec les cas de test. Mais le problème est qu'après avoir trouvé une somme , cette somme s'ajoute à la prochaine somme mais je n'ai qu'une somme code> du chiffre de ces chiffres. Veuillez aider. Voici mon code: 3
1234
10
2347
16
8744
23
3
1234
10
2347
26
8744
49
somme s'ajoutant à la prochaine somme ? Je ne comprends pas.
#include <stdio.h>
int main() {
int t, n, i, r, sum=0;
scanf("%d", &t);
for(i=0; i<t; i++) {
scanf("%d", &n);
while(n>0) {
r = n % 10;
sum = sum + r;
n = n / 10;
}
printf("%d\n", sum);
}
return 0;
}
3 Réponses :
Au début de votre boucle, définissez sum sur 0 . Ainsi, avant de prendre la somme sur le prochain ensemble d'éléments, il est initialisé à zéro.
for(i=0; i<t; i++)
{
sum = 0;
scanf("%d", &n);
Vous devez définir votre sum = 0; sur la première ligne de la boucle for .
Problème:
Votre variable sum est définie sur 0 au démarrage du programme et vous ajoutez la somme de chaque cas de test dans la même variable sans nettoyer le résultat du cas de test précédent (en définissant sum = 0 avant le début du cas de test suivant.)
Solution possible:
Initialisez votre variable sum avant le début d'un cas de test.
Code:
for(i=0; i<t; i++)
{
scanf("%d", &n);
sum = 0; //Set sum = 0
//Test Case started in while loop
while(n>0) {
r = n % 10;
sum = sum + r;
n = n / 10;
}
printf("%d\n", sum);
}
De plus, faites
r = 0aussiréinitialiser la valeur de
sumà chaque itération où vous prenez une nouvelle entrée utilisateur