c语言满足条件的四位数

按从小到大的顺序输入四个互不相同的一位数,能组成多少互不相同且无重复数字的四位数?输出这些数字


#include "stdio.h"
void main()
{
int i,j,k,l,sum=0;
int t[4]={0};
scanf("%d %d %d %d",&t[0],&t[1],&t[2],&t[3]);//输入四个一位数,不要重复
    for(i=0;i<4;i++)//控制每位的数字是输入的四个数字中的一个,且各不相同
        for(j=0;j<4;j++)
            for(k=0;k<4;k++)
              for(l=0;l<4;l++)
                if(i!=j&&i!=k&&i!=l&&j!=k&&j!=l&&k!=l)
                {
                    printf("%d\n",t[i]*100+t[j]*10+t[k]);//打印
                    sum++;
                }
                printf("总共有%d种组合\n",sum);
}

img

#include<stdio.h>
int main()
{
    int i,j=0,k,h;
    int a,b,c,d;
    int t[4];
    scanf("%d",&t[0]);
    scanf("%d",&t[1]);
    scanf("%d",&t[2]);
    scanf("%d",&t[3]);
    int f=0;
    int s[10000];

    int count=0;
    int n;
    for(i=0; i<4; i++)
    {
        a=t[i]*1000;
        for(j=0; j<4; j++)
        {
            b=t[j]*100;
            for(k=0; k<4; k++)
            {
                c=t[k]*10;
                for(h=0; h<4; h++)
                {
                    d=t[h];
                    for(n=9999; n>999; n--)
                    {
                        if(n==a+b+c+d)
                        {
                            if(i!=j&&i!=k&&i!=h&&j!=k&&j!=h&&k!=h)
                            {
                                //printf("%d\n",n);
                                s[f]=n;
                                f++;
                                count++;
                            }
                        }
                    }
                }
            }
        }
    }
    
    for(h=0; h<f; h++)
    {
        printf("%d\n",s[h]);
    }

    //printf("count:%d\n",count);
    return 0;
}



#include<stdio.h>
#include<stdlib.h>
/*
按从小到大的顺序输入四个互不相同的一位数,
能组成多少互不相同且无重复数字的四位数?输出这些数字
*/
int main(void) {
    int a[4];
    scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);
    if (a[0]==0)  //最高位不能为0,所以当最小值为0时需要特殊处理
    {
        printf("可组成的四位数有%d个\n",18);

        for (int i = 1; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (j==i)
                {
                    continue;
                }
                for (int k = 0; k < 4; k++)
                {
                    if (j == k||k == i)
                    {
                        continue;
                    }
                    for (int s = 0; s < 4; s++)
                    {
                        if (s == k || s == i || s == j)
                        {
                            continue;
                        }
                        printf("%d ",a[i]*1000+a[j]*100+a[k]*10+a[s]);
                    }
                }
            }
        }
    }
    else
    {
        printf("可组成的四位数有%d个\n", 24);
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (j == i)
                {
                    continue;
                }
                for (int k = 0; k < 4; k++)
                {
                    if (j == k || k == i)
                    {
                        continue;
                    }
                    for (int s = 0; s < 4; s++)
                    {
                        if (s == k || s == i || s == j)
                        {
                            continue;
                        }
                        printf("%d ", a[i] * 1000 + a[j] * 100 + a[k] * 10 + a[s]);
                    }
                }
            }
        }
    }
    return 0;
}