c语言,能运行但是偶尔会出现些错误,请高手们帮忙看看错在哪里啦

printf("Now the test begin!Come on!\n");
printf("Press any key to start.\n");
system("pause");
for(i=0;i<QUESNUM;i++)
{
srand((unsigned)time(NULL));
num1[i]=rand()%100;
srand((unsigned)time(NULL));
num2[i]=rand()%100;
srand((unsigned)time(NULL));
op=rand()%4;

switch(op)
{
case 0:
if(num1[i]+num2[i]<100)
{
printf("%d+%d=?\n",num1[i],num2[i]);
result[i]=num1[i]+num2[i];
opt[i]='+';
}
break;
case 1:
if(num1[i]>=num2[i])
{
printf("%d-%d=?\n",num1[i],num2[i]);
result[i]=num1[i]-num2[i];
opt[i]='-';
}

break;
case 2:
while(num1[i]*num2[i]>=100);
{
srand((unsigned)time(NULL));
num1[i]=rand()%100;
num2[i]=rand()%100;
}
printf("%d*%d=?\n",num1[i],num2[i]);
result[i]=num1[i]*num2[i];
opt[i]='*';

break;
case 3:
while(num2[i]==0||(num1[i]+0.0)/(num2[i]+0.0)!=int(num1[i]/num2[i]))
{
srand((unsigned)time(NULL));
num1[i]=rand()%100;
num2[i]=rand()%100;
}
printf("%d/%d=?\n",num1[i],num2[i]);
result[i]=num1[i]/num2[i];
opt[i]='/';
break;
}/*end of switch*/
scanf("%d",&answer[i]);
if(answer[i]==result[i])
point++;
}
printf("The test is over,press any key to check your scores.\n('R' for right,'W' for wrong)\n");
system("pause");
printf("Your score is %d.",point*10);

这是源文件里的,目的是写一个让小学生做四则运算的程序,运算子和结果都必须在100以内。程序写好运行后发现有时会出现下面些情况:
1, 给出的算式总不出现乘法,而且会出现如图的状况(NO.2)。本来结果不应该有-8589.....那样的数的。不知道怎么回事儿。
2, 运行时偶尔会不给算式,强行输入结果后会继续出下一天算式或者继续不出算式。请教哪里错了啊

printf("Now the test begin!Come on!\n");
printf("Press any key to start.\n");

srand((unsigned)time(0));

for(i=0; i<10; i++)
{

num1[i]=rand()%100;

num2[i]=rand()%100;

op=rand()%4;

switch(op)
{
case 0:
while(num1[i]+num2[i] >= 100)
{
num1[i]=rand()%100;
num2[i]=rand()%100;
}
printf("%d+%d=?\n",num1[i],num2[i]);
result[i]=num1[i]+num2[i];
opt[i]='+';
break;
case 1:
while(num1[i] < num2[i])
{
num1[i]=rand()%100;
num2[i]=rand()%100;

}
printf("%d-%d=?\n",num1[i],num2[i]);
result[i]=num1[i]-num2[i];
opt[i]='-';
break;
case 2:
while(num1[i]*num2[i]>=100)
{

num1[i]=rand()%100;
num2[i]=rand()%100;
}
printf("%d*%d=?\n",num1[i],num2[i]);
result[i]=num1[i]*num2[i];
opt[i]='*';

break;
case 3:
while(num2[i]==0||(num1[i]+0.0)/(num2[i]+0.0)!=int(num1[i]/num2[i]))
{

num1[i]=rand()%100;
num2[i]=rand()%100;
}
printf("%d/%d=?\n",num1[i],num2[i]);
result[i]=num1[i]/num2[i];
opt[i]='/';
break;
}/*end of switch*/
scanf("%d",&answer[i]);
if(answer[i]==result[i])
point++;

}
printf("The test is over,press any key to check your scores.\n('R' for right,'W' for wrong)\n");
system("pause");
printf("Your score is %d.",point*10);

以上程序可以运行
出现错误的原因是:
1.出现不能出现*,是因为while(num1[i]*num2[i]>=100);这后面有一个;使得这个循环成为了死循环
2.出现错误2的原因是,没有正确处理当符号为+和-不符合条件时,应做的操作

希望对你的程序有所帮助
温馨提示:答案为网友推荐,仅供参考
相似回答