输出一个数的位数,逆序输出,正序输出.(计数器算法)
程序员文章站
2022-03-22 10:07:03
...
输出一个数的位数,逆序输出,正序输出.(计数器算法)
数的位数:
运用丢的思想,就好比丢一个数字,计一个数字。
从前往后丢,用求余;从后往前丢,用整除
eg:12345 从后往前开始丢数字
丢 | |
---|---|
12345 | 5 |
1234 | 4 |
123 | 3 |
12 | 2 |
1 | 1 |
//12345先丢掉5计数为1,剩下的数1234再丢掉最后一位4计数加一为2。。。。。。
直到数字全丢掉,计数结束,返回计数值。
#include<stdio.h>
int Count(long long n)
{
if(n==0)//判断输入的数是否为零;
{ return 1; }//为0则输出1;0是一位数;
int m=0;
while(n!=0)
{
m++;//计数累加;
n/=10;//丢掉一个数;
}
return m;
}
int main()
{
printf("%d\n",Count(-12345));
printf("%d\n",Count(5984546));
printf("%d\n",Count(0));
return 0;
}
逆序输出
和计数器算法原理一样,只不过就把丢掉的数字打印出来.(从后往前丢)
#include<stdio.h>
#void PrintfReverse(long long n)
{
if(n==0)
{
printf("%d",0);//0逆序输出就是0;
}
if(n<0)
{
printf("-");//先打印一个负号;
n=-n;//取它的绝对值再进入下面循环;
}
while(n!=0)
{
printf("%d",n%10);//得到最后一位数并打印出来;
n/=10;//(n=n/10;)把n的值整除10,赋值给新n;
}
printf("\n")//循环完逆序完,换行;
}
int main()
{
PrintfReverse(-12345);
PrintfReverse(0);
PrintfReverse(12345);
return 0;
}
顺序输出
计数器算法,从头开始丢并输出.(用求余)
eg:
|输入12345(5位数) | 让它整除10000(5-1)^10) | 得到并输出1|//再丢掉1得到剩下数字(用求余方法丢掉)
|得到2345(4位数) | 整除1000(4-1)^10 |得到并输出2|
| 345 | 100 | 3|
| 45 | 10 | 4|
| 5 | 1 | 5 |
//每次整除的数字都是(这个数的位数-1)的10次方,所以要调用位数Count()函数
//顺序输出,得到高位,丢掉高位
#include<stdio.h>
#include<math.h>//要用到pow()函数
void PrintfOrder(long long n)
{
if(n==0)
{
printf("%d",0);
}//0顺序输出就是0;
if(n<0)
{
printf("-");
n=-n;
}
int tmp=0;
int power=0;
while(n!=0)
{ tmp=Count(n);//Count()函数在文章前面,用的时候调用就行;
power=pow(10.0,tmp-1);//pow()是double类型,
printf("%d ",n/power);
n%=power;//将n求余,赋值给新n;
}
printf("\n");
}
int main()
{
PrintfOrder(-12345);
PrintfOrder(0);
PrintfOrder(12345);
return 0;
}
上一篇: Vue的学习笔记-组件开发(初识)
下一篇: 三分钟搞懂CSS定位
推荐阅读
-
python实现将一个数组逆序输出的方法
-
C++之将一个数的【各个位数】分别输出, 这个数可以是个位数、十位数、百位数、千位数、万位数.....
-
Java 输出4位数中能被6整除不能被12整除的数,打印时,两个数字一行,三个数字一行交替输出
-
定义两个一维数组,每个数组随便填充10个元素。输出的数组是两个数组的并集,并且从小到大排好序,不重复。
-
[算法题(二)]已知一个数组(升序且不重复,如 1, 2, 3, 5, 7, 8, 9),要求输出:1 ~ 3、5,7 ~ 9。 即:连续的区间之间不输出中间的数字。
-
在命令行任意输入一组数字(0~9),然后统计这组数据中每个数字出现的个数,然后将统计个数逆序输出
-
python实现逆序输出一个数字的示例讲解
-
python实现将一个数组逆序输出的方法
-
蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。 输入一个正整数 n(<=10000) 输出 m 行(n有m
-
Python实现按照指定要求逆序输出一个数字的方法