欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给出一个不多于五位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出每一位数字,例如:原数321,应输出123

程序员文章站 2022-03-22 08:34:03
...

给出一个不多于五位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出每一位数字,例如:原数321,应输出123.

大家先来看第一个问题,求出数字是几位数。这里要用到的很常用的一个办法就是用这个数字对10求余,例如:321%10=1;由此可以得出各位数字,然后输出。接着,我们将得出的个位数字去掉,这里要用10整除这个数字,321/10=32;再用求余方法便可得到十位数,以此类推;每做一次计算便将初始为0的变量加1,便可求出数字的位数。
代码如下:

int Digit(int n)
{
int tmp;
int i=0;;
while(n!=0)
{
	tmp=n%10;
	n/=10;
	i++;
}
return i;
}

如果要将数字按照正序输出,这个看似麻烦,但大家可以想一下,假如我们要输出1234中的1,是不是要使得1234/1000=1;然后我们把1丢掉,1234%1000=234;那么如何得到这个1000,这里要用到指数函数pow();
代码如下:

void Order(int n)
{
int q=pow(10,i-1);
while(n!=0)
{
	tmp=n/q;
	n%=q;
	q/=10;
	
}
return tmp;
}

若是按逆序输出,直接按第一问的方法即可。
全部代码如下,仅供参考:

#include<stdio.h>
#include<math.h>
int Count(long long n)
{
	int tmp=0;
	while(n!=0)
	{
		tmp++;
		n=n/10;
	}
	return tmp;
}
void PrintReverse(long long n)
{
	int i;
	while(n!=0)
	{
		i=n%10;
		printf("%d\n",i);
		n=n/10;
	}
}
void PrintOrder(long long n)
{
	int tmp=Count(n);
	double power=pow(10*1.0,tmp-1);
	while(n!=0)
	{
		printf("%d\n",n/(int)power);
		n%=(int)power;
		power/=10;
	}
}
int main()
{
	int tmp=Count(23456);
	printf("%d\n",tmp);
	PrintOrder(23456);
	PrintReverse(23456);
	return 0;
}