欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言 正序分解整数

程序员文章站 2022-03-22 16:34:14
...

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;
}
相关标签: C语言 c语言