输入一个不多于5位的正整数,要求 1求出它是几位数 2分别打印每一位数字 3按逆序输出各位数字

问题描述:

输入一个不多于5位的正整数,要求 1求出它是几位数 2分别打印每一位数字 3按逆序输出各位数字
这是一道题,第三部我想用数组,但是前两问用了很麻烦的方法,可以改成函数加数组的形式表示吗
1个回答 分类:综合 2014-10-25

问题解答:

我来补答
可以是可以,不过太麻烦了,见下面的代码
#include
int main() {
int a,b[5],s = 0;
scanf("%d",&a);
while (a) {
b[s++] = a % 10;
a /= 10;
}
printf("%d\n",s);
int i;
for (i = s-1; i >= 0; i--) {
printf("%d ",b[i]);
}
printf("\n");
for (i = 0; i < s; i++) {
printf("%d ",b[i]);
}
printf("\n");
return 0;
}
再问: #include void main() { int num,temp,i=0; printf("请输入一个数字\n"); scanf("%d",&num); while(num>0) { temp=num%10; ++i; printf("%d",temp); num=num/10; } printf("\n这个数是%d位数\n",i); system("pause"); return 0; } 能帮我解释一下它吗?详细点,谢谢
再答: int num =0; int i = 0; char num_str[6] = {0}; printf("请输入一个不多于5位的正整数\n"); scanf("%d",&num); do { num_str[i++] = num%10+'0'; //取最后一位数字,+'0' 是把数字转到字符 num = num/10; //去掉最后一位数字 }while (num != 0); //输出位数 printf("%d",i); //正序输出 for(i-=1;i>=0;i--) printf("%c",num_str[i]); //逆序输出 printf("\n%s\n",num_str); 这方法不麻烦吧
再问: 不麻烦,不过我想听听你对上面我追问的那个程序的看法,解释的详细点,谢谢哦
再答: #include void main() { int num,temp,i=0; printf("请输入一个数字\n"); scanf("%d",&num); while(num>0) //大于0说明还有数字要处理 { temp=num%10; //取最后一个数字 ++i; printf("%d",temp); //输出最后一个数字 num=num/10; //去掉最后一个数字,下一次循环倒数第二个数字变成最后一个数字 } printf("\n这个数是%d位数\n",i); system("pause");//暂停 return 0; } //这个程序不符合你要求, 没有正序输出,另外如果你输入0, 那么只输出个位数.
 
 
展开全文阅读
剩余:2000