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 = 0
aussiréinitialiser la valeur de
sum
à chaque itération où vous prenez une nouvelle entrée utilisateur