给一个正整数,要求:
1.求出它是几位数;
2.分别输出每一位数字;
3.按逆序输出各位数字。例如原数为321,应输出为123。
用程序实现这个功能.
1.统计位数
如果给我们一个比较短的数,我们很容易知道是几位数,长的数字我们会一个一个数,数到最后一个数,就可以得到
它是几位数了。对于计算机而言,也可以这样获得位数,只不过数完一个数要把它丢弃。直到这个数为0时,就得到它的位数了。
int Getfigures(int n) //得到一个数有几位
{
int count=0; //定义一个能统计位数的量
do //用do...while判断
{
count++;
n=n/10;
}while(n!=0);
printf("%d",count);
return count;
}
2.分别输出每一位数
例如,取数字1234我们要输出1 2 3 4,是先得到最高位,在丢弃最高位,但是得到最高位和丢弃最高位要稍微麻烦一点,比如1234得到1,那就需要1234除以1000,十的三次方,34得到3就需要除以10,十的一次方,所以可以看出得到最高位的方法就是先得到它的位数,然后用这个数除以10的 位数减一 次方,丢弃这个最高位就是对10的位数减一次方取绝对值, 我们可以通过power函数,求出10的几次方。此过程中我们可以用循环求出要被除和取余的数。
过程详解可为:
1234/10-->123 123/10-->12 12/10-->1
234/10-->23 23/10-->2
34/10-->3
4
void PrintOrderf(int n) //顺序输出数字,非常重要{
int power=1;
int count =0;//GetFigures(n);
for(int i=0;i<count-1;i++)//用循环语句for语句来得到最高指数-1
{
power *= 10;
}
do
{
printf("%d ",n/power);//得到第一位
n %= power ; //丢弃第一位
power /= 10;
}while(n!=0);
printf("\n");
}
3.逆序输出
顺序输出是丢弃个位,而逆序输出则是得到个位。若要
1234逆序输出 4 3 2 1,我们要先输出4,然后丢弃4,剩下123,再输出3,丢弃3,这个过程其实就是先得到个位数,然后丢弃个位数,再从新的数里面得到新的个位数,再丢弃新的个位数,直到这个数变成0,得到个位很简单,只需要%10就可以,丢弃个位也很简单,只需要/10就可以了。
void PrintReverse(int n) //逆序输出
{
while(n!=0) //只要n不是0
{
printf("%d",n%10);
n=n/10;
}
return 0;
}
while(n!=0) //只要n不是0
{
printf("%d",n%10);
n=n/10;
}
return 0;
}
4.在测试的时候可以定义多组数组来进行测试
int main()
{
printf("%d\n",Getfigures(0));//判断为0的时候是否也能输出
printf("%d\n",Getfigures(12345);//正常的正整数
printf("%d\n",Getfigures(-1234);//当数字为负的时候
}