第三章 · 选择结构程序设计 知识点精讲

知识点1 if 语句

选择结构的基础 —— 条件判断与分支执行

基本语法 else / else if 三目运算符 4道巩固练习
知识点1:if语句。本节讲解if语句的基本语法、else语句、else if语句、嵌套if语句和三目运算符,并配套4道巩固练习题。
知识点分析

if 语句 · 六大要点

if 语句知识点总览

1

基本语法

if(条件){语句},条件为真时执行花括号内语句

if (条件) { 语句; }
2

判断条件

任意表达式均可,非零值为真,零值为假

if (a) // a≠0 即为真
3

else 语句

与if配合,条件为假时执行else后的语句

else { 语句; }
4

else if 语句

多条件判断,可链式使用

else if (条件) { 语句; }
5

嵌套 if 语句

if语句中可包含另一个if,注意配对规则

if(a){ if(b){...} }
6

三目运算符

?: 可替代简单if语句,使代码更简洁

条件 ? 值1 : 值2
if语句共6个知识点:基本语法、判断条件、else语句、else if语句、嵌套if语句、三目运算符。
知识点精讲

if 语句 · 基础语法

知识点详解(一)

1

基本语法

if语句是最基本的选择结构,条件为判断表达式,当条件为真时执行花括号内的语句。

if (条件) { // 条件为真时执行 语句; }
2

判断条件

判断条件可以是任意表达式。非零值被视为"真",执行代码块;零值被视为"假"。

if (5) { // 5≠0,为真 printf("执行"); } if (0) { // 0,为假 // 不执行 }
3

else 语句

else与if配合使用,当if条件为时执行else后的语句块。

if (条件) { 语句A; } else { 语句B; }
💡 记忆要点
if-else 结构保证两个分支中有且仅有一个被执行。条件非零即真,零即假。
详解知识点1-3:if基本语法、判断条件(非零为真)、else语句的用法。
知识点精讲

if 语句 · 进阶用法

知识点详解(二)

4

else if 语句

用于多条件判断,可链式使用,依次检查每个条件。

if (条件1) { 语句A; } else if (条件2) { 语句B; } else { 语句C; }
5

嵌套 if 语句

if语句的代码块中可以包含另一个if语句,执行顺序取决于表达式优先级和括号位置。

if (条件1) { if (条件2) { 语句A; } else { 语句B; } }
6

三目运算符 ?:

可替代简单if语句,使代码更简洁。条件为真返回值1,否则返回值2。

条件 ? 值1 : 值2; // 等价于: if (条件) 值1; else 值2;
⚠️ 注意事项
嵌套if语句中,每个else只与最近的未配对的if配对。建议使用花括号明确配对关系,避免歧义。
详解知识点4-6:else if多条件判断、嵌套if语句、三目运算符的用法。注意else配对规则。
巩固提高

练习1 · 程序填空

判断奇偶数

📝 题目 输入一个整数,判断它是否为奇数。
练习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); } }

填空①   &num

scanf函数需要传入变量的地址,使用取地址运算符 & 获取num的内存地址。

填空②   num%2==0

if分支输出"偶数",因此条件应判断num能否被2整除。使用取余运算符 % 判断余数是否为0。

💡 知识点
scanf的&运算符、取余运算符%、if-else条件判断
练习1:判断奇偶数。填空①:&num(scanf需要地址);填空②:num%2==0(判断偶数条件)。
巩固提高

练习2 · 程序填空

判断闰年

📝 题目 输入一个年份,判断它是否为闰年。
练习2 #include<stdio.h> int main(){ int year; printf("请输入一个年份:"); scanf("%d",&year); if (year%4==0&&year%100!=0||year%400==0) { printf("%d 是闰年。\n", year); } else { printf("%d 不是闰年。\n", year); } return 0; }

填空   year%4==0&&year%100!=0||year%400==0

闰年判断条件:能被4整除且不能被100整除,或者能被400整除。

📊 逻辑分析

year%4==0 → 能被4整除

&& → 且(优先级高于||)

year%100!=0 → 不能被100整除

|| → 或

year%400==0 → 能被400整除

练习2:判断闰年。条件为 year%4==0&&year%100!=0||year%400==0。注意&&优先级高于||。
巩固提高

练习3 · 程序填空

判断三角形

📝 题目 输入三个整数,判断能否组成三角形。
练习3 #include<stdio.h> int main(){ int a, b, c; printf("请输入三个整数,以空格隔开:"); scanf("%d %d %d", &a,&b,&c); if (a+b>c&&a+c>b&&b+c>a) { printf("可以组成一个三角形。\n"); } else { printf("无法组成一个三角形。\n"); } return 0; }

填空①   &a, &b, &c

三个变量都需要传入地址,用逗号分隔。

填空②   a+b>c&&a+c>b&&b+c>a

三角形不等式定理:任意两边之和大于第三边,三个条件必须同时满足。

📐 数学原理
三角形不等式:a+b>c ∧ a+c>b ∧ b+c>a,三个条件缺一不可。
练习3:判断三角形。填空①:&a,&b,&c;填空②:a+b>c&&a+c>b&&b+c>a(三角形不等式)。
巩固提高

练习4 · 程序改错

判断点在圆的位置(改错)

📝 题目 给定点M(x,y),若在单位圆(圆心(0,0),半径1)上则key=1,圆外key=2,圆内key=0。找出程序中的两处错误并改正。
原始代码(有错) L1 #include "stdio.h" L2 #include "math.h" L3 main() L4 { float x,y,m,key; L5 printf("请输入坐标:"); L6 scanf("%f,%f",x,y); ← 错误1 L7 m=sqrt(x*x+y*y); L8 if(m!=1) ← 错误2 L9 key=1; L10 else if(m>1) L11 key=2; L12 else L13 key=0; L14 printf("key=%.0f",key);

❌ 错误1(L6行)

错误:scanf("%f,%f",x,y);
改正:scanf("%f,%f",&x,&y);
scanf需要传入变量地址,缺少 & 取地址运算符。

❌ 错误2(L8行)

错误:if(m!=1)
改正:if(m==1)
题目要求在圆上时key=1,应判断m等于1而非不等于1。

💡 考点
scanf的&运算符、if条件判断逻辑、sqrt函数的使用
练习4:判断点在圆的位置。错误1:scanf缺少&;错误2:if条件应为m==1而非m!=1。

知识点1 · 完

if 语句小结

if语句是非零为真、零为假的条件判断结构

else和else if实现多分支选择

三目运算符?:可简化简单条件赋值

scanf务必使用&取地址运算符

下一篇:知识点2 if语句嵌套 →

小结if语句知识点,引导学生进入if语句嵌套的学习。