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;
请问 这段循环为什么是错的?? T n我已经设置了double型 T初始为0 , i int型初始为0
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 乘性高斯噪声在深度学习网络中的应用