c语言的小问题【附截图】

来源:百度知道 编辑:UC知道 时间:2024/05/19 23:33:08
编了一个模拟36选7的中奖小程序,可是会出现重复的数,见截图
源码如下:

/*36选7*/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
main()
{
int i,j,temp,z,a[7],b[7]={0};
printf("36选7\n\n");
printf("从小到大输入1,2,3,……,36中的7个数(以空格键分隔,回车键结束)\n");
for(i=0;i<7;i++)
scanf("%d",&a[i]);
srand((unsigned)time(NULL));
for(i=0,z=1;i<7;i++)
{
temp=rand()%100;
if(temp>0&&temp<37)
{
for(j=0;j<=i;j++)
if(b[j]==temp)
z=0;
if(z=1)
b[i]=temp;
else i--;
}
else i--;
}
for(j=6;j>0;j--)
for(i=0;i<j;i++)
if(b[i]>b[i+1]) temp=b[i+1],b[i+1]=b[i],b[i]=temp;
printf("中奖的号码为:");
for(i=0;i<7;i++)
printf(" %d",b[i]);

for(j=0;j<=i;j++)
if(b[j]==temp)
z=0;
if(z=1)
b[i]=temp;
else i--;
这段是你判断数字是否重复的程序段吧。
注意这一句“if(z=1)”应该是z==1。
还有,应该在每次大循环结束后都将z置1,而不是只在开始让z=1。
所以for(i=0,z=1;i<7;i++)这句应该改为
for(i=0,z=1;i<7;i++,z=1)