C 练习实例29

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

题目分析:

假设一个九位数12346789,我们想得到它是几位数,可以直接循环除以10,除到商为零位置。可以想象为每一轮循环抹掉个位数。

判断位数的代码:

//判断整数位数
#include 
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 
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 
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
请按任意键继续. . .

但这种方法不会显示靠最右边的零。

你可能感兴趣的:(c语言经典100题,c语言)