C语言条件语句学习课件

课程目标

本课程将帮助您掌握C语言中的条件语句,包括:

  • if语句的基本语法和使用方法
  • if...else语句的结构和应用场景
  • 条件语句的常见错误和注意事项

高考分值

21年 15分

22年 35分

23年 20分

24年 30分

C语言条件语句概述

if语句

if语句的一般形式

if (表达式) 语句;

执行过程:先对"表达式"进行求值,如果计算结果为非0(为真),则执行其后的"语句",否则跳过其后的"语句"。

关于表达式

"表达式"可以为任何类型的表达式:

  • 算术表达式:-3 + 'D' → 值65 → 结果为"真"
  • 赋值表达式:a = 0 → 值0 → 结果为"假"
  • 赋值表达式:a = 5 → 值5 → 结果为"真"

关于语句

"语句"可以是一条简单语句,也可以是用花括号将几条语句括起来的一个复合语句。

// 简单语句
if (x < y) x = x + 1;

// 复合语句
if (x < y) {
    x = x + 1;
    y = y + 1;
}

例3-1:成绩判断

#include <stdio.h>
main()
{
    int score;
    printf("输入一个成绩:");
    scanf("%d",&score);
    if (score >= 60) printf("通过!\n");
}

运行时,若输入65,则输出"通过!";若输入56,则无输出。

if语句练习题

1. 以下关于if语句的描述中,正确的是()

A. if语句的条件表达式不能用括号括起来

B. if语句的条件表达式只能使用关系表达式

C. if语句的条件表达式值为0时执行其后语句

D. if语句的条件表达式值为非0时执行其后语句

答案:D

解析:if语句的条件表达式可以是任意表达式,当表达式值为非0(真)时执行其后语句,为0(假)时不执行。条件表达式必须用括号括起来,但这不是if语句特有的要求。

2. 下列代码段执行后,变量x的值是()

int x = 5;
if (x = 0) x = 10;
else x = 20;

A. 5

B. 0

C. 10

D. 20

答案:D

解析:注意条件表达式是"x = 0",这是一个赋值表达式,将0赋值给x,然后表达式的值为0(假),所以执行else分支,x被赋值为20。

3. 以下代码的输出结果是()

int a = 10, b = 20;
if (a > b)
    printf("A");
printf("B");

A. A

B. B

C. AB

D. 无输出

答案:B

解析:因为a=10,b=20,条件a>b不成立,所以不执行printf("A"),但会继续执行后面的printf("B")。

if...else语句

if...else语句的一般形式

if (表达式)
    语句1;
else
    语句2;

执行过程:如果"表达式"计算结果值为真,则执行语句1;否则执行语句2。

注意点

在if后面的"语句1"部分和else后面的"语句2"部分如果有几条语句,则应该用花括号"{}"将这几条语句括起来,成为一条复合语句。

错误示例:

if (x > y)
    printf("较大者为: %d", x);
    x = x + 1; // 这条语句不在if作用范围内
else
    printf("较大者为: %d", y);

正确写法:

if (x > y) {
    printf("较大者为: %d", x);
    x = x + 1;
} else {
    printf("较大者为: %d", y);
}

例3-2:成绩判断(改进版)

#include <stdio.h>
main()
{
    int score;
    printf("输入一个成绩:");
    scanf("%d",&score);
    if (score >= 60) printf("通过!\n");
    else printf("未通过,继续努力!\n");
}

运行时,若输入92,则输出"通过!";若输入57,则输出"未通过,继续努力!"。

if...else语句练习题

1. 下列关于if...else语句的描述中,错误的是()

A. else总是与它上面最近的if配对

B. if和else后面的语句可以是复合语句

C. if和else后面的语句必须用花括号括起来

D. 如果if和else后面有多条语句,必须用花括号括起来

答案:C

解析:if和else后面如果只有一条语句,可以不用花括号括起来;但如果有多条语句,必须用花括号括起来形成复合语句。

2. 以下代码段执行后,变量a的值是()

int a = 1, b = 2, c = 3;
if (a > b)
    a = b;
    b = c;
else
    c = a;
    a = c;

A. 编译错误

B. 1

C. 2

D. 3

答案:A

解析:这段代码有语法错误。if后面有两条语句(a=b;和b=c;),但没有用花括号括起来,导致else找不到匹配的if。

3. 下列代码的输出结果是()

int x = 10;
if (x > 10)
    printf("A");
else if (x > 5)
    printf("B");
else
    printf("C");

A. A

B. B

C. C

D. 无输出

答案:B

解析:x=10,第一个条件x>10不成立,检查第二个条件x>5成立,因此输出"B"。

综合练习题

综合练习

1. 编写程序,输入一个整数,判断它是奇数还是偶数。

参考代码:

#include <stdio.h>
int main() {
    int num;
    printf("请输入一个整数: ");
    scanf("%d", &num);
    if (num % 2 == 0) {
        printf("%d是偶数\n", num);
    } else {
        printf("%d是奇数\n", num);
    }
    return 0;
}

2. 编写程序,输入三个整数,找出其中的最大值。

参考代码:

#include <stdio.h>
int main() {
    int a, b, c, max;
    printf("请输入三个整数: ");
    scanf("%d%d%d", &a, &b, &c);
    max = a;
    if (b > max) max = b;
    if (c > max) max = c;
    printf("最大值是: %d\n", max);
    return 0;
}

3. 编写程序,输入一个成绩,根据以下规则输出等级:

90分以上:优秀

80-89分:良好

70-79分:中等

60-69分:及格

60分以下:不及格

参考代码:

#include <stdio.h>
int main() {
    int score;
    printf("请输入成绩: ");
    scanf("%d", &score);
    if (score >= 90) {
        printf("优秀\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 70) {
        printf("中等\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }
    return 0;
}

总结与易错点

知识点总结

  • if语句用于条件判断,当条件为真时执行相应代码
  • if...else语句提供两个分支,条件为真时执行if分支,为假时执行else分支
  • 条件表达式可以是任意表达式,非0值为真,0值为假
  • 如果条件分支需要执行多条语句,必须使用花括号{}形成复合语句
  • else总是与它上面最近的未匹配的if配对

易错点

  • 将"if (a == b)"写成"if (a = b)",这是一个常见的错误,后者是赋值操作
  • 忘记使用花括号包含多条语句,导致只有第一条语句属于条件分支
  • 在条件表达式后误加分号,如"if (a > b);"
  • 错误理解else的匹配规则,特别是在嵌套if语句中
  • 使用浮点数直接进行相等比较,由于精度问题可能导致意外结果

编程建议

  • 即使只有一条语句,也使用花括号,提高代码可读性和可维护性
  • 使用适当的缩进,使代码结构清晰
  • 对于复杂的条件判断,可以添加注释说明
  • 测试边界条件,确保程序在各种情况下都能正确工作