描述:
给定一个整数,要求从个位开始分离出它的每一位数字。
输入:
输入一个整数,整数在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--输出,结果输出不了,用数组输出一定控制好位数,不然会有数据溢出。