“小朋友们,为了帮助大家更好地准备考试,我们来尝试一些模拟题,”我说,”这些题目会全面测试你们对多分支、多if和switch语句的理解。”
一、选择题(10题)
第1题:下面代码段执行后的输出是( )。
int a = 15;
if (a % 3 == 0)
cout << "A";
else if (a % 5 == 0)
cout << "B";
else if (a % 15 == 0)
cout << "C";
else
cout << "D";
□ A. A □ B. B □ C. C □ D. D
答案:A
解析: a=15,a%3=0,所以第一个条件为真,输出”A”,然后跳出整个多分支结构。注意如果条件的顺序不同,结果可能会不同。
第2题:下面代码段执行后的输出是( )。
int x = 8;
if (x > 5)
if (x < 10)
cout << "A";
else
cout << "B";
else
cout << "C";
□ A. A □ B. B □ C. C □ D. 不输出
答案:A
解析: 这是嵌套的if-else结构。x=8,第一个条件x>5为真(8>5),进入内部判断;内部条件x<10也为真(8<10),所以输出”A”。
第3题:下面代码段中变量y的最终值是( )。
int x = 7, y = 10;
if (x > 5) {
y = 2 * x;
} else if (x > 0) {
y = x + 5;
} else {
y = 0;
}
□ A. 10 □ B. 12 □ C. 14 □ D. 0
答案:C
解析: x=7,第一个条件x>5为真(7>5),所以执行y=2x,即y=27=14。
第4题:下面代码段中,如果输入x=10,y=20,则输出是( )。
int x, y;
cin >> x >> y;
if (x > y)
cout << "X > Y";
else if (x == y)
cout << "X = Y";
else
if (x + y > 25)
cout << "Sum > 25";
else
cout << "Sum <= 25";
□ A. X > Y □ B. X = Y □ C. Sum > 25 □ D. Sum <= 25
答案:C
解析: x=10,y=20,第一个条件x>y为假(10不大于20),第二个条件x==y也为假(10不等于20),进入内部的if-else结构;内部条件x+y>25为假(10+20=30,大于25),所以输出”Sum > 25″。
第5题:下面代码段执行后的输出是( )。
int day = 3;
switch(day) {
case 1:
cout << "Monday";
break;
case 2:
cout << "Tuesday";
case 3:
cout << "Wednesday";
case 4:
cout << "Thursday";
break;
case 5:
cout << "Friday";
break;
default:
cout << "Weekend";
}
□ A. Monday □ B. Tuesday □ C. WednesdayThursday □ D. Weekend
答案:C
解析: day=3,匹配case 3,输出”Wednesday”,然后由于没有break语句,继续执行case 4的代码,输出”Thursday”,然后遇到break跳出switch结构。所以最终输出为”WednesdayThursday”。
第6题:下面代码段执行后的输出是( )。
int n = 5, m = 10;
if (n > 0) {
if (m > 5)
cout << "A";
else
cout << "B";
} else
cout << "C";
cout << "D";
□ A. A □ B. B □ C. C □ D. AD
答案:D
解析: n=5,m=10,第一个条件n>0为真(5>0),进入内部的if-else结构;内部条件m>5也为真(10>5),所以输出”A”。然后无条件输出”D”,最终结果是”AD”。
第7题:下面代码段中,当输入x=15时,输出是( )。
int x;
cin >> x;
if (x % 2 == 0) {
if (x % 3 == 0)
cout << "Divisible by 6";
else
cout << "Even but not divisible by 3";
} else {
if (x % 3 == 0)
cout << "Odd and divisible by 3";
else
cout << "Odd and not divisible by 3";
}
□ A. Divisible by 6 □ B. Even but not divisible by 3 □ C. Odd and divisible by 3 □ D. Odd and not divisible by 3
答案:C
解析: x=15,第一个条件x%2==0为假(15是奇数),进入else分支;内部条件x%3==0为真(15能被3整除),所以输出”Odd and divisible by 3″。
第8题:下面switch语句的输出等同于哪个多分支结构?
switch(n) {
case 1:
cout << "Low";
break;
case 2:
case 3:
cout << "Medium";
break;
case 4:
case 5:
cout << "High";
break;
default:
cout << "Invalid";
}
□ A.
if (n == 1)
cout << "Low";
else if (n == 2 || n == 3)
cout << "Medium";
else if (n == 4 || n == 5)
cout << "High";
else
cout << "Invalid";
□ B.
if (n == 1)
cout << "Low";
if (n == 2 || n == 3)
cout << "Medium";
if (n == 4 || n == 5)
cout << "High";
if (n < 1 || n > 5)
cout << "Invalid";
□ C.
if (n == 1)
cout << "Low";
else if (n >= 2 && n <= 3)
cout << "Medium";
else if (n >= 4 && n <= 5)
cout << "High";
else
cout << "Invalid";
□ D.
if (n == 1)
cout << "Low";
else
if (n == 2 || n == 3)
cout << "Medium";
else
if (n == 4 || n == 5)
cout << "High";
else
cout << "Invalid";
答案:A
解析: switch语句会根据n的值选择不同的分支。选项A使用了多分支结构if-else if-else,并且条件与switch语句的case对应,会产生相同的输出。
第9题:下面代码段中,当输入一个月份n=4时,输出是( )。
int n;
cin >> n;
switch(n) {
case 12:
case 1:
case 2:
cout << "Winter";
break;
case 3:
case 4:
case 5:
cout << "Spring";
break;
case 6:
case 7:
case 8:
cout << "Summer";
break;
case 9:
case 10:
case 11:
cout << "Autumn";
break;
default:
cout << "Invalid month";
}
□ A. Winter □ B. Spring □ C. Summer □ D. Autumn
答案:B
解析: n=4,匹配case 4,但由于case 3、case 4和case 5共用代码块,输出”Spring”,然后遇到break跳出switch结构。
第10题:下面代码段执行后的输出是( )。
int x = 3, y = 4, z = 5;
if (x > y)
if (x > z)
cout << x;
else
cout << z;
else
if (y > z)
cout << y;
else
cout << z;
□ A. 3 □ B. 4 □ C. 5 □ D. 不输出
答案:C
解析: x=3,y=4,z=5,第一个条件x>y为假(3不大于4),进入外部else分支;内部条件y>z为假(4不大于5),所以输出z的值,即5。
二、判断题(5题)
第1题:在switch语句中,可以在一个case内部嵌套另一个switch语句。( )
答案:正确
解析: 在C++中,switch语句内部可以嵌套另一个switch语句,这称为嵌套switch结构。内部switch的case标签与外部switch的case标签可以相同,不会发生冲突。
第2题:多分支结构if-else if-else比多个独立的if语句更节省计算时间。( )
答案:正确
解析: 多分支结构在找到一个条件为真的分支后就会跳过后面的分支,而多个独立的if语句会依次判断每个条件,即使已经找到一个满足条件的分支。因此,多分支结构通常更节省计算时间。
第3题:switch语句中的case标签可以是变量或者表达式。( )
答案:错误
解析: 在C++中,switch语句的case标签必须是常量表达式,不能是变量或需要在运行时计算的表达式。
第4题:default分支在switch语句中是必须的。( )
答案:错误
解析: default分支在switch语句中是可选的,不是必须的。如果没有default分支,当switch表达式的值不匹配任何case标签时,不会执行任何操作。
第5题:在多分支结构中,如果前面的条件已经满足,后面的条件依然会被检查。( )
答案:错误
解析: 在多分支结构(if-else if-else)中,一旦找到一个为真的条件并执行对应的代码块,就会跳过后面所有的分支。这是多分支结构与多个独立if语句的主要区别。
三、编程题(3题)
第1题:季节判断
题目描述:输入一个月份(1-12的整数),判断该月份属于哪个季节。规定:3-5月为春季,6-8月为夏季,9-11月为秋季,12月和1-2月为冬季。
样例输入:
9
样例输出:
Autumn
参考代码:
#include <iostream>
using namespace std;
int main() {
int month; // 定义整数变量month表示月份
cin >> month; // 输入月份
if (month < 1 || month > 12) { // 检查月份是否有效
cout << "Invalid month";
return 0;
}
switch(month) { // 根据月份判断季节
case 3: // 3月
case 4: // 4月
case 5: // 5月
cout << "Spring"; // 春季
break;
case 6: // 6月
case 7: // 7月
case 8: // 8月
cout << "Summer"; // 夏季
break;
case 9: // 9月
case 10: // 10月
case 11: // 11月
cout << "Autumn"; // 秋季
break;
case 12: // 12月
case 1: // 1月
case 2: // 2月
cout << "Winter"; // 冬季
break;
}
return 0;
}
第2题:三角形类型
题目描述:输入三个正整数a、b、c,它们表示三角形的三条边长。判断这三条边能否构成三角形,如果能,进一步判断它是什么类型的三角形(等边三角形、等腰三角形或普通三角形)。
样例输入:
3 4 5
样例输出:
普通三角形
参考代码:
#include <iostream>
using namespace std;
int main() {
int a, b, c; // 定义三个整数变量表示边长
cin >> a >> b >> c; // 输入三条边长
// 检查是否能构成三角形(任意两边之和大于第三边)
if (a + b > c && a + c > b && b + c > a) {
// 判断三角形类型
if (a == b && b == c) {
cout << "等边三角形"; // 三边相等
} else if (a == b || b == c || a == c) {
cout << "等腰三角形"; // 有两边相等
} else {
cout << "普通三角形"; // 三边不等
}
} else {
cout << "不能构成三角形"; // 不满足三角形条件
}
return 0;
}