题目请教!各位高人指点一二……
在0-100 之间随机产生6 个不同的数填入下面表中,要使得每一列右边的数字比左边的数字大,每一行下面的数字比上面的数字大(其实就是2行3列的输出)要求输出的结果是:the number is:
0 21 29 32 33 89//随机数
NO.1:
0 21 29
32 33 89
NO.2:
0 21 32
29 33 89
NO.3:
0 21 33
29 32 89
NO.4:
0 29 32
21 33 89
NO.5:
程序代码:我的程序代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void fenzu(int array[6])// 分组函数把产生的随机数分给数组
{
int i;
srand((int) time(0));
for(i=0;i<6;i++)
{ array[i]=rand()%101;
printf("%d ",array[i]);}
}
void sort(int c[6])// 排序
{ int j,t,m,n,l,i;
int d[3];
int e[3];
for(i=0;i<6;i++)
{ printf("No.%d:\n ",i);
for(j=0;j<6;j++)
{ srand((int) time(0));
i=rand()%6;
if(j<=2)
d[m++]=c[i];
if(j>2)
e[n++]=c[i];
}
if(d[0]>d[1]) //d[]组排序
{t=d[0];d[0]=d[1];d[1]=t;}
if(d[0]>d[2])
{t=d[0];d[0]=d[2];d[2]=t;}
if(d[1]>d[2])
{t=d[1];d[1]=d[2];d[2]=t;}
if(e[0]>e[1]) //e[]组排序
{t=e[0];e[0]=e[1];e[1]=t;}
if(e[0]>e[2])
{t=e[0];e[0]=e[2];e[2]=t;}
if(e[1]>e[2])
{t=e[1];e[1]=e[2];e[2]=t;}
for(i=0;i<=2;i++) //d[]组e[]组上下对应排序
if(d[i]>e[i])
{l=d[i];d[i]=e[i];e[i]=l;}
for(j=0;j<=2;j++)
{printf("%d ",d[j]);printf("\n");printf("%d ",e[j]);}
}
}
void main()
{ int a[6];
printf("the number is:\n");
fenzu(a);
printf("\n");
sort(a);
}
为什么不可以呢?0 29 33
21 32 89





我的思路是用全排列