在1-1000之间随机选出四个不同的数字,注意,四个数字不能相同。用C语言实现

如题所述

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int fun(int a,int b,int c,int d)//判断所得的四个数是否相等,全都不等为正确

{

if((a!=b)&&(a!=c)&&(a!=c)&&(a!=d))

if((b!=c)&&(b!=d))

if(c!=d)

return 1;

return 0;

}

void main()

{

int a,b,c,d;

srand((unsigned)time(0));

a=1+rand()%1000;

b=1+rand()%1000;

c=1+rand()%1000;

d=1+rand()%1000;

if(fun(a,b,c,d))

printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-28

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int main()

{

int a[4],b;

srand(time(NULL));

b=rand()%1000+1;

int k=1;

a[0]=b;

for(int i=0;;i++)

{

b=rand()%1000+1;

for(int j=0;j<k;j++)

{

if(a[j]==b) break;

else if(j==k-1)

{

a[k]=b;

k++;

}

}

if(k==4)

break;

}

for(i=0;i<k;i++)

printf("%d ",a[i]);

printf("\n");

}

追问

我看了下代码,意思是选出后再判定是不是相等,如果不相等再运行一次对吧,有没有什么算法一次就能成功的? 我貌似错了,谢谢!你这个可行!

追答

恩恩 你看懂了这个代码 是这个意思
你是不是说一次产生4个随机数而且互不相同呢?
但这个我目前还不会 不好意思

本回答被提问者采纳
第2个回答  2013-04-28
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int a,b,c,d;
srand(time(NULL));
a = rand()%251;
b = rand()%251 + 250;
c = rand()%251 + 500;
d = rand()%251 + 750;
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}

追问

其实我觉得你后面加了几个数是没有用的,比如a选出的是300,b选出的是50,那么ab就相等了

追答

a会选出300么?我取余了,a只能是0-250之间的数字

追问

好吧,我水了,如果设置成四段的话,不能保证随机性了吧,这样四个数就会平均发分布在四个区间内的

追答

你再随机顺序输出abcd不就行了。。。

第3个回答  2013-04-28
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int data[4],i=0,temp,count=0,len;
srand(time(NULL));
while(1)
{
temp=rand()%1000+1;
if(count==0) {data[count]=temp;len=1;}
else
{for(i=0;i<len;i++)
if(temp==data[i]) continue;
if(i==len) {data[len]=temp;len++;}
}
count++;
if(len==4) break;
}
for(i=0;i<len;i++)
printf("%d ",data[i]);
}
第4个回答  2013-04-28
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int i,a[4];
srand( (unsigned)time( NULL ));
for(i=0;i<4;i++)
{
a[i]=rand()%1000;
printf("%d\t",a[i]);
}
}
相似回答