正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2024 第一轮真题 › 第 36 题
CSP-J 2024 第一轮 第 36 题:判断平方数:④处应填
题目
(判断平方数) 问题:给定一个正整数 $n$,希望判断这个数是否为完全平方数,即存在一个正整数 $x$,使得 $x$ 的平方为 $n$。
试补全程序。
#include<iostream>
#include<vector>
using namespace std;
bool isSquare(int num) {
int i = _①_;
int bound = _②_;
for (; i <= bound; ++i) {
if (_③_) {
return _④_;
}
}
return_⑤_;
}
int main() {
int n;
cin >> n;
if (isSquare(n)) {
cout << n << " is a square number" << endl;
} else {
cout << n << " is not a square number" << endl;
}
return 0;
}
本小题
④ 处应填( )(本题有多个可能选项)
选项
- A. num = 2 * i
- B. num == 2 * i
- C. true
- D. false
答案
A 或 C
题解
答案是 A、C。关键在于:isSquare 的返回类型是 bool,非零整数会自动转换为 true。
程序通常枚举正整数 i,在③处判断 i * i == num。找到符合条件的 i 时,应该返回 true。
- **A:
num = 2 * i** 是赋值表达式,其值为赋给num的2 * i。由于i是正整数,结果非零,作为返回值会转换为true,所以也可以。 - **B:
num == 2 * i** 是比较表达式,不一定为真。例如num = 9、i = 3时,9 == 6为假,因此不可以。 - C:
true直接返回真,正确,也是最清晰、推荐的写法。 - D:
false会把找到的完全平方数判断为非完全平方数,错误。
注意区分:= 是赋值,== 才是判断相等。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号