飞衡、如日之升 2018-12-04 12:49 采纳率: 60%
浏览 391
已采纳

请问 这段循环为什么是错的?? 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;

  • 写回答

1条回答 默认 最新

  • crf_moonlight 2018-12-04 13:14
    关注

    这段程序的目的是求加法计算的准确率吧?? 语句嵌套逻辑就是错的

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用