请问 这段循环为什么是错的?? T n我已经设置了double型 T初始为0 , i int型初始为0

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循环里