给一个不多于5位数的正整数.要求:
1.求出它是几位数;
2.分别输出每一位数字;
3.按逆序输出个位数字,例如原数字为123,输出321.
一、求出它是几位数
#include<stdio.h>
int main()
{
int m,n,count=0;
scanf("%d",&n);
m=n;
//求位数
while(m!=0)
{
count++;
m/=10;
}
if (m==0)
count=1;
printf("%d数的位数是%d:",n,count);
return 0;
}
这里用count来计数,算一个数的位数,只要用这个数来除以十,数除几次得到零即可,不过,0是个意外,所以应该用if语句将0单独罗列出来。
二、分别输出每一位数字
int main()
{
int n;
scanf("%d",&n);
if(n == 0)
{
printf("0\n");
return 0;
}
//统计n的位数
int count = 0;
int m = n;
while(m != 0)
{
count++;
m /= 10;
}
//计算需要除以或者 %= 的数字
int power = pow(10.0,count-1);
while(n != 0)
{
//得到并输出最高位
printf("%d ",n/power);
//丢弃最高位
n %= power;
//除以的数字/=10
power /= 10;
}
printf("\n");
return 0;
}
这里是先将上一步的位数算出来,因为要统计一个数字的每一位,我们运用的方法是将一行数字的最高位统计出来,并且抛弃最高位,以此类推,得到每一位数。在这里运用的方法:得到最高为n/pow(10.0,count-1),也就是n/(n的位数的最小整数),然后我们抛弃它,不过在抛弃之前,先要输出出来。抛弃一个数,用取余的方法,和上述方法类似,即n%pow(10.0,count-1),然后一个循环,给他设置条件n!=0就好。
三、按逆序输出各位数字
int main()
{
int n;
scanf("%d",&n);
if(n == 0)
{
printf("0\n");
return 0;
}
if(n < 0)
{
printf("-");
n = -n;
}
while(n != 0)
{
printf("%d ",n%10);
n /= 10;
}
printf("\n");
return 0;
}
n%10取到最后一位数,n/10舍弃最后一位数,在n!=0的条件下,重复即可,取到然后输出,输出然后舍弃,舍弃在取到上一位的数字,循环就可以得到按逆序输出的数字。