一串数的统计位数和顺序,逆序输出

给一个正整数,要求:

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;  
 }   


4.在测试的时候可以定义多组数组来进行测试

int main()

{

printf("%d\n",Getfigures(0));//判断为0的时候是否也能输出
printf("%d\n",Getfigures(12345);//正常的正整数
printf("%d\n",Getfigures(-1234);//当数字为负的时候

}

猜你喜欢

转载自blog.csdn.net/qq_41321905/article/details/79769189