J'ai lu les codes de discussion et je ne comprends pas la syntaxe dans laquelle la somme de 5 chiffres est émise. Je pensais que C lit tout de haut en bas, laissé à droite, alors comment la somme est-elle à la fois% 10 et / 10 syntaxiquement?
Il s'agit d'un défi de Hackerrank, d'entrée 5 chiffres et de la somme de 5 chiffres. P>
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> int main() { int n; scanf("%d", &n); int sum = 0; while(n) { sum += n % 10; n/= 10; } printf("%d\n", sum); //Complete the code to calculate the sum of the five digits on n. return 0; }
5 Réponses :
Allature Le compilateur peut apporter certaines optimisations afin que votre code puisse changer, c fonctionne sur votre code de haut en bas. P>
la chose qui arrive ici dans la boucle tandis que p>
La même chose arrive dans J'espère que cela répond à votre question. P> somme + = n% 10; code> ==
somme = somme + n% 10; code>
Tout d'abord,
% code> est activé, puis l'opérateur
+ code>.
Ainsi, vous obtenez d'abord le dernier chiffre important du nombre, puis vous le résumez à votre résultat et l'attribuer dans
somme code>. P>
n / = 10; code>. Tout d'abord, vous divisez le numéro enregistré dans
n code>, puis vous stockez le résultat dans
n code>. p>
Comment ça marche: p>
Bien que N N'EST N'EST NULLL, vous ajoutez le reste de la division N / 10. Si n = 10564: À la première itération, vous obtenez 4, le résultat de 10564% 10. Ensuite, en divisant 10564 par 10, vous obtenez 1056,4. Mais n est une valeur entière, vous obtenez donc n = 1056 p>
En faisant la même opération, vous obtenez toujours les unités de N et l'ajoutez à la somme. P>
Eh bien, la syntaxe et le code semble correct. La syntaxe 'somme + = n% 10' pourrait également être écrite comme "somme = somme + n% 10 '. Et 'n / = 10' comme 'n = n / 10'. Cela supportera que c lit tout de haut en bas et de gauche à droite. P>
La somme n'est pas "à la fois ALORS Vous pouvez le travailler à la main: p>
SET maintenant, et ainsi de suite, jusqu'à ce que % 10 code> et
/ 10 code> syntaxiquement". p>
n% 10 code> est le chiffre le moins significatif (le plus à droite) de
n code>.
C'est ce qui est ajouté à somme code>. p>
N / = 10 CODE> (
N = N / 10 CODE>) "CASSO OFF" Ce chiffre de
N code> et le processus se répète. p>
n = 12345 code> et
somme = 0 code>. p>
12345 code> n'est pas zéro, alors entrez la boucle: p>
12345% 10 code> est
5 code>, donc
somme + = 5 code>, qui fait
5 code>.
12345/10 code> est
1234 code>, donc
n = 1234 code>. p>
n code> est
1234 code>, qui n'est pas zéro. p>
1234% 10 code> est
4 code>, donc
somme + = 4 code>, qui fait
9 code>.
1234/10 code> est
123 code>, donc
n = 123 code>. p>
123 code> n'est pas zéro ... p>
n code> devient zéro, ce qui se produira après une seule chiffre à gauche. P>
Merci, je comprends sa méthode pour ajouter la somme maintenant. Je ne connais pas les boucles "alors que".
La description suivante de ce qui se passe dans votre code devrait vous aider à comprendre la sortie est la suivante: p>
n% 10 code> isole le chiffre le moins significatif
4 code> qui est ajouté à
somme code>. Le numéro est ensuite divisé par 10, qui supprime ce chiffre laissant
1056 code>. Les deux lignes sont exécutées dans la séquence que vous avez écrites.