"选择结构程序设计"考纲要求

核心考点 - 关系运算符和关系表达式

高频考点:关系运算符使用、关系表达式求值(必考)
  • 掌握6种关系运算符:>、<、>=、<=、==、!=
  • 理解关系表达式的结果:成立为1(真),不成立为0(假)
  • 掌握关系运算符的优先级:低于算术运算符,高于赋值运算符
  • 注意区分赋值运算符=和关系运算符==

核心考点 - 逻辑运算符和逻辑表达式

高频考点:&&、||、! 运算符使用(必考)
  • 熟悉3种逻辑运算符:&&(与)、||(或)、!(非)
  • 掌握逻辑表达式的短路求值特性
  • 理解逻辑运算符优先级:! > && > ||
  • 掌握逻辑表达式与关系表达式的结合使用

核心考点 - if语句的使用

高频考点:if、if-else、if-else if结构(必考)
  • 掌握单分支if语句:满足条件执行指定代码
  • 掌握双分支if-else语句:二选一执行代码块
  • 掌握多分支if-else if语句:多条件判断
  • 理解if语句的嵌套使用规则和缩进规范

核心考点 - 条件运算符和条件表达式

高频考点:三目运算符 ?: 使用(常考)
  • 了解条件运算符格式:表达式1 ? 表达式2 : 表达式3
  • 掌握条件表达式的求值规则:表达式1为真取表达式2,否则取表达式3
  • 理解条件运算符的优先级和结合性(自右向左)
  • 知道条件表达式可替代简单的if-else语句

核心考点 - switch语句的使用

高频考点:switch-case-break结构(必考)
  • 掌握switch语句的基本结构:switch、case、break、default
  • 理解switch表达式的类型要求:整型或字符型
  • 掌握break语句的作用:跳出switch结构
  • 知道default分支的作用和位置要求

高频考点精讲

考点1:关系运算符和关系表达式(高频)

考试频次:90%考题涉及 | 分值占比:10-15分

核心要点:关系运算符用于比较运算,结果只有真(1)和假(0),是选择结构的基础。

// 关系运算符使用示例
#include <stdio.h>
int main() {
    int a = 10, b = 5;
    int res1 = a > b; // 1(真)
    int res2 = a == b; // 0(假)
    int res3 = a != b; // 1(真)
    int res4 = a + 2 > b * 3; // 12 > 15 → 0
    printf("res1=%d, res2=%d, res3=%d, res4=%d", res1, res2, res3, res4);
    return 0;
}
解题技巧:改错题中重点检查:①将==写成= ②关系运算符优先级错误 ③浮点数直接用==比较(精度问题)。

考点2:逻辑运算符和逻辑表达式(必考)

考试频次:每次必考 | 分值占比:15-20分

核心要点:逻辑运算符用于组合多个条件,短路求值特性是考试重点,需熟练掌握。

// 逻辑运算符使用示例
#include <stdio.h>
int main() {
    int a = 10, b = 5, c = 0;
    int res1 = (a > b) && (b > c); // 1&&1 → 1
    int res2 = (a < b) || (b > c); // 0||1 → 1
    int res3 = !(a > b); // !1 → 0
    // 短路求值:&&左边为假,右边不执行
    int res4 = (a < b) && (++c > 0); // c仍为0
    printf("res1=%d, res2=%d, res3=%d, c=%d", res1, res2, res3, c);
    return 0;
}
解题技巧:&&运算只要有一个条件为假结果就为假;||运算只要有一个条件为真结果就为真;!运算取反,非0即1,非1即0。

考点3:if语句的使用(必考)

考试频次:每次必考 | 分值占比:20-25分

核心要点:if语句是选择结构的核心,三种结构(单分支、双分支、多分支)都是考试重点。

// if语句三种结构示例
#include <stdio.h>
int main() {
    int score = 85;

    // 1. 单分支if
    if (score >= 60) {
        printf("成绩合格\n");
    }

    // 2. 双分支if-else
    if (score >= 90) {
        printf("优秀\n");
    } else {
        printf("非优秀\n");
    }

    // 3. 多分支if-else if
    if (score >= 90) {
        printf("A级\n");
    } else if (score >= 80) {
        printf("B级\n");
    } else if (score >= 70) {
        printf("C级\n");
    } else {
        printf("D级\n");
    }
    return 0;
}
解题技巧:if语句条件表达式必须加括号;代码块建议加{},即使只有一行;多分支判断注意条件顺序,避免逻辑错误。

考点4:条件运算符和条件表达式(常考)

