【C语言】第三期——判断语句
目录
前言
1 if选择语句
1.1 基本写法
1.1.1 单分支
1.1.1.1 简写
1.1.2 双分支
1.1.3 多分支
1.2 if嵌套
1.3 if常见错误
1.4 案例:求两个数的最大值
2 switch case语句
2.1 基本格式
2.2 switch穿透
3 三元运算
4 if选择语句与三元运算符的应用示例
if else
三元运算
前言
在前几章的学习中,所编写的程序都是按照顺序结构进行设计。
在顺序结构中,程序从上到下逐行执行,中间没有任何跳跃,每行语句都会被执行到。
虽然采用顺序结构已经可以满足编程需求,但实际上,在很多情况下,我们期望当满足某个条件时才执行某段程序,否则就不执行。
如:
(1)如果学生的成绩大于等于 60 分,就输出“及格”,否则就输出“不及格”;
(2)判断一个人的性别,如果是男生,就输出“男”,否则就输出“女”;
(3)如果年龄大于等于18 岁,就输出“成年人”,否则就输出“未成年人”。
对于这样的需求,采用顺序结构显然是不行的,因为代码即使出现在程序中,也有可能不会被执行。
为了解决这类问题,C 语言提供了选择结构,也被称为分支结构。
采用选择结构设计的程序在执行时,并不是从上到下逐行执行,而是根据不同的条件执行不同的代码。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
C 语言为实现选择结构提供了三种语句:
(1)if选择语句;
(2) switch 选择语句。
(3)? : 运算符 条件运算符 ? :(可以用来替代 if...else 语句)
1 if选择语句
1.1 基本写法
if语句的基本格式
if(表达式){
语句块
}
if else的第二种格式
if(表达式){
语句1
}else{
语句2
}
if else语句的第三种格式
if(表达式1){
语句1
}else if(表达式2){
语句2
}else if(表达式3){
语句3
}else{
语句4
}
1.1.1 单分支
需求1:判断一个人的年龄,如果大于18打印成年人,否则不输出任何内容
#include <stdio.h>
int main()
{
int age = 22;
if (age > 18)
{
printf(" 年龄大于 18\n");
}
return 0;
}
1.1.1.1 简写
#include <stdio.h>
int main()
{
int age = 22;
if (age > 18)
printf(" 年龄大于 18\n");
return 0;
}
提示:if 表达式里面只有一行语句的时候可以把{}去掉,但是我们写代码的时候推荐加上{}
1.1.2 双分支
需求2:判断一个人的年龄,如果大于18打印成年人,否则输出未成年
#include<stdio.h>
int main()
{
int age = 10;
if (age > 18)
{
printf(" 成年人 \n");
}
else
{
printf(" 未成年人 ");
}
return 0;
}
1.1.3 多分支
需求3:判断一个学生的成绩 如果大于90显示优秀、如果大于80显示良好、如果大于等于60显示及格、如果小于60显示不及格
#include <stdio.h>
int main()
{
int score = 88;
if (score > 90)
{
printf("优秀");
}
else if (score > 80)
{
printf("良好");
}
else if (score >= 60)
{
printf("及格");
}
else
{
printf("不及格");
}
return 0;
}
1.2 if嵌套
#include <stdio.h>
int main()
{
int age = 35;
if (age > 18) // 外层 if 语句
{
printf("age 大于 18");
if (age > 30) // 内层 if 语句
{
printf("age 大于 30");
}
}
return 0;
}
1.3 if常见错误
注意 条件判断的==号
#include <stdio.h>
int main()
{
int score = 100;
if (score == 100)
{
printf("%s", "满分");
}
return 0;
}
1.4 案例:求两个数的最大值
#include <stdio.h>
int main(void)
{
int a = 34;
int b = 65;
int max;
if (a > b)
{
max = a;
}
else
{
max = b;
}
printf("a和b的最大值是:%d", max);
return 0;
}
2 switch case语句
上面我们给大家介绍了处理多分支结构的 if·..else if··else 语句。
在实际应用过程中,当分支比较多时, if 语句会变得冗长且难以阅读。
为了解决这个问题,C 语言提供了另外一种多分支处理语句: switch 语句。
注意:所有的switch语句都可以使用if else来替代,但是不是所有的if else都可以使用switch 来替代。
2.1 基本格式
switch(表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
……
case 常量表达式n:
语句n;
break;
default: 语句n+1;
}
案例:使用switch判断一个人的性别
#include <stdio.h>
int main()
{
int sex = 1;
switch (sex)
{
case 1:
printf("%s", "性别是男");
break;
case 2:
printf("%s", "性别是女");
break;
default:
printf("%s", "传入参数错误");
break;
}
return 0;
}
2.2 switch穿透
需求:输入一个月份判断这个月属于什么季节,使用switch完成
#include <stdio.h>
int main(void)
{
int month = 8;
switch (month)
{
case 1:
printf(" 冬天 ");
break;
case 2:
printf(" 冬天 ");
break;
case 12:
printf(" 冬天 ");
break;
case 3:
printf(" 春天 ");
break;
case 4:
printf(" 春天 ");
break;
case 5:
printf(" 春天 ");
break;
case 6:
printf("夏天");
break;
case 7:
printf(" 夏天 ");
break;
case 8:
printf(" 夏天 ");
break;
case 9:
printf("夏天");
break;
case 10:
printf(" 夏天 ");
break;
case 11:
printf(" 夏天 ");
break;
default:
printf(" 月份错误 ");
}
return 0;
}
可以使用switch穿透功能对上面代码进行优化
#include <stdio.h> int main(void) {
int month = 8;
switch (month)
{
case 12:
case 1:
case 2:
printf(" 冬天 ");
break;
case 3:
case 4:
case 5:
printf(" 春天 ");
break;
case 6:
case 7:
case 8:
printf(" 夏天 ");
break;
case 9:
case 10:
case 11:
printf(" 夏天 ");
break;
default:
printf(" 月份错误 ");
break;
return 0;
}
3 三元运算
条件运算符又被称为三元运算符,格式如下:
表达式1?表达式2:表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。
4 if选择语句与三元运算符的应用示例
求两个数的最大值
if else
#include <stdio.h>
int main(void)
{
int a = 34;
int b = 65;
int max;
if (a > b)
{
max = a;
}
else
{
max = b;
}
printf("a和b的最大值是:%d", max);
return 0;
}
三元运算
#include <stdio.h>
int main(void)
{
int a = 34;
int b = 65;
int max = a > b ? a : b;
printf("a和b的最大值是:%d", max);
return 0;
}