对数字的处理

一、输出整数的位数

运用“去尾法”获取整数n的位数。“去尾法”是将整数n/10后重新赋值给n,将n的小数部分去掉(利用整数除以整数)。

每进行一次赋值,计数器+1,直到整数n被赋值为0后,计数器停止计数,此时计数器的数字为整数n的位数。

考虑当整数为0时,运用do-while循环语句可以进入循环。

源代码:

int GetFigures(int n)  
{
	int count=0;      //计数器

	do
	{
		n=n/10;   //“去尾法”,对n进行赋值
		count++;  //去掉一位,计数器+1
	}while(n!=0);      //当n被赋值为0时停止循环

	return count;  
}  

二、逆序输出数字

运用整数n%10可以得到余数,然后运用“去尾法”将数字缩小10倍,直到n==0时,退出循环。

源代码:

void PrintReverse(int n)  
{
	if(n<0)       //对负整数的处理,当整数n小于0时,输出一个“-”号
	{
		printf("-");
		n=-n;
	}

	do
	{
		printf("%d  ",n%10);  //输出整数的各位
		n=n/10;           //去尾法”,对n进行赋值
	}while(n!=0);        //当n被赋值为0时停止循环

	printf("\n");  
}

三、顺序输出数字

顺序输出数字需要从高位开始进行计数,所以就需要获得这个数字的位数,我们可以调用GetFigures(int n)函数。

最高位数字=(整数n)除以(权重),而权重就是10的位数-1次方。

再利用n%(10的n的位数减一次方)去掉n的最高位,如此进行循环,直到n==0时退出循环。

源代码:

void PrintOrder(int n)
{
	int tmp;
	tmp = GetFigures(n);      //调用GetFigures函数
	int power=1;

	if(n<0)           //当整数n为负数时,输出一个“-”号
	{
		printf("-");
		n=-n;
	}                

	for(int i=0;i<tmp-1;i++)   //权重:10的n的位数减一次方
	{
		power *= 10;
	}             

	do
	{
		printf("%d  ",n/power);      //打印最高位数
		n = n%power;           //去掉最高位
		power /= 10;			//一次循环结束,权重降低
	}while(n!=0);                 //当n被赋值为0时停止循环
	
	printf("\n");
} 

猜你喜欢

转载自blog.csdn.net/hdong99/article/details/79846479