给出一个不多于10位的非负整数,要求1:求出它是几位数 ;要求2:分别输出每一位数字;要求3:将这个整数对应的逆序的整数输出,例如原数为321,应输出123。
输入格式:
一个不大于10位的整数
输出格式:
共三行,第一行:位数;第二行:用空格分开的每个数字,注意最后一个数字后没有空格;第三行:按逆序输出对应的整数。
输入样例1:
- 12345
输出样例1:
- 5
- 1 2 3 4 5
- 54321
输入样例2:
- 1000000
输出样例2:
- 7
- 0000001
#include<stdio.h>
int main()
{
int num,tmp,digit,digits=0,weight=1;
//digits-位数,digit-数位,weight-权值
scanf("%d",&num);
tmp=num;
if(tmp==0)
digits++;
while(tmp)//当tmp=0时不进行循环
{
digits++;
tmp=tmp/10;
weight=weight*10;
}
if(num)//拿123举例,123权值为100
weight=weight/10;//所以要除10
printf("%d\n",digits);
tmp=num;
while(weight)
{
digit=tmp/weight;
tmp=tmp%weight;
weight=weight/10;
if(weight>0)
printf("%d ",digit);
else
printf("%d\n",digit);
//当weight=0时,最后一位数字不空格
}
tmp=0;
while(num)
{
tmp=tmp*10+num%10;
num=num/10;
}
printf("%d\n",tmp);
}