小测试-04月18日
朝外信奥2队 4月18号当堂测验
答案版
一、单项选择题(共15题)
每题有且仅有一个正确答案,绿色选项为正确答案。
1. 下面说法不正确的是( )。
答案:A。在 C++ 中 bool 通常占 1 字节,不是 2 字节。
2. 下面表达式的值是( )。
sqrt(4) + pow(2, 5) + ceil(-1.2)
答案:A。sqrt(4)=2,pow(2,5)=32,ceil(-1.2)=-1,和为 33。
3. 下面表达式的值是( )。
max(3, min(5, 2 + 4)) + abs(-2)
答案:D。max(3, min(5, 6)) + abs(-2) = 5 + 2 = 7。
4. 下面表达式的值是( )。
‘A’ + 1 – ‘0’ + (int)(‘a’ – ‘A’)
答案:D。'A'=65,65+1-48+32=50。
5. 下列关于函数参数的说法,正确的是( )。
答案:D。形参是定义中的变量名,实参是调用时传入的数据。
6. 下列关于指针的说法,正确的是( )。
答案:A。指针变量中保存的是地址值。
7. &a 的含义是( )。
答案:A。& 表示取地址。
8. *p 的含义是( )。
答案:C。*p 表示访问 p 指向的内容。
9. 若要通过函数修改外部变量的值,通常可以使用( )。
答案:C。要在函数中改到外部变量,一般用指针或引用传参。
10. 下列关于结构体的说法,正确的是( )。
答案:D。结构体常用来把多个相关成员组织在一起。
11. 若已定义结构体 Student,并定义 Student s;,要访问它的成员 age,应写成( )。
答案:A。普通结构体对象用点号访问成员。
12. 下面程序的输出结果是( )。
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
cout << *(p + 2);
答案:D。p+2 指向 a[2],其值是 3。
13. 从 6 名同学中选 2 名分别担任班长和副班长,再从剩下 4 名同学中选 1 名担任纪律委员,共有多少种安排?( )
答案:C。6×5×4 = 120。
14. 下面程序的输出结果是( )。
int sum = 0;
for (int i = 1; i <= 5; ++i) {
if (i == 2) continue;
if (i == 4) break;
sum += i;
}
cout << sum;
答案:C。累加 1、3,遇到 2 continue,遇到 4 break,所以 sum=1+3=4。
15. 若输入 8,程序输出( )。
#include <iostream>
using namespace std;
const int NUM = 5;
int r(int n){
int i;
if (n <= NUM)
return n;
for (i = 1; i <= NUM; i++)
if (r(n – i) < 0)
return i;
return -1;
}
int main(){
int n;
cin >> n;
cout << r(n) << endl;
return 0;
}
答案:B。r(8) 会递归找到 i=2。
二、阅读程序选择题
每题只有一个正确选项,绿色选项为正确答案。
(1)阅读程序,回答 16~20 题
#include <bits/stdc++.h>
using namespace std;
void add(int &x) {
x += 3;
}
void change(int *p) {
*p += 2;
}
int main() {
int a = 4, b = 5;
add(a);
change(&b);
int c = a + b;
cout << a << ' ' << b << ' ' << c << '
';
return 0;
}
16. 执行 add(a) 后,a 的值是( )。
答案:C。add(a) 通过引用把 a 变成 7。
17. 执行 change(&b) 后,b 的值是( )。
答案:C。change(&b) 通过指针把 b 变成 7。
18. 变量 c 的值是( )。
答案:C。c = 7 + 7 = 14。
19. 程序最终输出什么?( )
答案:D。最终输出为 7 7 14。
20. 如果把 change(&b) 改成 change(b),程序会( )。
答案:C。change 需要指针参数,传 b 会编译出错。
(2)阅读程序,回答 21~25 题
#include <bits/stdc++.h>
using namespace std;
struct Student {
string name;
int score;
};
int main() {
Student s[3] = {{"A", 85}, {"B", 92}, {"C", 78}};
int mx = s[0].score;
int id = 0;
for (int i = 1; i < 3; ++i) {
if (s[i].score > mx) {
mx = s[i].score;
id = i;
}
}
cout << s[id].name << ' ' << mx << '
';
return 0;
}
21. Student 是什么类型?( )
答案:B。Student 是结构体类型。
22. 数组 s 中一共有多少个学生?( )
答案:B。数组 s 中定义了 3 个学生。
23. 初始时,mx 的值是多少?( )
答案:B。mx 初始等于 s[0].score,即 85。
24. 最终 id 的值是多少?( )
答案:B。最高分是 92,对应下标 1。
25. 程序最终输出什么?( )
答案:B。输出为 B 92。
