第4章 选择结构程序设计
if语句(if单分支、if-else双分支、else-if嵌套);switch语句;选择结构的嵌套;选择结构程序设计方法。
1.基本要求
(1)理解三种if语句的语法结构,掌握使用if语句设计选择结构程序的方法。
(2)理解switch语句的语法结构,掌握使用switch语句设计多分支选择结构程序的方法。
(3)了解嵌套选择结构语句的语法表示,会分析嵌套选择结构程序的执行过程。
(4)会正确分析选择结构程序的执行过程,会合理选用语句形式设计正确的选择结构程序。
2.重点、难点
重点:if语句、switch语。
难点:如何利用选择结构进行程序设计。
一、程序的选择结构
选择结构
单分支控制的 if 条件语句
双分支控制的if-else条件语句
多分支控制的if-else-if条件语句
多路选择的switch语句
1. if 语句
语句形式
if (表达式P)
单条语句A;
为T执行F则跳出
注意:语句A可以是单条语句,也可以是用一对{ }括起来的复合语句。
1.单分之语句
//输入一个数,输入正确,返回。
#include "stdio.h"
int main(){
int x; // 创建一个int类型的变量
scanf("%d",&x);
if(x==1)
printf("输入正确");
}
//例:输入两个实数,按代数值由小到大的顺序输出这两个数。
//只需要做一次比较,然后进行一次交换即可用if语句实现条件判断关键是怎样实现两个变量值的互换
#include "stdio.h"
int main(){
int a,b,c; // 创建一个int类型的变量
printf("请输入两个数\n");
scanf("%d,%d",&a,&b);
if(a>b)
{
c=a;
a=b;
b=c;
}
printf("%d,%d",a,b);
}
2.双分支控制的if条件语句
语句形式
if(表达式P)
语句A;
else
语句B;
注意:语句A、B可以是单条语句,也可以是用一对{}括起来的复合语句。
//例:输入密码,输入对了返回密码正确,输入错了显示密码
#include "stdio.h"
int main(){
int x; // 创建一个int类型的变量
printf("请输入密码!\n"); //屏幕显示请输入密码
scanf("%d",&x); //输入一个十进制整数
if(x==123) //判断输入的是否为123
printf("密码输入正确!"); //是返回正确
else
printf("密码输入错误"); //不是返回错误
return 0;
}
3.多分支控制的if条件语句
语句形式
if(表达式P) {
一条或多条语句A
}
else if(表达式P2){
一条或多条语句A2
}
else if(表达式Pn){
一条或多条语句An
}
else {
一条或多条语句An+1
}
//猜数字,猜中了,输出猜对了,否则输入大了,或者小了
#include "stdio.h"
int main(){
printf("请输入一个数字\n");
int a; // 创建一个int类型的变量
scanf("%d",&a);
if(a==123)
printf("答对了");
else if(a<123)
printf("猜小了");
else
printf("猜大了");
}
if语句的一般形式
if (表达式) 语句1
[else语句2]
关系表达式 逻辑表达式
数值表达式 任意类型表达式
方括号内的部分为可选的
简单的语句复合语句另一个if语句等
4.选择结构的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套
if( )
if()语句1
else 语句2
else
if() 语句3
else 语句4
在if语句中又包含一个或多个if语句称为if语句的嵌套
if ()
{
if ()语句1
}
else语句2
//{}限定了内嵌if范围
二义性:
if (表达式1)
if(表达式2) 语句序列2;
else
语句序列3;
if (表达式1)
if(表达式2)语句序列2;
else
语句序列
C语言规定: else总是与它前面最近的且未曾配对的if配对。
#include "stdio.h"
void main(){
int a=1,b=-1;
if(a>0) //成立向下执行
if(b>0)a++; //不成立
else
a--; //执行 1-- =0
printf("a=%d\n",a);
}
5·多路选择的switch语句
switch语句用来实现多分支选择结构
学生成绩分类
85分以上为'A’等
70~84分为'B'等
60~69分为'℃'等
switch语句的作用是根据表达式的值,使流程跳转到不同的语句
switch语句的一般形式:
switch (表达式){
case 常量1:语句1
case 常量2:语句2
case 常量n:语句n
[default :语句n+1]
}
例:要求按照考试成绩的等级输出百分制分数段, A等为85分以上, B等为70~84分C等为60~69分, D等为60分以下。成绩的等级由键盘输入。
#include "stdio.h"
int main()
{
char grade; //创建字符型变量
printf("请输入你的成绩!\n"); //屏幕显示
scanf("c",&grade); //获取输入的字符
switch (grade) { //switch
case 'A':printf("85~100\n");break;//输入A会输出的语句
case 'B':printf("70~84\n");break;
case 'C':printf("60~69\n");break;
case 'D':printf("<60\n");break;
default:printf("你输入的成绩无效!");
}
return 0;
}
break的重要性 如果没有break,当你输入A的时候,他就会把以下的语句全部执行;
#include "stdio.h"
int main()
{
char grade; //创建字符型变量
printf("请输入你的成绩!\n"); //屏幕显示
scanf("c",&grade); //获取输入的字符
switch (grade) { //switch
case 'A':printf("85~100\n");
case 'B':printf("70~84\n");
case 'C':printf("60~69\n");
case 'D':printf("<60\n");
default:printf("你输入的成绩无效!");
}
return 0;
}
考点梳理