c语言怎么任意输入4个数,然后将所有不同顺序的这4个数输出

如题所述

采用递归的方法解决最好。

再提供一种初学者可以使用的方法,这个方法比较直接,容易理解:

#include <stdio.h>
void main()
{
int i,j,k,m,a[4];
for(i=0;i<4;i++)
scanf("%d",&a[i]);
printf("\n所有排列:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
for(m=0;m<4;m++)
if(i!=j&&i!=k&&i!=m&&j!=k&&j!=m&&k!=m)
printf("%d %d %d %d\n",a[i],a[j],a[k],a[m]);
}


运行示例:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-11

全排列的题。

用递归就好。代码如下:

#include <stdio.h>
#include <stdlib.h>

void func(int *a, int *b, int n, int c)
{
    if(n == c)
    {
        int *t = (int *)malloc(sizeof(int) * n);
        int i;
        for(i = 0; i<n; i ++)
        {
            t[b[i]] = a[i];
        }
        for(i = 0; i<n; i ++)
            printf("%d%c", t[i], i!=n-1?' ':'\n');
        return ;
    }
    int i;
    for(i = 0; i < n; i ++)
    {
        if(b[i] == -1)
        {
            b[i] = c;
            func(a,b,n,c+1);
            b[i] = -1;
        }
    }
}
int main()
{
    int a[4];
    int b[4] = {-1,-1,-1,-1};
    int i;
    for(i = 0; i < 4; i ++)
        scanf("%d",&a[i]);
    func(a,b,4,0);
    return 0;
}

本回答被网友采纳
第2个回答  2017-09-11
百度 4个数 全排列

~
~
~
~

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网