正在载入在线练习界面,本页内容可直接阅读…
AK CSP › NOIP 普及 2014 第一轮真题 › 第 13 题
NOIP 普及 2014 第一轮 第 13 题:调试调和级数程序中的整数除法错误
题目
要求以下程序的功能是计算:$s=1+\dfrac{1}{2}+\dfrac{1}{3}+\dots+\dfrac{1}{10}$。
#include <iostream>
using namespace std;
int main()
{
int n;
float s;
s = 1.0;
for(n = 10; n > 1; n--)
s = s + 1 / n;
cout << s << endl;
return 0;
}
程序运行后输出结果错误,导致错误结果的程序行是( )。
选项
- A. s = 1.0;
- B. for(n = 10; n > 1; n--)
- C. s = s + 1 / n;
- D. cout << s << endl;
答案
C
题解
考点定位
本题考「程序改错」,对应大纲 2.1.2 程序理解(难度【2】)。
解题过程
求 1+1/2+…+1/10:常见错误是整数除法 1/n(n≥2 时恒为 0)。正确改法:
``cpp s = s + 1.0 / n; // 浮点除 ``
选 C(把 1/n 改为 1.0/n 的选项)。
易错提醒
① int/int 是整数除法——分数求和题的头号坑;② 也可写 s += 1/(double)n。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号