统计一个整型数字位数,逆序、正序输出
程序员文章站
2022-03-22 21:45:11
...
题目要求:输入一个n位的整型数字,分别输出其位数、顺序输出、逆序输出。
一、 求位数
- 基本思路:每次丢弃数字的个位数字,同时定义一个计算器count,初始化化为零来记录个位数字丢弃的次数,每丢弃一次,计数器加一。其中,丢弃的次数即计算器最终的值就是这个数字的位数。例如:12345,需要丢弃五次,计数器count最终值为5,即12345的位数为5。
- 具体操作见下表:(对数字12345举例)
数字n | 保留丢弃后数字操作 | 丢弃后数字 | count |
---|---|---|---|
12345 | 12345/10 | 1234 | 1 |
1234 | 1234/10 | 123 | 2 |
123 | 123/10 | 12 | 3 |
12 | 12/10 | 1 | 4 |
1 | 1/10 | 0 | 5 |
操作的总结 | count++ | n/10 | count++ |
由上图可知:求一个数的位数可利用循环,将数字n/10便可丢弃最后一位,并且将n/10赋给n,带入下一次循环,同时count++。循环结束条件为当n等于0时。此时应当考虑当输入n为0的特殊情况,此情况有两种解决办法:
i、用if语句进行判断,当n等于0时,输出位数为1。
ii、用do while循环,此循环可以保证至少执行一次。
二、 逆序输出
- 基本思路:将第一问中丢弃的个位数字在丢弃前输出一下即可。例如:对于整数12345,每次将个位数字丢弃前打印一下,便可得到逆序输出序列“5、4、3、2、1”。
- 具体操作见下表:(对数字12345举例)
数字n | 丢弃个位操作 | 丢弃的个位 | 保留丢弃后数字操作 | 丢弃后数n |
---|---|---|---|---|
12345 | 12345%10 | 5 | 12345/10 | 1234 |
1234 | 1234%10 | 4 | 1234/10 | 123 |
123 | 123%10 | 3 | 123/10 | 12 |
12 | 12%10 | 2 | 12/10 | 1 |
1 | 1%10 | 1 | 1/10 | 0 |
操作总结 | n%10 | printf | n/10 | n=n/10 |
由上图可知:首先利用n%10可得到整数个位数字,接着将其打印,最后利用n/10得到丢弃个位数字后的n,并将其赋给n,带入下一次循环。循环结束条件为当n等于0时。基本思路与求位数相似,只是多了利用n%10得到个位数字,并将其打印的操作。
三、 正序输出
1、首先对于数字12345举例,寻找规律。
数字n | 丢弃第一位操作 | 第一位数字 | 保留丢弃后数字操作 | 丢弃后数n | pow |
---|---|---|---|---|---|
12345 | 12345/10000 | 1 | 12345%10000 | 2345 | 10000/10 |
2345 | 2345/1000 | 2 | 1234%1000 | 345 | 1000/10 |
345 | 345/100 | 3 | 123%100 | 45 | 100/10 |
45 | 45/10 | 4 | 12%10 | 5 | 10/10 |
5 | 5/1 | 5 | 5%1 | 0 | |
操作总结 | n/pow | printf | n%pow | n=n/10 | pow=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;
}
推荐阅读
-
统计一个整数数字位数,逆序、正序输出
-
统计一个整型数字位数,逆序、正序输出
-
输出一个数的位数,逆序输出,正序输出.(计数器算法)
-
c语言输入一个数,分别正序、逆序输出他的各个位数
-
统计十进制数n的位数、正序输出和逆序输出十进制数字n
-
python:输入一个整数正序各个输出,并判断输出位数
-
判断一个整数是几位数,并正序输出和逆序输出它的每一位数。
-
输入一个整数n,输出位数、顺序输出每位数字,逆序输出
-
给出一个不多于五位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出每一位数字,例如:原数321,应输出123
-
c语言 给一个整数,要求 1.求它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字