标题##求出一个多位数的位数并依次顺序输出和倒序输出##
1.求位数
主要思想是:依次丢掉个位,然后计数器加一。
丢掉个位的办法就是用它被10整除,因为定义的数字类型是int类型,而int 类型整除会不计小数部分,从而丢掉各位数;
丢掉一个个位数,原数字的位数依次向右移;而在丢掉个位数的同时计数器加一;直到最后一个数被10整除结果为零为止; (如果原数字等于0,则直接输出1)
函数体源代码:
int GetWei(int n)
{
if(n0)
return 1;
int count=0;
while(n!=0)
{
n/=10; //丢弃个位
count++
} return count;
}
例如 : 12345
整除第一次丢掉5,count加一;得到整数=1234;
整除丢掉4,得到整数=13;count加一;
整数丢掉3,得到整数=12;count加一;
整数丢掉2,得到整数=1;count加一;
整数丢掉1,结果为0;count加一;
跳出循环,返回count=5.
2.顺序输出
主要思想是:依次得到最高位然后丢掉最高位。
先调用GetWei函数得到输入整数的位数,然后用做高位的单位值整除该整数,然后再丢掉最高位(最高位的丢弃和最低位不同,最高位是用%求余);最后依次输出得到的最高位。 (如果原数字等于0,则直接输出0)
函数体源代码:
void Order(int n)
{
if(n0)
printf(“0”);
int leg = GetWei(n) //得到n的位数 int N = pow(10.0,leg-1) //通过位数得到最高位的单位值
while(n!=0)
{
printf("%d “,n/N); //得到最高位 n%=N; //得到剩下n的位数 N/=10; //得到剩下n的最高位的值
} return;
}
例如:12345
先调用GetWei函数得到整数的位数leg为5; 然后计算得N等于10000;
进入循环体:
先输出最高位1,然后丢掉1,剩下2345; 然后输出最高位2,然后丢掉2,剩下345; 依次输出输出 1 2 3 4 5.
3.逆序输出
主要思想是:依次得到最低位然后丢掉最低位。(和顺序输出原理基本相同,不同点是丢带最低位用到的数值是已知的) (如果原数字等于0,则直接输出0)
函数体源代码:
void Reverse(int n)
{
if(n==0)
printf(“0”);
while(n!=0)
{
printf(”%d ",n%10); //得到最低位 n/=10; //丢掉最低位
}
}
例如:12345
先用10整除得到最低位5输出,然后丢掉5,原数字剩 1234;
再用10整除得到最低位4输出,然后丢掉4,原数字剩 123;
直到n=0,跳出循环; 依次输出 5 4 3 2 1
06-08
3227
03-14
1074
09-22