统计一个整型数字位数,逆序、正序输出

题目要求:输入一个n位的整型数字,分别输出其位数、顺序输出、逆序输出。

一、 求位数

  1. 基本思路:每次丢弃数字的个位数字,同时定义一个计算器count,初始化化为零来记录个位数字丢弃的次数,每丢弃一次,计数器加一。其中,丢弃的次数即计算器最终的值就是这个数字的位数。例如:12345,需要丢弃五次,计数器count最终值为5,即12345的位数为5。
  2. 具体操作见下表:(对数字12345举例)
数字n保留丢弃后数字操作丢弃后数字count
1234512345/1012341
12341234/101232
123123/10123
1212/1014
11/1005
操作的总结count++n/10count++

由上图可知:求一个数的位数可利用循环,将数字n/10便可丢弃最后一位,并且将n/10赋给n,带入下一次循环,同时count++。循环结束条件为当n等于0时。此时应当考虑当输入n为0的特殊情况,此情况有两种解决办法:
i、用if语句进行判断,当n等于0时,输出位数为1。
ii、用do while循环,此循环可以保证至少执行一次。

二、 逆序输出

  1. 基本思路:将第一问中丢弃的个位数字在丢弃前输出一下即可。例如:对于整数12345,每次将个位数字丢弃前打印一下,便可得到逆序输出序列“5、4、3、2、1”。
  2. 具体操作见下表:(对数字12345举例)
数字n丢弃个位操作丢弃的个位保留丢弃后数字操作丢弃后数n
1234512345%10512345/101234
12341234%1041234/10123
123123%103123/1012
1212%10212/101
11%1011/100
操作总结n%10printfn/10n=n/10

由上图可知:首先利用n%10可得到整数个位数字,接着将其打印,最后利用n/10得到丢弃个位数字后的n,并将其赋给n,带入下一次循环。循环结束条件为当n等于0时。基本思路与求位数相似,只是多了利用n%10得到个位数字,并将其打印的操作。

三、 正序输出
1、首先对于数字12345举例,寻找规律。

数字n丢弃第一位操作第一位数字保留丢弃后数字操作丢弃后数npow
1234512345/10000112345%10000234510000/10
23452345/100021234%10003451000/10
345345/1003123%10045100/10
4545/10412%10510/10
55/155%10
操作总结n/powprintfn%pown=n/10pow=pow/10

由上图可知:首先利用n/( 10^(位数-1) )可得到整数的第一个数字,接着将其打印,最后利用n%( 10^(位数-1) )得到丢弃第一位数字后的n值,并将其赋给n,带入下一次循环。循环结束条件为当n等于0时。其中的位数的值,可以通过调用求位数的函数。
四、 代码实现

int Count(int n)
{
	int tmp = 0;
	do
	{
		tmp++;
		n /=10;
	}while(n != 0)

	return tmp;
}


void PrintReverse(int n)//逆序输出
{
	while(n != 0)
	{
		printf("%d ",n%10);
		n /= 10;
	}
	printf("\n");
}

void PrintOrder(int n)
{
	int c = Count(n);

	int power = 1;
	for(int i=0;i<c-1;i++)
	{
		power *= 10;
	}

	while(n != 0)
	{
		printf("%d ",n/power);
		n %= power;
		power /= 10;
	}
	printf("\n");
}

int main()
{
	PrintOrder(123456789);
	PrintReverse(123456789);
	printf("%d\n",Count(123456789));
	printf("%d\n",Count(1));
	printf("%d\n",Count(0))*/;

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值