C语言 正序分解整数
- 输入一个非负整数 , 正序输出它的每一位数字
- 输入 13526
- 输出 1 3 5 2 6
分析思路:
需要正序输出每一位数字 ,我们可以先把数逆序一遍,再逆序输出每一位数字。
这种方法看上去更加简单 ,但是当我们验证10 的倍数(比如 700)的时候,
输出的是 7 而不是 7 0 0。
# include<stdio.h>
int main()
{
int num,num1,a;
int ret = 0;
scanf("%d", &num);
while (num > 0) {
num1 = num % 10 ;
num /= 10;
ret = ret * 10 + num1 ; // ret 是逆过来的整数。
}
while (ret > 0) {
a = ret % 10;
ret /= 10;
printf("%d",a);
if (ret >= 1) {
printf(" ");
}
}
return 0;
}
因此 ,加以改进。
分析思路: 输入数 352, 这个数除以 100得到 3,再对100 取余得到52 ,52 再除以 10得到5 ,再对10 取余得到2 ,2再除以1得到2,对1取余得到 0。当余数为 0 时,程序结束。
输入其他的数 ,也是同样的道理。
# include<stdio.h>
int main()
{
int num, num1;
int first = 1;
scanf("%d", &num);
int t = num;
while (num >= 10){
num /= 10;
first *= 10 ;
} // first 是 根据输入的数得到的10的倍数。
while (first >= 1) {
num1 = t / first;
t %= first;
first /= 10;
printf("%d",num1);
if (first >= 1) {
printf(" ");
} // 这个if是防止输出的最后一位还存有空格。
}
return 0;
}