信奥AC之路-1级
-
第1课 开发环境与基础输出5 主题|小节
-
第2课 算术运算符7 主题|小节
-
第3课 printf与运算输出7 主题|小节
-
第4课 数的进制与拆位6 主题|小节
-
第5课 变量与基础运算17 主题|小节
-
第6课 常量与取整运算8 主题|小节
-
第7课 关系运算8 主题|小节
-
第8课 逻辑运算9 主题|小节
-
第9课 输入与计算进阶10 主题|小节
-
第10课 if语句及双分支语句8 主题|小节
-
第11课 if语句及双分支进阶11 主题|小节
-
第12课 三目运算9 主题|小节
-
第13课 多分支、多if和switch语句11 主题|小节
-
第14课 循环(基本输出)7 主题|小节
-
第15课 循环(While+If)8 主题|小节
-
第16课 循环(计数、求和、求乘积)10 主题|小节
-
第17课 循环进阶(While+)8 主题|小节
-
第18课 do-while及while其他用法8 主题|小节
-
第19课 For循环基础9 主题|小节
-
第20课 For循环进阶8 主题|小节
“小朋友们,为了帮助大家更好地准备考试,我们来尝试一些模拟题,”我说,”这些题目会全面测试你们对三目运算的理解。”
一、选择题(5题)
第1题:下面C++代码执行后输出是( )。
int a = 10, b = 5;
cout << (a % b == 0 ? a / b : a % b);
□ A. 2 □ B. 0 □ C. 5 □ D. 10
答案:A
解析: a % b == 0为真(10可以被5整除),所以表达式的值为a / b,即10 / 5 = 2。
第2题:下面C++代码执行后输出的是( )。
int x = 7;
cout << (x > 0 ? x < 5 ? "小" : "中" : "负");
□ A. 小 □ B. 中 □ C. 负 □ D. 不输出
答案:B
解析: x > 0为真(7大于0),然后计算x < 5,这为假(7不小于5),所以输出”中”。
第3题:下面C++代码执行后输出的是( )。
int n = 10;
cout << (n % 3 == 0 ? "能被3整除" : n % 3 == 1 ? "余数为1" : "余数为2");
□ A. 能被3整除 □ B. 余数为1 □ C. 余数为2 □ D. 输出错误
答案:B
解析: n % 3 == 0为假(10不能被3整除),然后计算n % 3 == 1,这为真(10 / 3的余数是1),所以输出”余数为1″。
第4题:下面C++代码执行后,变量c的值是( )。
int a = 3, b = 4, c;
c = a + b > 6 ? a * b : a + b;
□ A. 7 □ B. 12 □ C. 6 □ D. 0
答案:B
解析: a + b > 6为真(3 + 4 = 7大于6),所以c的值为a * b,即3 * 4 = 12。
第5题:下面C++代码等价于( )。
result = value >= 0 ? sqrt(value) : -1;
□ A.
if(value >= 0) {
result = sqrt(value);
}
□ B.
if(value >= 0) {
result = sqrt(value);
} else {
result = -1;
}
□ C.
if(value >= 0) {
result = -1;
} else {
result = sqrt(value);
}
□ D.
result = sqrt(value);
if(value < 0) {
result = -1;
}
答案:B
解析: 三目运算等价于if-else结构,当条件value >= 0为真时结果为sqrt(value),为假时结果为-1。
二、判断题(5题)
第1题:三目运算符可以嵌套使用,但不能链式使用。( )
答案:错误
解析: 三目运算符既可以嵌套使用,也可以链式使用。链式使用的形式如:condition1 ? value1 : condition2 ? value2 : value3。
第2题:表达式 (a > b) ? a : b 的功能等同于求两数的最大值。( )
答案:正确
解析: 这个表达式会比较a和b的大小,返回较大的值,与求最大值的功能相同。
第3题:在三目运算中,如果条件为真,冒号后面的表达式也会被计算。( )
答案:错误
解析: 三目运算具有短路求值的特性,如果条件为真,只会计算问号后的表达式,冒号后的表达式不会被计算。
第4题:三目运算符(?:)的优先级高于加法运算符(+)。( )
答案:错误
解析: 三目运算符的优先级低于加法运算符,因此a + b ? c : d会被解释为(a + b) ? c : d。
第5题:表达式 flag ? var = 10 : var = 20 在C++中是合法的。( )
答案:错误
解析: 在C++中,这种写法是不合法的。赋值语句不能直接作为三目运算的分支。正确的写法应该是 var = flag ? 10 : 20。
三、编程题(3题)
第1题:奇偶性输出
题目描述:输入一个整数,如果是偶数,则输出它除以2的结果;如果是奇数,则输出它乘以2的结果。
样例输入:
7
样例输出:
14
参考代码:
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
cout << (n % 2 == 0 ? n / 2 : n * 2); // 使用三目运算判断奇偶性并执行对应操作
return 0;
}
第2题:成绩评级
题目描述:输入一个0到100之间的成绩,使用三目运算符输出对应的等级:90分及以上为”优秀”,60到89分为”及格”,60分以下为”不及格”。
样例输入:
85
样例输出:
及格
参考代码:
#include <iostream>
using namespace std;
int main() {
int score; // 定义整数变量score表示成绩
cin >> score; // 输入一个成绩
// 使用嵌套的三目运算判断成绩等级
cout << (score >= 90 ? "优秀" : (score >= 60 ? "及格" : "不及格"));
return 0;
}
第3题:三数排序
题目描述:输入三个不同的整数,使用三目运算符按照从小到大的顺序输出这三个数。
样例输入:
7 2 9
样例输出:
2 7 9
参考代码:
#include <iostream>
using namespace std;
int main() {
int a, b, c; // 定义三个整数变量
cin >> a >> b >> c; // 输入三个整数
// 使用三目运算找出最小值
int min_val = (a < b ? (a < c ? a : c) : (b < c ? b : c));
// 使用三目运算找出最大值
int max_val = (a > b ? (a > c ? a : c) : (b > c ? b : c));
// 中间值等于三数之和减去最大值和最小值
int mid_val = a + b + c - min_val - max_val;
// 按顺序输出
cout << min_val << " " << mid_val << " " << max_val;
return 0;
}