C语言 正序分解整数

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值