新兵给老兵舔:一个C程序(看看)

来源:百度文库 编辑:安卓系统之家 时间:2020/06/06 21:50:07
这是一个产生随机数的程序。
产生四个不同的随机数。
在VISUAL C++ 6.0里面运行时没有错误。
大部分测试都可以有结果。
但是有时测试屏里面没有反应。谁能看看告诉我怎么回事???
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int i,j,R,T;
char a[4];//让随机数以字符型输出。
srand(time(NULL));
do{
for(i=0;i<4;i++)
{
R=rand()%10+48;//产生0~9的…码。
a[i]=(char) R;
}
for(i=0;i<4;i++)//此小段测试是否产生的数相同。
for(j=i+1;j<4;j++)
if(a[i]==a[j])
T=1;
}while(T==1);
for(i=0;i<4;i++)
printf("%c ",a[i]);
return 0;
}

因为你的4个数可能总是有重复的,那么就不断循环下去了,你应该在每生成1个数后就判断和前面的数是否重复了,如果重复就直接重新生成这1个数,这样重复率小的多,甚是这样也是可以使用类似解决散列查询冲突的方法优化的,你可以在重复的时候让数+1,再判断,超过9就变0开始,这样会更快选出随机的数字

while(T==1);
可能使程序陷入死循环