1061: 顺序输出各位数字
题目描述
输入一个不大于10的9次方的正整数,从高位开始逐位分割并输出各位数字。
输入
输入一个正整数n,n是int型数据
输出
依次输出各位上的数字,每一个数字后面有一个空格,输出占一行。例如,输入 12345 ,输出 1 2 3 4 5
样例输入
12345
样例输出
1 2 3 4 5
提示
注意整数运算避免使用double类型的函数如pow()。
本题可先用一个循环计算出最高位的位权h,然后再用一个循环,循环内容为: 输出最高位(n/h)、扔掉最高位(n = n%h)、降低最高位位权(h = h/10),直到位权h为0。
#include <stdio.h>
#include <math.h>
int main() {
int i, n, x, b, c; //定义:n为循环次数,x为所输入的未知数,b为存储未知数的中间变量
scanf("%d", &x);
b = x; //先将未知数赋值给b,作为备用
n = log10(x) + 1; //计算循环次数
c = (int)pow(10, n - 1);
for (i = 1; i <= n; i++) {
x = x / c; //利用除数计算出最高位,因为现在是int类型,会自动保存为整数
printf("%d ", x); //输出最高位
b = b % c; //利用余数丢弃最高位
x = b; //将剩下的位数重新传给未知数变量x,为下一次循环做准备
c = c / 10;
}
return 0;
}
此题和上一题的思路要反过来。