高手进来看看是哪里出错了

来源:百度知道 编辑:UC知道 时间:2024/06/07 02:36:07
为什么调出来的y的j的值都为零啊
#include<math.h>
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{int m,n,i,j,a,y,k,k1,m1;
j=0;
y=0;

for(n=0;n<1000;n++)
{for(m=0,k=0;m==2||k==3;)
{srand(time(0));
a=rand()%2;
if(a==1)
m++,m1=m;
else if(a==2)
k++,k1=k;
}
if(k1==3)
j+=1000;
else if(m1==2)
y+=1000;}
printf("%d %d",y,j);}

两个问题:
第一,for(m=0,k=0;m==2||k==3;) 这句一开始就会失败,所以不会被执行,k1和m1的值一直都会是0,所以
if(k1==3)
j+=1000;
else if(m1==2)
y+=1000;
永远不会被执行。

第二,rand()%2; 的值永远是1和0,不可能是2,所以else if(a==2)

把srand(time(0));移到第一个for的上面,也就是y=0;之下,还有把i去掉,你根本没有用它为什么要声明它?
k++,k1=k; 永远不会被执行。

说明你的(k1==3)和(m1==2)这两个条件都永远不会得到满足咯~