输出一个不多于五位的整数,求出它是几位数,分别输出每一位数字,按逆序输出各位数字
样例输入:123
样例输出:
3
3 2 1
1 2 3
**
**
**
在这里#include<stdio.h>
#include<math.h>
int main(){
signed int x, i, a, b, c, d, t;
scanf("%5d",&x);
b = c = x;// 1. x把值赋给b,c后x仍为输入的值,而不是0.
for(i = 0; x > 0; i++){
x = x/10;// 2. 因为x的值已经改变了,所以之后在使用x不是一开始给x赋的值。所以要将x的值赋给其他变量来当作x继续使用。如果在这条语句结束后加上 x=x任然没用,是把已经改变了的x在赋值给x.
}
printf("%d\n",i);
for(i; b > 0; i--){
t = pow(10,(i-1));//之前这里用了i,也就是10^3=1000,但是下意识以为是100
a = b/t;//按顺序依次取出整数位,例:123,123/100=1;23/10=2;最后剩下余数。
//也就是说几位数就除以10^(i-1),可以把前面的数取出来。取出一次后,改变 被取出数(b)的值,也就是拿走b的第一位,(从左往右)。即123——>23。并输出取出的数1.
//之后再继续取,取出2后,b又=3,输出a的值2。
//因为b>0所以继续循环,a=3/(10^0)=3,而b/1求余数为0所以输出a的值后停止循环。
b = b%t;
printf("%d ",a);
}
printf("\n");
for(;c > 0;){
d = c%10;//取模,通过求余从后往前取出数据
c = c/10;//将末尾的数赋值给d后再拿走末尾的数,那么,就可以依次从后往前把所有的数输出来。
printf("%d ",d);
}
return 0;
}
**
**
**
- x把值赋给b,c后x仍为输入的值,而不是0.
b = c = x
**
**
**
2.注: 因为x的值已经改变了,所以之后在使用 x 不是一开始给 x 赋的值。
所以要将x的值赋给其他变量来当作x继续使用。如果在这条语句结束后加上 x=x任然没用,是把已经改变了的x在赋值给x.
for(i = 0; x > 0; i++){
x = x/10
}
**
**
**
3. 之前这里用了i,也就是10^3=1000,但是下意识以为是100
for(i; b > 0; i--){
t = pow(10,(i-1));
**
**
**
- 按顺序依次取出整数位,例:123,123/100=1;23/10=2;最后剩下余数。
也就是说几位数就除以10^(i-1),可以把前面的数取出来。取出一次后,改变 被取出数(b)的值,也就是拿走b的第一位,(从左往右)。即123——>23。并输出取出的数1.
之后再继续取,取出2后,b又=3,输出a的值2。
因为b>0所以继续循环,a=3/(10^0)=3,而b/1求余数为0所以输出a的值后停止循环。
a = b/t
b = b%t;
printf("%d ",a);
}
**
**
**
5. 取模,通过求余从后往前取出数据
for(;c > 0;){
d = c%10;
**
**
**
6. 将末尾的数赋值给d后再拿走末尾的数,那么,就可以依次从后往前把所有的数输出来。
c = c/10;
printf("%d ",d);
}