分离整数的各个数位(0-100000000)

描述:

给定一个整数,要求从个位开始分离出它的每一位数字。


输入:

输入一个整数,整数在1到100000000之间。

输出:

从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。


样例输入:

12345

样例输出:

5 4 3 2 1

C语言实现:

#include<stdio.h>

int main()
{
       int n,x,y;
       scanf("%d", &n);
       x=n;
       int i;
       for(i=1;i<=10;i++)
       {
           if(i==1)   //等于1时直接%10得个位数字
           {
                y=x%10;
                printf("%d ",y);
           }
           if(x<10)     //如果x值只有一位则跳出循环
            break;
        y=(x/10)%10;      //比如:1234,1234/10=123,123%10=3,依次循环
        printf("%d ",y);
        x=x/10;            //下一次所要操作的值,剔除已经求出的“个位”
       }
       return 0;

}

结果:

举一反三:

 前面所说的只是倒序输出,现在看一下顺序输出,主要用数组实现。

#include<stdio.h>

int main()
{
       int n,x,y[10];
       scanf("%d", &n);
       x=n;
       int i,sum=0;       //sum用于确定所输入个数位数
       for(i=0;i<10;i++)
       {
           if(i==0)
           {
                y[0]=x%10;          //如果是第一位,则将个位存在数组
                sum++;
           }
           if(x<10)                  //如果x<10则跳出循环
            break;
            if(i>0)
            {
                y[i]=(x/10)%10;           与上面相同的算法
                x=x/10;
                sum++;
            }

       }
       int k=sum;
       for(i=0;i<k;i++)                //循环所属数字的位数次
       {
           printf("%d ",y[sum-1]);          //从后向前输出
           sum--;

       }

       return 0;

}

结果:

顺序输出一开始用循环i--输出,结果输出不了,用数组输出一定控制好位数,不然会有数据溢出。

猜你喜欢

转载自blog.csdn.net/zxdspaopao/article/details/84637751