用C编程输入任意1~33数字中的10个使其输出任意不重复的6个随机数字!

来源:百度知道 编辑:UC知道 时间:2024/05/21 04:19:36
请高手来拿指教!
要求输出数字从小到大排列

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

int produce(int a[10])
{int i,j,k;
randomize();
for(i=0;i<10;i++) a[i]=random(60000)%33+1;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(a[i]==a[j]){k=j;break;}
if(k>i)break;}
if(k>i)return 0;//若有重复元素,则返回假
else return 1;
}

void sort(int a[])
{int i,j,k,t;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(a[k]>a[j])k=j;
if(k>i){t=a[i];a[i]=a[k];a[k]=t;}
}
}

void main()
{
int samp[10],i;
while(!produce(samp));
sort(samp);
for(i=0;i<10;i++)
printf("%4d",samp[i]);

}

正解如下,经过编译可以通过:
#include<stdio.h>
#include<stdlib.h>

int produce(int a[10])
{int i,j,k;
randomize();
for(i=0;i<10;i++) a[i]=random(60000)%33+1;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)