case 1:
while(i<10)
{
int a,b,sum,u;
srand(time(0));
a=rand()%10;
b=rand()%10;
sum=a+b;
printf("%d+%d=\n",a,b);
scanf("%d\n",&u);
if(u==sum)
{
T=T+1;
}
else
i++;
n=T/i;
}
printf("准确率=%.2f",n);
break;
这段程序的目的是求加法计算的准确率吧?? 语句嵌套逻辑就是错的
case 1:
while(i < 10)
{
int a, b, sum, u;
srand(time(0));
a = rand() % 10;
b = rand() % 10;
sum = a + b;
printf("%d+%d=\n", a, b);
scanf("%d\n", &u);
if(u == sum)
{
T = T + 1;
}
i++;
}
n = T / 10;
printf("准确率=%.2f",n);
break;
真的不是隔壁来的吗? C++一般真不用scanf
用while循环要执行10次就是上面这样, 每次循环内执行一次i++
或者直接用for循环, for(int i=0; i < 10; i ++) {}
错误主要在这个地方
if(u==sum)
{
T=T+1;
}
else
i++;
n=T/i;
在一个while循环里面, 前面出了题目, 计算了参考答案, 然后读取了你的回答, 然后你的逻辑是: 如果回答对了, 那么正确数量+1, 如果回答错了, 那么答题数量+1, 然后修改一次当前正确率(因为这俩参数本身意义表达错了所以也错了),
如果没理解错的或你预期的逻辑是: 如果回答对了, 正确数量+1, 答题数+1, 如果回答错了, 答题数+1, 那么正确做法看最上面那段代码, 因为无论如何答题数都要+1, 所以要直接放到while循环里