0
votes

Je ne comprends pas bien la syntaxe où elle ajoute la somme de 5 chiffres

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;
}


1 commentaires

n% 10 isole le chiffre le moins significatif 4 qui est ajouté à somme . Le numéro est ensuite divisé par 10, qui supprime ce chiffre laissant 1056 . Les deux lignes sont exécutées dans la séquence que vous avez écrites.


5 Réponses :


0
votes

Allature Le compilateur peut apporter certaines optimisations afin que votre code puisse changer, c fonctionne sur votre code de haut en bas.

la chose qui arrive ici dans la boucle tandis que

somme + = n% 10; == somme = somme + n% 10; Tout d'abord, % est activé, puis l'opérateur + . Ainsi, vous obtenez d'abord le dernier chiffre important du nombre, puis vous le résumez à votre résultat et l'attribuer dans somme .

La même chose arrive dans n / = 10; . Tout d'abord, vous divisez le numéro enregistré dans n , puis vous stockez le résultat dans n .

J'espère que cela répond à votre question.


0 commentaires

0
votes

Comment ça marche:

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

En faisant la même opération, vous obtenez toujours les unités de N et l'ajoutez à la somme.


0 commentaires

0
votes

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.


0 commentaires

1
votes

La somme n'est pas "à la fois % 10 et / 10 syntaxiquement".

n% 10 est le chiffre le moins significatif (le plus à droite) de n .
C'est ce qui est ajouté à somme .

ALORS N / = 10 ( N = N / 10 ) "CASSO OFF" Ce chiffre de N et le processus se répète.

Vous pouvez le travailler à la main:

SET n = 12345 et somme = 0 .

12345 n'est pas zéro, alors entrez la boucle:

12345% 10 est 5 , donc somme + = 5 , qui fait 5 .
12345/10 est 1234 , donc n = 1234 .

maintenant, n est 1234 , qui n'est pas zéro.

1234% 10 est 4 , donc somme + = 4 , qui fait 9 .
1234/10 est 123 , donc n = 123 .

123 n'est pas zéro ...

et ainsi de suite, jusqu'à ce que n devient zéro, ce qui se produira après une seule chiffre à gauche.


1 commentaires

Merci, je comprends sa méthode pour ajouter la somme maintenant. Je ne connais pas les boucles "alors que".



0
votes

La description suivante de ce qui se passe dans votre code devrait vous aider à comprendre xxx

la sortie est la suivante: xxx


0 commentaires