返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 10, 主题|小节 6
进行中

10.5 真题讲解

2025年9月22日
课 进展
0% 完成

“小朋友们,接下来让我们看一些真实的考试题目,”我说,”这些题目会测试你们对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. 题目要求:
  • 题目名称:温度转换
  • 时间限制:1.0s
  • 内存限制:512.0MB
  1. 问题描述:
  • 小明要给学习了开氏温度,现在要将其转换为摄氏温度和华氏温度
  • 给定转换公式:
    • C = K – 273.15 (开氏度转摄氏度)
    • F = C × 1.8 + 32 (摄氏度转华氏度)
  • 需要判断温度是否过高(华氏温度超过212度)
  1. 输入格式:
  • 一行,一个整数K,表示开氏温度
  1. 输出格式:
  • 一行,若输入开氏温度对应的华氏温度高于212,输出”Temperature is too high!”
  • 否则,输出两个由空格分隔的数值,分别表示摄氏温度和华氏温度,保留两位小数
  1. 样例分析:
样例1输入:
41.80
输出:
Temperature is too high!

样例2输入:
173.56
输出:
-99.59 -147.26
  1. 数据范围:
  • 0 < K < 105
  1. 解题思路:
  • 先将开氏温度转换为摄氏温度
  • 再将摄氏温度转换为华氏温度
  • 判断华氏温度是否超过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;
}

  1. 代码分析:
  • 使用double类型存储温度值,保证精度
  • scanf和printf使用%lf处理double类型
  • %.2f控制输出保留2位小数
  • 使用if-else结构进行温度判断
  1. 注意事项:
  • 温度转换公式的准确使用
  • 输出格式的严格控制
  • 浮点数的精度处理
  • 数值范围的检查
  1. 关键点:
  • 理解三种温度单位的转换关系
  • 正确处理浮点数输入输出
  • 判断条件的设置(F > 212)
  • 输出格式的控制(空格、小数位数)

第2题

题目解析:

  1. 题目要求:
  • 试题编号:2023-09-23-01-C-01
  • 试题名称:买文具
  • 时间限制:1.0s
  • 内存限制:128.0MB
  1. 问题描述:
  • 小明去文具店选购文具
  • 商品单价:
    • 铅笔2元一支
    • 记事本5元一本
    • 尺3元一把
  • 需要判断小明的钱是否足够购买所需文具
  1. 输入格式:
  • 共四行,每行一个正整数:
    • 第一行整数X:表示要买铅笔的数量(1≤X≤10)
    • 第二行整数Y:表示要买记事本的数量(1≤Y≤10)
    • 第三行整数Z:表示要买尺的数量(1≤Z≤10)
    • 第四行整数Q:表示小明手里的钱数(单位:元)
  1. 输出格式:
  • 输出两行:
    • 第一行:如果钱够买输出”Yes”,否则输出”No”
    • 第二行:如果钱够买输出剩余的钱数,否则输出还差多少钱
  1. 样例分析:
样例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. 数据范围:
  • 1 ≤ X ≤ 10
  • 1 ≤ Y ≤ 10
  • 1 ≤ Z ≤ 10
  • Q为正整数
  1. 解题思路:
  • 读取所有输入数据
  • 计算购买文具需要的总金额: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;
}
  1. 代码分析:
  • 使用整型变量存储所有输入数据
  • 计算总价时使用正确的单价倍数
  • 使用if-else结构进行判断和输出
  • 注意差值计算的正确顺序
  1. 注意事项:
  • 各个商品数量必须在1到10的范围内
  • 总价计算公式必须准确
  • 输出格式必须严格按要求
  • 差值计算时注意判断够买还是不够买
  1. 关键点:
  • 理解每种文具的单价和数量关系
  • 正确计算购买总价
  • 准确判断金额是否足够
  • 输出格式的严格控制
  • 差值计算的正负处理

“小朋友们,为了帮助大家更好地准备考试,我们来尝试一些模拟题,”我说,”这些题目会全面测试你们对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;
}