Je suis nouveau en C et je ne peux pas faire un simple exercice pour l'école.
Je veux faire quelque chose comme ceci: p> 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. p> Ceci est à voir avec la fonction de commutation et uniquement les compétences de programmation de base. P> J'ai ceci: p> 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 ... P> Désolé si je ne peux pas m'expliquer mieux mais l'anglais n'est pas ma langue maternelle. P> regarde, P> Favolas P>
############################### en solution d'avancement (ne fonctionne pas si le nombre% 10 donne 0 € € € €€rœur €
p>
4 Réponses :
Le nombre Vous devez isoler les chiffres individuels de l'entrée. P> indice: Utilisez le 123 code> est 100 + 20 + 3 code> ou 1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0 code >. / %% code> opérateurs p> < Pré> xxx pré> p>
Si vous entrez un chiffre plus grand, Vous devez donc "traverser" le chiffre numérique par chiffre. Vous pouvez extraire le dernier chiffre si vous prenez MODULO 10: Donc, vous devez écrire une boucle qui extrait les chiffres simples de num code> contient exactement ce numéro, c'est-à-dire aucun de vos cas ( 0 code> à 9 code>) correspond à la valeur. de num code>. p>
12345% 10 == 5 code>. De plus, vous pouvez couper le dernier chiffre en divisant par 10: 2345/10 == 234 code> (en raison de la division intégrale). P>
num code>, puis appliquez la distinction de votre cas pour chaque chiffre. P>
dans la base 10, le nombre 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. P> 12345 code> est en fait 1 * 10000 + 2 * 1000 + 3 * 100 + 4 * 10 + 5 * 1 code>. Vous pouvez donc obtenir le dernier chiffre d'un nombre en calculant le reste de la division du numéro par 10 code>. Et le dividende sera le paragraphe le plus important du nombre. Donc, '12345 = 1234 * 10 + 5 . Dans code> C , l'opérateur code>% est utilisé pour calculer le reste de la division, de sorte que code> 12345% 10 est égal à code> 5` . P>
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;
}
}
Comme la question est étiquetée code> devoirs code> 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 code>?
-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 code> devrait retourner int code>; 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); code> après l'impression; scanf code> 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.
+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