输出整数各位数字
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。
输入格式:
输入在一行中给出一个长整型范围内的非负整数。
输出格式:
从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。
输入样例:
123456 |
输出样例:
1 2 3 4 5 6 |
方法一:
将该整数看成若干个数字字符组成的字符串,将字符串中的所有数字字符逐个输出。
# include <stdio.h>
int main()
{
char c;
do
{
scanf("%c", &c);
if (!(c >= '0' && c <= '9')) //利用最后输入的回车键也会被看做字符被scanf读取的特点跳出循环。
break;
printf("%c ", c);
} while (c >= '0' && c <= '9') ;
return 0;
}
方法二:
引用数组,先从最低位开始取余,最后将数组倒着输出。
# include <stdio.h>
int main()
{
int i;
int j;
int a[50] = {
0};
int n;
scanf(" %d", &n);
if (0 == n)
{
printf("0 \n");
return 0;
}
for (i=1; n; ++i)
{
a[i] = n % 10;
n /= 10;
}
--i;
while (i)
{
printf("%d ", a[i]);
--i;
}
return 0;
}
方法三:
先测出该整数的总位数,再从最高位开始取余。
# include <stdio.h>
int main()
{
int temp;
int pow = 1;
int i = 1;
int n;
scanf(" %d", &n);
temp = n;
while (temp/10)
{
temp /= 10;
pow *= 10;
++i;
}
while (i)
{
printf("%d ", n / pow);
n %= pow;
pow /= 10;
--i;
}
printf("\n");
return 0;
}