信奥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 主题|小节
“小朋友们,为了帮助大家更好地准备考试,我们来尝试一些模拟题,”我说,”这些题目会测试你们对if语句和双分支语句进阶应用的理解。”
一、选择题(5题)
第1题:给定代码在执行后的输出是( )。
int a = 7, b = 3;
bool result = (a > 5) || (b++ > 3);
cout << b;
□ A. 3 □ B. 4 □ C. 7 □ D. 10
答案:A
解析: 表达式(a > 5)为真(7大于5),由于||的短路特性,右侧的(b++ > 3)不会被执行,所以b的值保持为3。
第2题:下面代码的输出结果是( )。
int x = 10, y = 20;
if (x > 0 && y / x > 1)
cout << "条件成立";
else
cout << "条件不成立";
□ A. 条件成立 □ B. 条件不成立 □ C. 运行时错误 □ D. 编译错误
答案:A
解析: x > 0为真(10大于0),y / x = 20 / 10 = 2,大于1,所以条件成立,输出”条件成立”。
第3题:下面代码的输出结果是( )。
int n = 15;
if (n % 400 == 0 || (n % 4 == 0 && n % 100 != 0))
cout << "是闰年";
else
cout << "不是闰年";
□ A. 是闰年 □ B. 不是闰年 □ C. 15 □ D. 无输出
答案:B
解析: 15不能被400整除,也不能被4整除,所以不满足闰年条件,输出”不是闰年”。
第4题:下面代码中的条件判断与( )等价。
if (!(x < 5 || x > 10)) { ... }
□ A. if (x >= 5 && x <= 10) □ B. if (x < 5 && x > 10) □ C. if (x >= 5 || x <= 10) □ D. if (x < 5 && x <= 10)
答案:A
解析: 根据德摩根定律,!(x < 5 || x > 10)等价于!(x < 5)&& !(x > 10),进一步等价于x >= 5 && x <= 10。
第5题:下面代码的输出结果是( )。
int a = 1, b = 2;
if (a > b)
cout << a;
else
cout << b;
□ A. 1 □ B. 2 □ C. 3 □ D. 无输出
答案:B
解析: a > b为假(1不大于2),所以执行else分支,输出b的值2。
二、判断题(5题)
第1题:表达式a + b > c && a + c > b && b + c > a用于判断三个正数a、b、c是否能构成三角形。( )
答案:正确
解析: 这个表达式检查三角形的基本条件:任意两边之和大于第三边。
第2题:在C++中,表达式x = 5与表达式x == 5的效果相同。( )
答案:错误
解析: x = 5是赋值表达式,将5赋给x;而x == 5是比较表达式,检查x是否等于5。
第3题:如果变量x和y都是整数类型,那么表达式x < y < z可以正确判断y是否在x和z之间。( )
答案:错误
解析: 在C++中,表达式x < y < z会被解析为(x < y) < z,即先计算x < y得到布尔值(0或1),再与z比较,不能正确判断y是否在x和z之间。正确写法是x < y && y < z。
第4题:在逻辑表达式a || b && c中,先计算b && c,再计算与a的或运算。( )
答案:正确
解析: 在C++中,&&运算符的优先级高于||运算符,所以会先计算b && c,再计算与a的或运算。
第5题:在判断是否为闰年时,条件(year % 4 == 0 && year % 100 != 0) || year % 400 == 0与year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)是等价的。( )
答案:正确
解析: 逻辑或(||)运算满足交换律,即a || b等价于b || a,所以这两个表达式是等价的。
三、编程题(3题)
第1题:打折问题
题目描述:商店促销,购物满100元打9折,不满100元不打折。给定购物金额x元,计算应付金额并输出(结果保留两位小数)。
样例输入:
120
样例输出:
108.00
样例输入:
80
样例输出:
80.00
参考代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double x;
cin >> x;
double pay = x;
if (x >= 100) {
pay = x * 0.9;
}
cout << fixed << setprecision(2) << pay;
return 0;
}
第2题:路程计算
题目描述:小明每天步行上学。如果下雨,他会跑步,速度是10千米/小时;如果不下雨,他会走路,速度是5千米/小时。学校距离家2千米,请计算小明上学需要的时间(单位:小时,保留两位小数)。
样例输入:
1
样例输出:
0.20
样例输入:
0
样例输出:
0.40
说明: 输入1表示下雨,输入0表示不下雨。
参考代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int weather;
cin >> weather;
double time;
if (weather == 1) {
time = 2.0 / 10.0; // 下雨,跑步
} else {
time = 2.0 / 5.0; // 不下雨,走路
}
cout << fixed << setprecision(2) << time;
return 0;
}
第3题:计算邮费
题目描述:某快递公司的收费标准是:1kg以内(含1kg)收费12元,超过1kg收费17元。编写程序计算邮费。
样例输入:
0.5
样例输出:
12
样例输入:
1.5
样例输出:
17
参考代码:
#include <iostream>
using namespace std;
int main() {
double weight;
cin >> weight;
if(weight <= 1) {
cout << 12;
} else {
cout << 17;
}
return 0;
}