C语言逻辑问题C语言练习

107.任意给定一个不超过9位的整数,将其高低位翻转,例如给定12345变成54321,12320变成2321。
108.有1、2、3、4个数字,输出所有由这4个数字组成的互不相同且无重复数字的三位数?
109.对一个整数进行质因数分解, 例如60可以分解为60 = 223*5。
110.计算N的阶乘后0的个数。

供参考:

//107.任意给定一个不超过9位的整数,将其高低位翻转,例如给定12345变成54321,12320变成2321。
#include<stdio.h>
int main()
{
    int n,m=0;
    scanf("%d",&n);
    while(n){
          m = m*10 + n%10;
          n /=10;
    }
    printf("%d\n",m);
    
    return 0;
}

//108 . 有1、2、3、4个数字,输出所有由这4个数字组成的互不相同且无重复数字的三位数?
#include<stdio.h>
int main()
{
    int i,j,k;
    for(i=1;i<5;i++)
    {
        for(j=1;j<5;j++)
        {
            for(k=1;k<5;k++)
            {
                if(i!=k&&i!=j&&j!=k)
                {
                    //printf("%d%d%d\n",i,j,k);
                     printf("%d\n",i*100 + j*10 + k);
                }
            }
        }
    }
    
    return 0;
}


//109.对一个整数进行质因数分解, 例如60可以分解为60 = 2*2*3*5。
#include<stdio.h>
int main()
{
    int m=0,n=2;
    scanf("%d",&m);
    printf("%d=",m);
    while(m>=n){
          if(m%n==0){
             printf("%d",n);
             if(m!=n)
                printf("*");
             else
                printf("\n");
             m=m/n;
          }else
             ++n;
    }
    
    return 0;
}

//110.计算N的阶乘后0的个数。参考:

不建议一个问答多个问题
回答第一个:

int main()
{
      int n,i=0;
      int a[9] = {0};
      scanf("%d",&n);
      while(n>0)
      {
            if(i==0 && n%10==0)
                n = n/10;
            else
            {
                a[i++] = n%10;
                n = n/10;
            } 
      }
      for(;i>=0;i--)
      {
           if(a[i] > 0)
              printf("%d",a[i]);
      }
      return 0;
}