永发信息网

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

答案:3  悬赏:60  手机版
解决时间 2021-02-07 10:06
  • 提问者网友:欲劫无渡
  • 2021-02-06 11:26
请高手来拿指教!
要求输出数字从小到大排列
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-02-06 12:51
#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]);

}
全部回答
  • 1楼网友:平生事
  • 2021-02-06 14:06
正解如下,经过编译可以通过: #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]); }
  • 2楼网友:低音帝王
  • 2021-02-06 13:20
正解如下,经过编译可以通过: #include #include 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(
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