有关random函数

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:39:17
请教这个问题~
void practicec()
{
CTOE ctoe[100];
char ieng[20];
int num=100,rn=0,orn,grade=30;
int score=0;
FILE *fp;
int i;
fp=fopen("g:\\ctoe.txt","r");
for(i=0; i<100; i++)
fscanf(fp,"%s %s",ctoe[i].cha,ctoe[i].eng);
do
{
for(i=0; i<grade; i++)
{
do
{
orn=rn;
rn=random(num);
}while(rn==orn);
printf("%d\t%s\n",i,ctoe[rn].cha);
printf("请翻译单词:");
scanf("%s",ieng);
if(strcmp(ieng,ctoe[rn].eng))
{
printf("错误正确的应是:%s\n",ctoe[rn].eng);
}
else
{
printf("您答对了请继续!\n");
score+=1;
}

这段代码中的o
{
orn=rn;
rn=random(num);
}while(rn==orn);

的作用是什么呢?为什么不直接rn=random(num);完事呢?

需要stdlib.h
do
{
orn=rn;
rn=random(num);
}while(rn==orn);
加了这样的意思是判断在for循环里不至于总是抽取到相同的单词来翻译啊!
由于是先执行,再判断,所以第一次的数字已经在orn上了,那么再选一样的时候,就再重新取随机,直到取到和原来的不一样为止啊!!

直接用rn=rando(num),orn的值呢?如果没有orn,后面的while(rn==orn)
怎么办?
stdlib.h