题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
题目分析:
假设一个九位数12346789,我们想得到它是几位数,可以直接循环除以10,除到商为零位置。可以想象为每一轮循环抹掉个位数。
判断位数的代码:
//判断整数位数
#include <stdio.h>
int main()
{
int num=123456789;
int cnt=0;
while(num){
num/=10; //等价于num=num/10
cnt++; //cnt==count,计数的意思
}
printf("这个数是%d位",cnt);
return 0;
}
这个数是9位
--------------------------------
Process exited after 0.2679 seconds with return value 0
请按任意键继续. . .
如果想要得到逆序的数呢?答:对number循环取模即可得到每一位数,在此基础上加2条代码即可
//判断整数位数
#include <stdio.h>
int main()
{
int num=123456789;
int cnt=0;
int bit; //存储每一位数
while(num){
bit=num%10;
printf("%d",bit); //逐次打印出每一位数即可
num/=10; //等价于num=num/10
cnt++; //cnt==count,计数的意思
}
printf("\n这个数是%d位",cnt);
return 0;
}
结果:
987654321
这个数是9位
--------------------------------
Process exited after 0.3162 seconds with return value 0
请按任意键继续. . .
求逆序数方法二:
//判断整数位数
#include <stdio.h>
int main()
{
int num=7003500;
int cnt=0;
int bit; //存储每一位数
int ret=0; //得到的逆序数
while(num){
bit=num%10;
ret=ret*10+bit;//将得到的每一位数*10+bit即可逐次逆置
num/=10; //等价于num=num/10
cnt++; //cnt==count,计数的意思
}
printf("\n这个数是%d位",cnt);
printf("\n逆序数是%d",ret);
return 0;
}
这个数是7位
逆序数是53007
--------------------------------
Process exited after 0.3103 seconds with return value 0
请按任意键继续. . .
但这种方法不会显示靠最右边的零。