//求任意一个整数的位数
#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;
}