正在载入在线练习界面,本页内容可直接阅读…

AK CSP › NOIP 普及 2014 第一轮真题 › 第 13 题

NOIP 普及 2014 第一轮 第 13 题:调试调和级数程序中的整数除法错误

单项选择 · 程序基本概念与数据类型 · 难度 容易 · 答案 C

题目

要求以下程序的功能是计算:$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;
}

程序运行后输出结果错误,导致错误结果的程序行是(      )。
NOIP 普及 2014 第一轮 第 13 题 原题
原题扫描(页面加载后可直接在线作答)

选项

  • 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号