考试频次:70%考题涉及 | 分值占比:10-15分

核心要点:条件运算符是C语言中唯一的三目运算符,可简化简单的if-else语句。

// 条件运算符使用示例
#include <stdio.h>
int main() {
    int a = 10, b = 20, max;

    // 传统if-else方式
    if (a > b) {
        max = a;
    } else {
        max = b;
    }

    // 条件运算符简化
    max = (a > b) ? a : b; // 等价于上面的if-else
    printf("最大值:%d\n", max);

    // 嵌套条件表达式
    int x = 5, y = 8, z = 3;
    int max3 = (x > y) ? (x > z ? x : z) : (y > z ? y : z);
    printf("三个数最大值:%d\n", max3);
    return 0;
}
解题技巧:条件表达式格式:条件?值1:值2;优先级低于算术运算符,建议加括号;嵌套使用时注意结合方向(自右向左)。

考点5:switch语句的使用(必考)

考试频次:每次必考 | 分值占比:15-20分

核心要点:switch语句适用于多分支等值判断,break语句和default分支的使用是考试重点。

// switch语句标准用法
#include <stdio.h>
int main() {
    int grade = 2;

    switch (grade) {
        case 1:
            printf("优秀\n");
            break; // 跳出switch
        case 2:
            printf("良好\n");
            break;
        case 3:
            printf("及格\n");
            break;
        default: // 默认分支
            printf("不及格\n");
            break;
    }
    return 0;
}
解题技巧:switch表达式只能是整型/字符型;case后必须是常量表达式;每个case分支末尾必须加break,否则会穿透到下一个case;default分支可选,建议加上。

实战解题训练

例题1:关系表达式与逻辑表达式求值 中等

考点定位:关系运算符 + 逻辑运算符(考试重点题型)

题目:已知int a=5, b=3, c=8; 计算以下表达式的值(分值15分)

// 表达式求值
1. a > b && c > a
2. a + b > c || b < c
3. !(a == b) && (c - b < a)
4. (a > b) == (c > 10)

答案与解析

  1. 1 && 1 = 1(a>b为真,c>a为真,逻辑与结果为真)
  2. 8>8为假 || 3<8为真 = 1(逻辑或只要一个为真结果就为真)
  3. !0 && 5<5为假 = 1 && 0 = 0(!运算取反,再做逻辑与)
  4. 1 == 0 = 0(关系表达式的结果参与比较)
解题技巧:先计算算术表达式,再计算关系表达式,最后计算逻辑表达式;注意运算符优先级和结合性。

例题2:if语句程序改错 简单

考点定位:if语句语法规范(考试高频题型)

题目:找出以下程序中的错误并改正(分值10分)

// 错误程序:判断成绩是否合格
#include <stdio.h>
int main() {
    int score = 75;
    if score >= 60
    printf("成绩合格");
    else
    printf("成绩不合格")
    return 0;
}

错误分析与改正

  1. if后条件表达式缺少括号 → 修正:if (score >= 60)
  2. else对应的printf语句末尾缺少分号 → 修正:printf("成绩不合格");
  3. (建议)代码块添加{},增强可读性 → if (score >= 60) { ... } else { ... }
解题技巧:if语句改错题优先检查:①条件表达式括号 ②分号 ③{}匹配 ④else是否单独成行。

例题3:switch语句编程题 较难

考点定位:switch-case-break结构(考试压轴题型,分值20分)

题目:编写程序,输入1-4的数字,输出对应的季节(1-春季,2-夏季,3-秋季,4-冬季,其他-输入错误)。

参考答案

// 程序功能:根据数字输出季节
#include <stdio.h>
int main() {
    int season;
    // 输入数字
    printf("请输入1-4的数字:");
    scanf("%d", &season);

    // switch多分支判断
    switch (season) {
        case 1:
            printf("春季\n");
            break;
        case 2:
            printf("夏季\n");
            break;
        case 3:
            printf("秋季\n");
            break;
        case 4:
            printf("冬季\n");
            break;
        default:
            printf("输入错误!\n");
            break;
    }
    return 0;
}
解题技巧:switch语句编程题四步法:①定义变量 ②输入数据 ③switch多分支判断(每个case加break) ④添加default分支;注意case后是常量,break不能省略。

选择结构考点闯关游戏(满分100分)

当前关卡: 1/10
得分: 0/100
1关 - 高频考点

C语言中表示"等于"的关系运算符是?

恭喜你完成所有考点关卡!

你的最终得分是: 0/100

得分等级:

你已经掌握了选择结构程序设计的核心考点!