一、单选题(每题 4 分,共 40 分)
以下代码的输出是?( )
int x[4] = {5, 10, 15, 20}; for (int i = 3; i >= 0; i--) cout << x[i] << " ";A.
20 15 10 5
B.5 10 15 20
C.0 0 0 0
D. 无输出
【答案】A
【解析】循环从 i = 3 递减到 0,因此会逆序输出数组元素。注意 0 是合法的数组下标。
以下代码的输出是?( )
int y = 2; switch (y) { case 1: cout << "1"; case 2: cout << "2"; case 3: cout << "3"; break; default: cout << "4"; }A. 2
B. 23
C. 234
D. 4
【答案】B
【解析】由于 y = 2,进入 switch 语句之后会匹配到 case 2,然后执行 cout << "2"; 输出 2,由于没有 break,于是继续执行 cout << "3"; 输出 3,因此最终输出 23。
以下代码的输出是?( )
int a = 7; int b = 3; if (a % b == 0) cout << "Divisible"; else cout << "Not divisible";A.
Divisible
B.Not divisible
C. 编译错误
D. 无输出
【答案】B
【解析】
7
%
3
=
1
7 \% 3 = 1
7%3=1,因此 a % b == 0 的条件不成立,于是执行 else 分支,输出 Not divisible。
以下代码的输出是?( )
int a = 10; int b = 5; int c = 15; if (a >= b && a >= c) cout << "A is largest"; else if (b >= c) cout << "B is largest"; else cout << "C is largest";A.
A is largest
B.B is largest
C.C is largest
D. 编译错误
【答案】C
【解析】该代码段的功能是判断三个数的最大者,由于 c = 15 最大,因此前两个条件都不成立,最终执行 else,输出 C is largest。
以下代码的输出是?( )
for (int i = 3; i > 0; i--) { cout << i << " "; }A.
3 2 1
B.1 2 3
C.3 2 1 0
D. 无输出
【答案】A
【解析】循环从 3 开始递减,当 i == 0 时立即终止循环,不再进行输出,因此输出 3 2 1。
以下代码的输出是?( )
int i = 10; while (i > 0) { if (i == 5) break; cout << i << " "; i--; }A.
10 9 8 7 6
B.10 9 8 7 6 5
C.10 9 8 7 6 5 4
D. 无输出
【答案】A
【解析】当 i == 5 时执行 break 跳出循环,因此 5 不会输出。
do-while循环至少执行几次?( )A. 0
B. 1
C. 2
D. 不确定
【答案】B
【解析】do-while 先执行循环体,再判断条件,因此至少执行一次。
以下代码的输出是?( )
for (int i = 1; i <= 2; i++) { for (int j = 1; j <= 3; j++) { cout << i << "," << j << " "; } cout << endl; }A.
1,1 1,2 1,3 2,1 2,2 2,3B.
1,1 2,1 3,1 2,2 1,3 2,3C.
1,1 1,2 2,1 2,2D. 无输出
【答案】A
【解析】外层循环控制行数,内层循环控制列数,因此依次输出两行坐标。
以下定义数组的方式不正确的是?( )
A.
int arr[] = {1, 2, 3};
B.int arr[3] = {};
C.int arr[3] = {1, 2, 3, 4};
D.int arr[3] = {1, 2};
【答案】C
【解析】数组长度为 3,却初始化了 4 个元素,会导致编译错误。
以下代码的输出是?( )
int a[3] = {10, 20, 30}; cout << a[2 - 1];A. 10
B. 20
C. 30
D. 地址值
【答案】B
【解析】
2
−
1
=
1
2-1=1
2−1=1,因此输出 a[1],值为 20。
二、判断题(每题 2 分,共 20 分)
if语句必须要有else语句。( )
【答案】×
【解析】if 语句可以单独使用,不一定需要 else。
switch语句的条件表达式可以是浮点型。( )
【答案】×
【解析】switch 的条件表达式必须是整型、字符型等离散类型,不能是浮点型。
for循环的初始化部分可以不定义新变量。( )
【答案】√
【解析】初始化部分可以为空,也可以使用已定义变量。
for循环的步进表达式可以不赋值。( )
【答案】√
【解析】步进表达式(即第 3 条语句)可以为空,例如在循环体中修改变量。
- 当条件表达式为假时,程序会进入对应的
while循环。( )
【答案】×
【解析】while 循环只有在条件为真时才会进入。
while循环的循环体至少执行一次。( )
【答案】×
【解析】while 语句先判断条件,条件为真时才执行循环体,如果条件一开始就是假,则一次也不会执行。
- 在嵌套循环中,
break可以跳出多层循环。( )
【答案】×
【解析】break 只能跳出当前所在的一层循环。如果要跳出多层循环,可以使用 goto 语句,或者使用标记变量配合 break 语句。
do-while循环的条件表达式外不需要圆括号。( )
【答案】×
【解析】do-while 语句后面的条件必须使用圆括号括起来。
- 数组名可以是关键字。( )
【答案】×
【解析】变量名、数组名、函数名等标识符都不能使用关键字。
- 小写字母的 ASCII 码比大写字母的大。( )
【答案】√
【解析】ASCII 码中 'a' ~ 'z' 的编码大于 'A' ~ 'Z',同一个字母的小写比大写的 ASCII 码多 32。
三、编程题(每题 20 分,共 40 分)
1. 闯关得分
每一名选手有三次挑战机会,每次挑战会获得一个得分。最终得分规则为:取三次挑战中得分最高的两次,将这两次的得分相加,作为该选手的最终得分。
现给定该选手三次挑战的得分,请计算并输出其最终得分。
时间限制:1 s
内存限制:256 MB
- 输入
一行包含三个整数,分别表示三次挑战的得分,整数之间用空格分隔。每次挑战的得分均为 0 0 0 到 100 100 100 之间的整数(包含 0 0 0 和 100 100 100)。 - 输出
一个整数,表示选手的最终得分。 - 样例输入 1
80 90 70 - 样例输出 1
170 - 样例输入 2
100 50 100 - 样例输出 2
200
思路分析
此题考查分支结构的应用,属于基础题。
只需要找出其中的最小值,把另外两个数值相加即为答案。利用打擂台思想,先假设 a a a 是最小值,如果 b < a b < a b<a 就交换 a , b a,b a,b 的值,同理,在 c < a c < a c<a 的情况下交换 a , c a,c a,c 的值。最终 a a a 就是三个数值中的最小值,而 b + c b+c b+c 就是答案。
/*
* Name: T1.cpp
* Problem: 闯关得分
* Author: Teacher Gao.
* Date&Time: 2026/05/16 15:20
*/
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(0);
int a, b, c;
cin >> a >> b >> c;
if (b < a) swap(a, b);
if (c < a) swap(a, c);
cout << b + c << endl;
return 0;
}
2. 计算天数
以 年-月-日 的形式给定一个日期,计算给定的日期是当年第几天。注意闰年二月有
29
29
29 天。
时间限制:1 s
内存限制:256 MB
- 输入
输入格式为yyyy-mm-dd,其中yyyy表示给定的年份,mm表示给定的月份,dd表示给定的日期。- 如果这些数字不足四位或二位,以
0补足。 - 保证月份与日期都是合理的。
- 输出
单个整数:表示输入的日期是当年的第几天。 - 样例输入 1
2021-12-31 - 样例输出 1
365 - 样例输入 2
2022-01-01 - 样例输出 2
1
思路分析
此题考查数组的基本运用,属于基础题。
先定义数组保存每个月的天数,接下来判断当前年份是否为闰年,如果是闰年,则将二月天数改为 29。然后从 1 月开始累加到 m − 1 m-1 m−1 月,再加上当前日期 d d d,即可得到答案。
/*
* Name: T2.cpp
* Problem: 计算天数
* Author: Teacher Gao.
* Date&Time: 2026/05/16 15:23
*/
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(0);
int y, m, d;
char ch;
cin >> y >> ch >> m >> ch >> d;
int days[13] = {0,
31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31};
bool leap = false;
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
leap = true;
if (leap)
days[2] = 29;
int ans = d;
for (int i = 1; i < m; i++)
ans += days[i];
cout << ans << endl;
return 0;
}
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_39710484/article/details/160903859




