信奥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语句的理解和应用能力。”
选择题:
第1题
原题:下面的程序用于判断输入的整数N是否方能被3整除的偶数,横线处应填写代码是( )。
int N;
cin >> N;
if(_____________)
cout << "能被3整除的偶数" << endl;
else
cout << "其他情形" << endl;
选项:
A. (N%2)&&(N%3)
B. (N%2==0)&&(N%3)
C. (N%2)&&(N%3==0)
D. (N%2==0)&&(N%3==0)
正确答案:D
解析:
- 要同时判断两个条件:是偶数且能被3整除
- N%2==0 判断是否为偶数
- N%3==0 判断是否能被3整除
- 两个条件需要同时满足,使用&&连接
- 因此D选项正确
第2题
原题:下面C++代码执行并输入14+7后,正确的输出是( )。
int P;
printf("请输入正整数P:");
scanf("%d", &P);
if (P % 3 || P % 7)
printf("第5行代码%d, %d", P % 3, P % 7);
else
printf("第7行代码%d", P % 3 & P % 7);
选项:
A. 第5行代码2,0
B. 第5行代码1,0
C. 第7行代码1
D. 第7行代码0
正确答案:D
解析:
- 输入14+7,只能读进去14
- 14%3=2,14%7=0
- if(2 || 0)结果为true
- 执行if分支
- 所以输出”第5行代码2,0″
第3题
原题:下面C++代码执行时输入10后,正确的输出是( )。
int N;
cout << "请输入正整数:";
cin >> N;
if (N % 3)
printf("第5行代码%d", N % 3);
else
printf("第6行代码%d", N % 3);
选项:
A. 第5行代码1
B. 第6行代码1
C. 第5行代码 1
D. 第6行代码 1
正确答案:A
解析:
- 输入10
- 10%3=1
- if(1)为true
- 执行第一个printf语句
- 输出”第5行代码1″
第4题
原题:下面的程序用于判断N是否为偶数,横线处应填写代码是( )。
cin >> N;
if(_____________)
cout << "偶数";
else
cout << "奇数";
选项:
A. N % 2 == 0
B. N % 2 = 0
C. N % 2
D. N % 2 != 0
正确答案:A
解析:
- 判断偶数使用N%2==0
- B选项是赋值语句
- C选项逻辑相反,为非0时表示奇数
- D选项是判断奇数的条件
- A选项正确判断了偶数
判断题
第1题
原题:if语句中的条件表达式的结果必须为bool类型。
正确答案:√
解析:
- if语句中的条件表达式最终需要得到true或false的结果
- C++中非0值代表true,0代表false
- 条件表达式结果会被自动转换为bool类型
第2题
原题:if语句可以没有else子句。
正确答案:√
解析:
- if语句可以单独使用,不一定需要else
- 这种情况称为单分支结构
- 只在条件成立时执行特定操作
编程题:
第1题
题目解析:
- 题目要求:
- 题目名称:温度转换
- 时间限制:1.0s
- 内存限制:512.0MB
- 问题描述:
- 小明要给学习了开氏温度,现在要将其转换为摄氏温度和华氏温度
- 给定转换公式:
- C = K – 273.15 (开氏度转摄氏度)
- F = C × 1.8 + 32 (摄氏度转华氏度)
- 需要判断温度是否过高(华氏温度超过212度)
- 输入格式:
- 一行,一个整数K,表示开氏温度
- 输出格式:
- 一行,若输入开氏温度对应的华氏温度高于212,输出”Temperature is too high!”
- 否则,输出两个由空格分隔的数值,分别表示摄氏温度和华氏温度,保留两位小数
- 样例分析:
样例1输入:
41.80
输出:
Temperature is too high!
样例2输入:
173.56
输出:
-99.59 -147.26
- 数据范围:
- 0 < K < 105
- 解题思路:
- 先将开氏温度转换为摄氏温度
- 再将摄氏温度转换为华氏温度
- 判断华氏温度是否超过212度
- 根据判断结果输出相应内容
代码示例
#include <cstdio>
using namespace std;
int main() {
double K; // 开氏温度
scanf("%lf", &K); // 输入开氏温度值
double C = K - 273.15; // 转换为摄氏度
double F = 32 + C * 1.8; // 转换为华氏度
if (F > 212) // 判断是否超过沸点(212°F)
printf("Temperature is too high!n");
else
printf("%.2f %.2fn", C, F); // 输出摄氏度和华氏度,保留2位小数
return 0;
}
- 代码分析:
- 使用double类型存储温度值,保证精度
- scanf和printf使用%lf处理double类型
- %.2f控制输出保留2位小数
- 使用if-else结构进行温度判断
- 注意事项:
- 温度转换公式的准确使用
- 输出格式的严格控制
- 浮点数的精度处理
- 数值范围的检查
- 关键点:
- 理解三种温度单位的转换关系
- 正确处理浮点数输入输出
- 判断条件的设置(F > 212)
- 输出格式的控制(空格、小数位数)
第2题
题目解析:
- 题目要求:
- 试题编号:2023-09-23-01-C-01
- 试题名称:买文具
- 时间限制:1.0s
- 内存限制:128.0MB
- 问题描述:
- 小明去文具店选购文具
- 商品单价:
- 铅笔2元一支
- 记事本5元一本
- 尺3元一把
- 需要判断小明的钱是否足够购买所需文具
- 输入格式:
- 共四行,每行一个正整数:
- 第一行整数X:表示要买铅笔的数量(1≤X≤10)
- 第二行整数Y:表示要买记事本的数量(1≤Y≤10)
- 第三行整数Z:表示要买尺的数量(1≤Z≤10)
- 第四行整数Q:表示小明手里的钱数(单位:元)
- 输出格式:
- 输出两行:
- 第一行:如果钱够买输出”Yes”,否则输出”No”
- 第二行:如果钱够买输出剩余的钱数,否则输出还差多少钱
- 样例分析:
样例1:
输入:
1
1
1
20
输出:
Yes
10
解释:需要2+5+3=10元,有20元,够买,剩10元
样例2:
输入:
1
1
1
5
输出:
No
5
解释:需要2+5+3=10元,只有5元,不够买,还差5元
- 数据范围:
- 1 ≤ X ≤ 10
- 1 ≤ Y ≤ 10
- 1 ≤ Z ≤ 10
- Q为正整数
- 解题思路:
- 读取所有输入数据
- 计算购买文具需要的总金额:t = 2x + 5y + 3z
- 将总金额t与小明的钱数q进行比较
- 根据比较结果输出对应内容
代码示例:
#include <iostream>
using namespace std;
int main() {
// 初始化变量
int x = 0, y = 0, z = 0, q = 0; // x:铅笔数量, y:记事本数量, z:尺数量, q:小明手里的钱
// 输入购买数量和金额
cin >> x >> y >> z >> q; // 读入四个数
// 计算总价:铅笔2元/支,记事本5元/本,尺3元/把
int t = x * 2 + y * 5 + z * 3; // 计算购买所需总价
// 判断钱是否足够
if (q >= t) { // 如果钱够
cout << "Yes" << endl; // 输出Yes
cout << q - t << endl; // 输出剩余的钱
} else { // 如果钱不够
cout << "No" << endl; // 输出No
cout << t - q << endl; // 输出还差多少钱
}
return 0;
}
- 代码分析:
- 使用整型变量存储所有输入数据
- 计算总价时使用正确的单价倍数
- 使用if-else结构进行判断和输出
- 注意差值计算的正确顺序
- 注意事项:
- 各个商品数量必须在1到10的范围内
- 总价计算公式必须准确
- 输出格式必须严格按要求
- 差值计算时注意判断够买还是不够买
- 关键点:
- 理解每种文具的单价和数量关系
- 正确计算购买总价
- 准确判断金额是否足够
- 输出格式的严格控制
- 差值计算的正负处理
“小朋友们,为了帮助大家更好地准备考试,我们来尝试一些模拟题,”我说,”这些题目会全面测试你们对if语句和双分支语句的理解。”
编程题:
一、选择题(5题)
第1题:下面C++代码执行后输出是( )。
int a = 7, b = 10;
if (a > b)
cout << a - b;
else
cout << b - a;
□ A. -3 □ B. 3 □ C. 17 □ D. -17
答案:B
解析: 条件a > b为假(7不大于10),所以执行else分支,输出b-a的值,即10-7=3。
第2题:下面C++代码执行后输出的是( )。
int x = 5;
if (x > 0)
cout << "Positive";
else
cout << "Non-positive";
□ A. Positive □ B. Non-positive □ C. 5 □ D. 不输出
答案:A
解析: x > 0为真(5大于0),所以输出”Positive”。
第3题:下面C++代码执行后输出的是( )。
int n = 15;
if (n % 2 == 0)
cout << "Even";
else
cout << "Odd";
□ A. Even □ B. Odd □ C. 15 □ D. 0
答案:B
解析: n % 2 == 0为假(15不是偶数),所以执行else分支,输出”Odd”。
第4题:下面C++代码执行后输出的是( )。
int a = 5, b = 3;
if (a < b)
cout << a;
else
cout << b;
cout << a + b;
□ A. 38 □ B. 58 □ C. 8 □ D. 5
答案:A
解析: a < b为假(5不小于3),所以输出b的值3,然后无条件输出a+b的值8,所以最终输出是”38″。
第5题:下面C++代码执行后输出的是( )。
int x = 10;
if (x = 5)
cout << "Equal";
else
cout << "Not equal";
□ A. Equal □ B. Not equal □ C. 10 □ D. 5
答案:A
解析: 这里有一个常见的错误:x = 5不是比较操作,而是赋值操作,将x赋值为5,然后判断表达式的值。在C++中,非零值被视为真,所以条件为真,输出”Equal”。正确的比较应该使用x == 5。
二、判断题(5题)
第1题:在if语句中,条件语句必须是布尔类型(true或false)。( )
答案:错误
解析: 在C++中,if语句的条件不限于布尔类型。任何表达式都可以作为条件,非零值被视为真,零被视为假。
第2题:if语句中的条件表达式为假时,程序将跳过if语句块,继续执行后面的代码。( )
答案:正确
解析: 当if语句的条件为假时,程序会跳过if分支中的代码块,继续执行后面的语句。
第3题:if(x = 0)和if(x == 0)的效果是相同的。( )
答案:错误
解析: if(x = 0)是将0赋值给x,然后判断表达式的值(始终为0,即假);if(x == 0)是判断x是否等于0。两者效果完全不同。
第4题:if语句可以没有else部分。( )
答案:正确
解析: if语句可以只有条件判断和if分支,没有else分支。这称为单分支if语句。
第5题:在if-else语句中,即使if分支中有return语句,else分支仍然可能被执行。( )
答案:正确
解析: 如果if语句条件不成立,则执行else分支。
三、编程题(3题)
第1题:分数等级
题目描述:输入一个0到100之间的分数,判断成绩是否及格。60分及以上为及格,60分以下为不及格。
样例输入:
75
样例输出:
及格
参考代码:
#include <iostream>
using namespace std;
int main() {
int score; // 定义整数变量score表示分数
cin >> score; // 输入一个分数
if (score >= 60) { // 判断分数是否大于等于60
cout << "及格"; // 如果大于等于60,则输出"及格"
} else { // 否则(小于60)
cout << "不及格"; // 输出"不及格"
}
return 0;
}
编程题2:计算绝对值
题目描述:输入一个整数,输出它的绝对值。
样例输入:
-10
样例输出:
10
参考代码:
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
if (n < 0) { // 判断n是否小于0
cout << -n; // 如果小于0,则输出-n
} else { // 否则(大于等于0)
cout << n; // 输出n本身
}
return 0;
}
第3题:判断正负数
题目描述:输入一个整数,判断它是正数还是非正数(零或负数)。
样例输入:
-5
样例输出:
非正数
参考代码:
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
if (n > 0) { // 判断n是否大于0
cout << "正数"; // 如果大于0,则输出"正数"
} else { // 否则(小于等于0)
cout << "非正数"; // 输出"非正数"
}
return 0;
}