求整数位数,正序逆序输出,总计1的个数
程序员文章站
2022-03-01 23:21:09
...
//求任意一个整数的位数
#include<stdio.h>
int Number(int n)
{
if(n == 0)
{
return 1;
}
int i=0;
while(n!=0)
{
i++;
n/=10;
}
return i;
}
//正序输出整数
//设置一个计数器count,让其等于位数函数中的返回值n
//如1234:将power设置为1000(i小于(4-1),i可以为0,1,2,3,将power进行循环乘以10,得到1000;注:i为0时,power为1。
//此时再将1234除以1000得到商为1,将n重新赋值为余数234,power除以10得到100;
//再将234除以100得到商为2,将n重新赋值为余数34,power除以10得到10;
//再将34除以10得到商为3,将n重新赋值为余数4,power除以10得到1;
//再将4除以1得到商为4,将n重新赋值为余数0.
//将上述商依次不换行输出,即为正序输出1234
//设置i为计数器进行循环,i<4,即i为0,1,2,3,共循环四次;注:如i<=count,循环五次,结果出错
void PrintOrder(int n)
{
int count = Number(n);
int power = 1;
for(int i=0;i < count-1;i++)
{
power *= 10;
}
do
{
printf("%d",n/power);
n%=power;
power/=10;
}while(n!=0);
printf("\n");
}
//计算一个整数中出现1的个数
//将1234除10取余,若得到的余数为1,则将计时器count加一;将n重新赋值为n除以10的商,重复以上操作,直到n为0时结束,返回计数器的值即为所求
int CountOne(int n)
{
int count = 0;//计数器
while(n != 0)
{
if(n%10 == 1)
{
count++;
}
n/=10;
}
return count;
}
//逆序输出该整数
//如1234:将1234除以10得到商123,余数4;再将123除以10得到商12,余数3;再将12除以10得到商1,余数2;再将1除以10得到商0,余数1;
//将上述余数依次不换行输出,即为逆序输出。结束条件为n等于0时结束。
int PrintReverse(int n)
{
do
{
printf("%d",n%10);
n/=10;
}while(n!=0);
printf("\n");//疑问:此处为什么使用换行,且换行输出值的下一行输出0
return n;
}
上一篇: vector insert用法 C++
下一篇: HDU1027【全排列
推荐阅读
-
已知有n个互不相等的整数,求它们两两组合的所有结果。输出时每行一个组合,按列表下标的字典 序排序。列表下标小的数在前,列表下标大的数在后。 输入 第1行:整数的个数n 接下来n行:n个互不相同的整
-
输出一个数的位数,逆序输出,正序输出.(计数器算法)
-
c语言输入一个数,分别正序、逆序输出他的各个位数
-
判断一个整数是几位数,并正序输出和逆序输出它的每一位数。
-
一、输入一个数(这里用函数实现) 1.输出它是几位数 2.逆序输出 3.正序输出
-
任给一个整数(1)输出它是几位数(2)正序输出各位数字(3)逆序输出各位数字
-
“判断整数n的位数” “正序输出n” “逆序输出n” 如何编程
-
输出整数位数,并正序,逆序输出各个位上的值
-
求整数位数,正序逆序输出,总计1的个数
-
C语言递归算法系列_循环实现逆序和正序输出一个整数的每位数 (2)