7
votes

C Numéro number chiffres, un par un et une extension dans une nouvelle ligne

Je suis nouveau en C et je ne peux pas faire un simple exercice pour l'école.

Je veux faire quelque chose comme ceci: xxx

essentiellement, le L'utilisateur entrait un numéro et leur programme écrit, dans une nouvelle ligne, le numéro du dernier numéro important au plus.

Ceci est à voir avec la fonction de commutation et uniquement les compétences de programmation de base.

J'ai ceci: xxx

ii ​​Utilisez un nombre compris entre 0 et 9, cela fonctionne correctement, mais un nombre plus grand que cela ne fait rien. < / p>

Le premier problème que je ne peux pas résoudre est, dans un certain nombre, obtenir la position du chiffre. Je crois que dans mon code, la pause ne fait rien ...

Désolé si je ne peux pas m'expliquer mieux mais l'anglais n'est pas ma langue maternelle.

regarde,

Favolas

############################### en solution d'avancement (ne fonctionne pas si le nombre% 10 donne 0 € € € €€rœur € xxx

c

3 commentaires

+1 pour une question bien libellée


Votre soi-disant solution est une solution erronée. Que se passe-t-il si le nombre est de 666 ou 1000?


D'accord. Trouvé l'erreur. Merci. Va essayer de résoudre ce problème


4 Réponses :


8
votes

Le nombre 123 est 100 + 20 + 3 ou 1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0 .

Vous devez isoler les chiffres individuels de l'entrée.

indice: Utilisez le / %% opérateurs < Pré> xxx


0 commentaires

1
votes

Si vous entrez un chiffre plus grand, num contient exactement ce numéro, c'est-à-dire aucun de vos cas ( 0 à 9 ) correspond à la valeur. de num .

Vous devez donc "traverser" le chiffre numérique par chiffre. Vous pouvez extraire le dernier chiffre si vous prenez MODULO 10: 12345% 10 == 5 . De plus, vous pouvez couper le dernier chiffre en divisant par 10: 2345/10 == 234 (en raison de la division intégrale).

Donc, vous devez écrire une boucle qui extrait les chiffres simples de num , puis appliquez la distinction de votre cas pour chaque chiffre.


0 commentaires

0
votes

dans la base 10, le nombre 12345 est en fait 1 * 10000 + 2 * 1000 + 3 * 100 + 4 * 10 + 5 * 1 . Vous pouvez donc obtenir le dernier chiffre d'un nombre en calculant le reste de la division du numéro par 10 . Et le dividende sera le paragraphe le plus important du nombre. Donc, '12345 = 1234 * 10 + 5 . Dans C , l'opérateur % est utilisé pour calculer le reste de la division, de sorte que 12345% 10 est égal à 5` .

Ensuite, il vous suffit de boucler pendant que le nombre est non nul, en prenant le reste à chaque étape, affichant le chiffre, puis divisant le nombre.


0 commentaires

-1
votes
void main (void){  
    int num;  
    int factor=10;  
    printf("Please insert a number: "); scanf("%d", &num);  
    while(num>0){  
        switch(num%factor){  
            case 1:printf("One\n");break;  
            case 2:printf("Two\n");break;   
            case 3:printf("Three\n");break;  
            case 4:printf("Four\n");break;  
            case 5:printf("Five\n");break;  
            case 6:printf("Six\n");break;   
            case 7:printf("Seven\n");break;  
            case 8:printf("Eight\n");break;  
            case 9:printf("Nine\n");break;  
            case 0:printf("Zero\n");break;  
        }  
        num=num/factor;  
    }  
}  

3 commentaires

Comme la question est étiquetée devoirs Veuillez envisager de ne pas donner au code de sorte que fournir des pointeurs pour aider le questionneur à écrire le code.


Au fait, que si l'utilisateur entre dans le numéro 0 ?


-1: Si vous allez écrire de code pour les questions de devoirs, écrivez au moins un bon code pour que l'étudiant apprend quelque chose même en copiant: principal devrait retourner int ; La sortie est la ligne tamponnée par défaut, vous devez donc mettre fin à la chaîne avec une pause de ligne ou fflush (stdout); après l'impression; scanf La valeur de retour doit être vérifié; Vous avez manqué une validation pour num <= 0; Et il n'y a pas de cas par défaut pour le commutateur. Aussi, vous utilisez très peu de whitespace.