内容正文:
4.3.1节:if语句的三种形式
C语言程序设计
电子工业出版社
理解if语句的三种基本形式(单分支、双分支、多分支)及其执行流程。
能够运用if语句解决简单的条件判断问题,编写相应的C语言程序。
培养逻辑思维能力和程序设计的严谨性,提升分析问题与解决问题的能力。
知识目标
能力目标
素养目标
01
01
01
学习目标
目录
Part 01
教学导入
Part 02
知识讲授
Part 03
师生互动
Part 04
课堂练习
Part 05
课堂小结
教学导入:生活中的选择
生活中,我们每天都面临各种选择,这些选择往往遵循特定的逻辑:
如果天气冷,就加件衣服。
如果考试及格,就可以放假。
如果饿了,就去吃饭。
核心发现:这些日常选择都遵循一个通用模式 —— “如果...就...”
教学导入:程序中的选择结构
程序设计中,同样需要根据不同的条件执行不同的操作,这就是选择结构。它允许程序根据指定的条件来决定执行哪个分支的代码,从而实现更复杂的逻辑控制。
图:选择结构基本执行流程示意图
引入主题:if语句
逻辑流向:
通过条件判断,程序如同在路口选择方向,决定执行不同的指令序列。
知识讲授
if语句的三种形式
单分支与多分支结构
多分支if语句
第一部分
单分支与多分支结构
知识讲授
知识讲授:if语句的概念
知识讲授:单分支结构的语法格式
💡 核心要点
1. 关键字 i f 后紧跟条件表达式
2. 表达式为真时,执行后续大括号内的语句序列
if(表达式)
{
语句序列;
}
程序执行流向
条件判断 → 真则执行 → 结束
知识讲授:单分支结构的执行流程
条件为真 (True)
执行 if 语句块中的后续操作
条件为假 (False)
跳过 if 语句块,直接执行后续代码
注:单分支结构仅在条件满足时才执行特定操作,不满足则保持流程继续。
知识讲授:单分支结构示例代码
程序文本【4.3】输入两个实数,按从小到大的顺序输出这两个数
#include<stdio.h>
main()
{
float x,y,t;
printf("请输入两个实数(x,y):");
scanf("%f,%f",&x,&y);
if(x>y)
{
t=x;x=y;y=t;
}
printf("%5.2f,%5.2f",x,y);
}
代码解析
1. 核心功能:该程序的目的是输入两个实数,并按从小到大的顺序输出。
2. 关键逻辑:通过 if (x > y) 语句进行判断,如果第一个数大于第二个数,则通过一个临时变量 t 来交换 x 和 y 的值。
3. 执行流程:无论输入的两个数顺序如何,经过 if 语句的判断和可能的交换操作后,x 始终小于或等于 y,最后统一输出即可得到从小到大的结果。
知识讲授:单分支结构示例代码
知识讲授:双分支结构语法格式
if(表达式)
{
语句序列1;
}
else
{
语句序列2;
}
语法逻辑解析
在 if 基础上增加 else 子句。若 if 后的表达式结果为“真”,执行语句1;若为“假”,则跳过 if 块执行 else 后的语句2。
知识讲授:双分支结构的执行流程
程序执行流向
条件判断 → “真”则执行语句1→“假”则执行语句2 → 结束
知识讲授:双分支结构示例代码
程序文本【4.4】输入一名学生的C语言成绩,并判断是否及格
#include<stdio.h>
main()
{
int x;
printf("请输入一名学生的C语言成绩:
");
scanf("%d",&x);
if(x>=60)
printf("及格
");
else
printf("不及格
");
}
代码解析
1. 核心功能:该程序用于输入一名学生的C语言成绩,并判断其是否及格。
2. 关键逻辑:使用 if (x >= 60) 进行条件判断,如果成绩大于或等于60分,执行 if 后的语句,输出“及格”;否则,执行 else 后的语句,输出“不及格”。
3. 执行流程:程序根据输入的成绩,通过双分支结构实现了两种不同情况的处理,确保了判断的完整性。
知识讲授:双分支结构示例代码
知识讲授:单分支与双分支结构对比
单分支结构
只有一个分支,满足条件执行,不满足则跳过。核心是“做或不做”的选择。
双分支结构
有两个分支,满足条件执行一个,不满足执行另一个。核心是“二选一”的执行。
核心区别:单分支是“单向选择”,双分支是“双向必选”
背诵记忆
请大家利用3分钟时间,重点背诵以下两个核心知识点:
知识点 01:单分支 if 语句
语法格式:
if (表达式) { 语句序列; }
执行流程:如果表达式的值为真(非0),则执行其后的语句序列;如果为假(0),则跳过该if语句,执行后续代码。
知识点 02:双分支 if...else 语句
语法格式:
if (表达式) { 语句序列1; } else { 语句序列2; }
执行流程:如果表达式的值为真,执行语句序列1;如果为假,执行语句序列2。
例题分析
题目要求
输入两个整数,输出较大的数。
解题思路
可以使用双分支结构,判断第一个数是否大于第二个数,如果是,输出第一个数,否则输出第二个数。
💡 提示:关键在于理解条件判断与分支流向的逻辑关系
例题分析(代码实现)
程序文本:输入两个整数,输出较大的数。
#include<stdio.h>
main() {
int a, b, max;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
if(a > b)
{ max = a;}
else
{ max = b; }
printf("较大的数是:%d
", max); }
代码逻辑解析
变量定义
定义整型变量 a、b 存储输入,max 存储结果。
输入数据
通过 scanf 函数获取用户输入的两个整数。
条件判断
使用 if-else 双分支比较大小,将较大值赋给 max。
输出结果
输出 max 的值,即程序运行的最终结果。
例题分析(运行结果)
课堂问答
Q1: if语句中表达式的值为0时,会执行哪个分支?
A: 表达式的值为0表示假,因此不会执行if后的语句,直接跳过。
Q2: else 子句是否可以单独使用?
A: 不可以,else 子句必须与 if 配对使用,不能单独出现。
课堂练习1
题目
编写程序,判断一个整数是否为偶数。
提示
偶数的判断条件是该数能被2整除,即num % 2 == 0
课堂练习1
程序文本:判断一个整数是否为偶数
#include <stdio.h>
main()
{
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num % 2 == 0)
{ printf("%d 是偶数。
", num); }
else
{ printf("%d 是奇数。
", num);}
}
课堂练习2
题目要求
输入一个字符,判断是否为大写字母。
解题提示
大写字母的 ASCII 码范围是65 ('A')到90 ('Z')。
课堂练习2
程序文本:输入一个字符,判断是否为大写字母
#include<stdio.h>
main()
{
char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
if(ch >='A'&& ch <='Z')
{ printf("%c 是大写字母
", ch); }
else
printf("%c 不是大写字母
", ch); }
}
第二部分
知识讲授
多分支if语句
知识讲授:多分支结构的概念
知识讲授:多分支if结构语法格式
if (表达式1)
{语句序列1;}
else if (表达式2)
{语句序列2;}
else if (表达式3)
{语句序列3;}
// ... 可以有多个 else if 分支
else
{语句序列n;}
1. 表达式判断
程序从上至下依次判断每个if或else if后的表达式。
2. 分支执行
一旦某个表达式的值为真(非0),则执行其对应的语句序列,然后跳出整个if-else if结构。
3. 默认分支
如果所有表达式的值都为假(0),则执行最后的else分支中的语句序列。
4. 核心特点
多分支结构是一种“单选”结构,即最多只有一个分支会被执行。
知识讲授:多分支if结构执行流程
表达式1
语句1
表达式2
语句2
表达式3
语句3
表达式n
语句n
语句n+1
……
……
假
假
假
假
真
真
真
真
知识讲授:多分支if结构示例代码
程序文本【4.5】现有一分段函数,输入任意一个x值,输出对应的y值
#include<stdio.h>
main()
{
int x,y;
printf("
请输入x的值:");
scanf("%d",&x);
if(x<3)
y=x+3;
else if(x==3)
y=x;
else
y=x-3;
printf("x=%d,y=%d",x,y);
}
知识讲授:多分支if结构示例代码
知识讲授:分支结构常见错误
else 匹配错误
逻辑陷阱:忘记每个 else 都遵循“就近原则”与最近的 if 配对,导致逻辑混乱。
条件顺序错误
执行阻断:将范围大的条件写在前面,会导致后续范围小的、更精确的条件永远无法被执行。
缺少最后的 else
逻辑漏洞:当所有 if 条件都不满足时,没有兜底的 else 处理逻辑,可能导致程序异常。
💡 核心提示:合理使用大括号明确范围,按逻辑严密性排序条件,并确保覆盖所有情况。
背诵记忆
请大家利用几分钟时间,重点背诵以下两个核心知识点:
知识点一:语法与流程
背诵多分支 if...else...if 语句的完整语法格式,理解其从上至下的条件判断逻辑及代码执行流向。
知识点二:使用注意事项
重点记忆 else 子句的匹配规则(就近原则)以及条件表达式的排列顺序对程序结果的影响。
互动环节:请尝试在脑海中默写代码结构,并思考如果改变条件顺序会发生什么?
例题分析
题目:成绩等级自动评定
输入学生成绩(0-100分),根据以下标准自动判断并输出对应的等级:
90分及以上:A(优秀)
80-89分:B(良好)
70-79分:C(中等)
60-69分:D(及格)
60分以下:E(不及格)
需求分析:根据数值所在的不同区间,执行不同的输出操作。
结构选择:多分支if-else if结构是解决此类“区间判断”问题的最佳选择。
逻辑设计:按从高到低(或低到高)顺序判断,确保每个分数被正确分类。
边界处理:利用else分支兜底,处理小于60分的情况,确保逻辑完整。
解题思路分析
核心要点:多分支结构通过连续的条件判断,能够清晰地处理多种互斥的情况,是编程中处理复杂逻辑的基础工具。
例题分析:流程图
s>= 90
优秀
s>=80
良好
s>=70
中等
s>=60
及格
不及格
假
假
假
假
真
真
真
真
例题分析:代码实现
程序文本:成绩等级自动评定
#include <stdio.h>
main()
{ int score;
printf("请输入学生成绩(0-100):");
scanf("%d", &score);
if (score >= 90)
{printf("成绩等级:A(优秀)
");}
else if (score >= 80)
{printf("成绩等级:B(良好)
");}
else if (score >= 70)
{printf("成绩等级:C(中等)
");}
else if (score >= 60)
{printf("成绩等级:D(及格)
");}
else
{printf("成绩等级:E(不及格)
");} }
例题分析:运行结果
课堂问答
Q: 多分支结构中,是否所有表达式都会被判断?
A: 否。
程序会从上到下依次判断,一旦某个表达式为真,执行对应语句后就会跳出整个if结构,不再判断后续条件。
核心概念:多分支结构具有“排他性”,遵循“自上而下,命中即止”的原则。
课堂问答
问题:最后一个else子句的作用是什么?
当所有的 if 和 else if 条件都不满足时,执行最后一个 else 子句中的语句,提供一个默认的处理方式。
课堂练习
题目:输入一个月份(1-12),判断所属的季节。
春季
3、4、5月
夏季
6、7、8月
秋季
9、10、11月
冬季
12、1、2月
思考提示:请使用条件判断语句(if-else 或 switch)来实现逻辑,注意冬季跨年度的情况。
课堂练习
程序文本:输入一个月份(1-12),判断所属的季节
#include <stdio.h>
main() {
int month;
printf("请输入月份(1-12):");
scanf("%d", &month);
if (month >= 3 && month <= 5)
{printf("%d月是春季。
", month);}
else if (month >= 6 && month <= 8)
{printf("%d月是夏季。
", month);}
else if (month >= 9 && month <= 11)
{printf("%d月是秋季。
", month);}
else if (month == 12 || month == 1 || month == 2)
{printf("%d月是冬季。
", month);}
else
{printf("输入的月份无效!
");} }
课堂练习
课堂练习
练习题目
编写程序,实现简单的计算器,支持加减乘除运算。
要求程序能够接收用户输入的两个数字和一个运算符,并输出正确的计算结果。
解题提示
输入两个数和一个运算符(+、-、*、/),根据运算符进行相应的计算。注意除数不能为零的情况处理。
课堂练习
程序文本:实现简单的计算器,支持加减乘除运算
#include<stdio.h>
main() {
float num1, num2, result;
char op;
printf("请输入表达式(例如:1+2):");
scanf("%f%c%f", &num1, &op, &num2);
if(op =='+') result = num1 + num2;
else if(op =='-') result = num1 - num2;
else if(op =='*') result = num1 * num2;
else if(op =='/')
{
if(num2 != 0) result = num1 / num2;
else{ printf("除数不能为0!
"); }
}
else{ printf("无效运算符!
");}
printf("结果:%.2f
", result);
}
课堂练习
课堂小结
单分支结构
使用 if 语句,当条件满足时执行特定代码块,否则跳过。
双分支结构
使用 if...else 语句,条件满足执行一段,不满足执行另一段。
多分支结构
使用 if...else if...else 语句,在多个条件中选择其一执行。
核心回顾:根据不同的条件判断场景,灵活选择单、双或多分支结构实现逻辑控制。
课堂小结
课后任务
作业 1:闰年判断程序
编写程序,输入一个年份,判断该年份是否为闰年,并输出判断结果。
作业 2:整数排序输出
输入三个整数,使用条件判断语句,按从大到小的顺序输出这三个数。
作业 3:成绩评价系统
使用多分支结构,根据用户输入的分数段(0-100),给出相应的评价(如优秀、良好、及格等)。
谢谢观看
THANKS
$