J'aime créer un programme qui décomposera un numéro, supposons que n = 123 attendu est si la sortie n = 103, la sortie attendue devrait être uniquement p> #include<stdio.h>
int main(){
int n;
int mod=0;
int ten=0;
int hun=0;
scanf("%d",&n);
if(n<10){
printf("%d ",n);
}
else if(n<100){
ten = 10*(n/10);
mod = n - ten ;
printf("%d + %d",ten,mod);
}
else if(n<1000){
hun = 100*(n/100);
mod = n - hun ;
ten = 10*(mod/10);
mod = n % (hun+ten) ;
printf("%d + %d + %d",hun,ten,mod);
}
}
4 Réponses :
Utilisation de la récursion. Pour les grands nombres entiers change int code> à long / long LONG CODE> basé sur vos besoins. -lm code> Tout en compilant le code (comme vous utilisez math.h code>) p> p> p>
Tout d'abord, vous devez compter le nombre de chiffres. Après avoir connu le nombre de chiffres, vous pouvez trouver la puissance de chaque chiffre. Ensuite, vous devez modulo votre numéro avec sa puissance la plus élevée dans chaque itération afin de vider le chiffre le plus élevé.
gcc <name of your C file> -lm
Ceci peut être fait de manière récursive, en commençant par la puissance maximale de 10 000 000 000; Et dans chaque appel récursif, vous traitez la prochaine puissance moindre de dix en divisant le précédent max de 10, jusqu'à atteindre 0.
#include <stdio.h>
static void decompose(int n, long long ten_power, char *separator) {
if (ten_power == 0) {
return;
}
if (n >= ten_power) {
printf("%s%lld", separator, (n / ten_power) * ten_power);
separator = " + ";
}
decompose(n % ten_power, ten_power / 10, separator);
}
int main(int argc, char **argv) {
int n;
scanf("%d", &n);
decompose(n, 100000000000LL, "");
return 0;
}
Meilleure approche! Merci, j'espère que tous sont maths wiz = d
Je pense qu'au-delà de la satisfaction personnelle, ma réponse est plus compréhensible que ce code de code, je doute que l'OP l'ait compris en fait, mais a choisi les trucs plus fantastiques sur la simplicité et la clarté. La seule bonne raison de upvote C'est qu'il ne nécessite pas de bibliothèque de mathématiques et est sujette à l'étude de cas, mais à la fin, il ne devrait pas certainement pas être la réponse acceptée
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
char n[10];
scanf("%s", n);
int out[10];
for(int a=0; a<strlen(n); ++a) {
char c = n[a];//one character at a time to be used with atoi()
out[a] = atoi(&c) * (int) pow(10.0f, (double) strlen(n)-a-1);
printf("%d ", out[a]);
}
}
There needs to be a loop on the length of the word, you retrieve each character one by one and use atoi (ascii to integer) then the pow() method from math.h with the exponant at strlen(n)-a-1 to get the correct number.
Vous semblez avoir sous-spécifié le problème: combien de termes voulez-vous décomposer
n code> dans?