正确答案:C
考察知识点:流程控制语句 - 循环、数位分离
解析:该代码的逻辑是通过循环取出 N 的每一位数字,构建逆序结果 rst。循环应在 N 的所有数字处理完毕(即 N 变为 0)时结束。
选项 A(N != 0)、B(not (N == 0),即 N != 0)、D(N > 0)都能保证循环在 N 处理完后终止;而选项 C(N = 0)是赋值操作,会导致循环条件恒为 0(逻辑假),循环一次都不执行,无法正确计算镜面数。答案为 C。
正确答案:D
考察知识点:基本数据类型、基本运算符
解析:python 语言中可以使用 D 选项的方式完成两个变量的交换,但 C++不支持这种方式。答案为 D。
A 选项借助于第三个变量完成两个变量值的交换。
B、C 选项借助于数的运算完成两个变量值的交换。
正确答案:D
考察知识点:基本运算符、流程控制语句 - 循环
解析:首先,div 的作用是通过循环乘以 10,得到一个数,使得 N / div 可以把第 M 位及更高位的数保留,去掉低位。比如 N = 1234,M = 2 时,循环后 div = 10。然后 N / div 得到 123(整数除法),再对 10 取余,就得到第 2 位的数字 3。所以横线处应填 N / div % 10。答案为 D。
正确答案:正确
考察知识点:控制语句结构 - 循环
解析:初始化 a = 0(对应斐波那契数列第 1 个数),b = 1(对应第 2 个数)。
循环执行 n 次:
每次先输出 a;
然后通过 b = b + a 计算下一个数的和,再通过 a = b - a 更新 a 为原来的 b(即下一个斐波那契数)。
例如,若 n = 5,输出为 0 1 1 2 3,符合斐波那契数列规律,因此该代码能实现功能。表述正确。
三、编程题(每题 25 分,共 50 分)
本题考察分支结构。
解析:方案 1:满 x 元减 y 元,只能使用一次。方案 2:直接打 n 折,也就是说价格变为原先的 n/10,输入为四个正整数,直接写 n/10 会导致丢小数点后数据,因此要写成 n/10.0。
#include<bits/stdc++.h>usingnamespace std;
intmain(){
int x, y, n, p;
cin >> x >> y >> n >> p;
// 方案 1:满 x 元减 y 元,只能使用一次double t1 = (p >= x ? p - y : p);
// 方案 2:直接打 n 折,注意数据类型double t2 = p * n / 10.0;
// 比较方案 1 和方案 2,保留两位小数输出方案 1 和方案 2 中更小的那一个if (t1 < t2) {
printf("%.2lf", t1);
} else {
printf("%.2lf", t2);
}
return0;
}
本题考察 循环结构。
一共 n 层,遍历 n 层,依次将每层的石块进行累加,根据题意,第 i 层需要 i*i 个石块。
#include<bits/stdc++.h>usingnamespace std;
intmain(){
int n, s = 0;
// 注意累加求和的 s 要初始化为 0
cin >> n;
// 遍历 n 层,依次将每层的石块进行累加for (int i = 1; i <= n; i++) {
s += i * i;
// 根据题意,第 i 层需要 i*i 个石块
}
cout << s;
return0;
}