小测试-04月04日
朝外信奥2队 4月4号当堂测试
答案版
一、单项选择题(共20题)
第 1-12 题复习旧知识,第 13-20 题检查本节课函数、指针、结构体的基础掌握情况。每题有且仅有一个正确答案,绿色选项为正确答案。
1. 在 C++ 中,判断一个正整数
x 是否为奇数,条件写法正确的是( )。答案:B。对于正整数,判断奇数最常见写法是
x % 2 == 1。2. 已知
int a = 17;,float b = 5;,则表达式 a / b 的值是( )。答案:C。因为
b 是 float 类型,所以 a 会先转成浮点数,再进行浮点除法,结果是 17.0 / 5.0 = 3.4。3. 设有字符数组
char s[] = "hello";,执行 cout << s[1] + 3; 后,输出结果是( )。答案:C。
s[1] 是字符 'e',其 ASCII 码是 101,执行 s[1] + 3 后结果是整数 104,所以输出 104。4. 设有定义
char s[10] = "abc deg";,则 strlen(s) 的值是( )。答案:B。字符串
"abc deg" 里有 7 个字符,其中中间的空格也要计入长度,strlen 不计算结尾的 '\0'。5. 阅读下面代码,程序输出结果是( )。
int i = 1, s = 0;
while (i <= 5 && s < 7) {
s += i;
i++;
}
cout << s;
答案:C。循环过程中
s 依次变为 1, 3, 6, 10,当下一轮判断时 s < 7 不再成立,所以最终输出 10。6. 阅读代码,程序输出结果是( )。
int s = 0;
for (int i = 1; i <= 5; i++) {
if (i % 2 == 0) s += i;
else s -= i;
}
cout << s;
答案:A。依次计算为
-1 + 2 - 3 + 4 - 5 = -3。7. 阅读代码,程序最终输出结果是( )。
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) continue;
cout << i + j << ” “;
}
}
答案:B。每轮内层循环中
j=2 被跳过,所以每个 i 只会输出 i+1 和 i+3,最终结果是 2 4 3 5 4 6 5 7。8. 设
bool a = true, b = false, c = true;,则逻辑表达式 (a && b) || (!b && c) 的值是( )。答案:A。前半部分是假,后半部分是真,所以整体为真。
9. 设有二维数组
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};,则表达式 a[0][2] + a[1][0] 的值是( )。答案:C。
a[0][2] = 3,a[1][0] = 4,所以结果是 3 + 4 = 7。10. 已知
string s = "abc";,执行 s += "de"; 后,s 的值是( )。答案:C。
+= 表示在原字符串后面拼接内容,所以结果是 abcde。11. 阅读代码,程序输出结果是( )。
char s[] = “abca”;
int cnt = 0;
for (int i = 0; s[i] != ‘\0’; i++) {
for (int j = 0; j <= i; j++) {
if (s[j] == ‘a’) cnt++;
}
}
cout << cnt;
答案:B。外层循环依次枚举前缀,内层循环统计前缀中字符
'a' 的个数。四轮分别增加 1、1、1、2,总计为 5。12. 已知
string s = "hello";,则表达式 s.size() 的值是( )。答案:B。
size() 是 string 类型自带的成员函数,用来返回字符串长度,"hello" 的长度是 5。13. 关于函数的说法,正确的是( )。
答案:C。函数的核心作用之一就是封装重复功能。
14. 下列哪一行可以作为函数声明( )。
答案:A。函数声明需要写明返回值类型、函数名、参数列表,并以分号结尾。
15. 下列函数定义中,能够正确返回两个整数较大值的是( )。
答案:B。返回值类型、参数类型和函数体都正确。
16. 若有定义
int a = 10;,则 &a 表示( )。答案:B。
& 是取地址运算符。17. 若
int a = 10;,int *p = &a;,则 *p 的值是( )。答案:B。
*p 表示取出指针所指向地址中的值。18. 若要在函数中交换主函数里两个整型变量的值,下面更合适的函数头是( )。
答案:B。要修改外部变量,需要传地址。
19. 已定义结构体变量
stu,且有如下定义,下面哪组语句是正确的( )。struct Student {
string name;
int score;
};
答案:C。结构体变量访问成员要用点运算符
.。20. 阅读程序,程序输出结果是( )。
struct Student {
string name;
int score;
};
int add(int x) {
return x + 2;
}
int main() {
Student s;
s.name = “Tom”;
s.score = 90;
int *p = &s.score;
*p = add(*p);
cout << s.name << ” ” << s.score;
}
答案:B。结构体变量
s 的分数先设为 90,指针 p 指向 s.score,函数 add 返回参数加 2,所以最后 s.score 变成 92,输出 Tom 92。