if 语句 和 switch 语句
C语⾔是结构化的程序设计语⾔。
这⾥的结构指的是顺序结构、选择结构、循环结构。
下面我们讲的是分支结构。
1.if 语句👩🏻👩🏻👩🏻
最简形式、一般形式、嵌套if、复杂逻辑判断举例、if…else注意事项。
2.switch 语句👶🏻👶🏻👶🏻
switch语法形式、case与default的顺序问题。
3.学成后:👩🏻🦲👩🏻🦲👩🏻🦲
一、if 语句详解
1. 最简形式
if(表达式)
语句;
表达式为真,则执行语句,表达式为假,则不执行语句。
例1:(最简形式)输⼊⼀个整数,判断是否为奇数。
#include <stdio.h>
int main()
{
int num = 0;//初始化
scanf("%d", &num);//输入一个整数
if(num % 2 == 1)
//判断if的表达式是否为真,判断余数是否为1
//即num除以2,再取模(取余数),%是取模的意思
printf("%d 是奇数\n", num);//执行这条语句
return 0;
}
❤🔆在C语⾔中,0为假,⾮0表⽰真,
也就是表达式的结果如果是0,则语句不执⾏,
表达式的结果如果不是0,则语句执⾏。
2. 一般形式
if(表达式)
语句1;
else
语句2;
例2:(一般形式)输入一个整数,判断它是奇数还是偶数。
#include <stdio.h>
int main()
{
int num = 0;//初始化
scanf("%d", &num);//输入一个数
if (num % 2 == 1)//判断括号里面的表达式是否为真
//即表达式:num除以2,再取模(取余数)
//余数=1,表达式成立则为真
printf("%d 是奇数\n", num);//若表达式为真,则输出打印num是奇数。
else//否则
printf("%d 是偶数\n", num);//表达式为假,则输出打印num是偶数
return 0;
}
注意:如果我们要if语句同时控制2条及以上语句,怎么办呢?
那就要使⽤ {} 将代码括起来,else 后也可以跟上⼤括号。
3. 嵌套if
在 if else 语句中
else 可以与另⼀个 if 语句连⽤,构成多重判断。
例3:(嵌套if)要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num == 0)//判断整数是否为零。
printf("输⼊的数字是0\n");
else if(num > 0)
//若不为零,再用if来再次判断整数是否大于零
//这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
printf("输⼊的数字是正数\n");//大于零则执行这条语句
else
printf("输⼊的数字是负数\n");//否则就只剩一种情况:小于零
return 0;
}
4. 复杂逻辑判断
例4:
输⼊⼀个⼈的年龄
如果年龄<18岁,打印"少年"
如果年龄在18岁⾄44岁打印"⻘年"
如果年龄在45岁⾄59岁打印"中⽼年"
如果年龄在60岁⾄89岁打印"⽼年"
如果90岁以上打印"⽼寿星"
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)//判断年龄是否小于18
printf("少年\n");//小于18则执行这条语句
else//若大于等于18
{
if (age <= 44)//判断年龄是否在18至44之间
{
printf("青年\n");//在18至44之间则执行这条语句
}
else//若大于44
{
if (age <= 59)//判断年龄是否在45至59之间
printf("中老年\n");//在45至59之间则执行这条语句
else//若大于59
{
if (age <= 89)//判断年龄是否在60至89之间
printf("老年\n");//在60至89之间则执行这条语句
else//若大于89
printf("老寿星\n");//则在90岁及以上
}
}
}
return 0;
}
5. if…else 注意:
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
如图所示:
在没有{}的情况下,else与上面最近的 if 匹配。
即是在第一个if里面的嵌套if…else。两个图的代码代表一个意思。
二、switch语句详解
switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。
1. 语法形式
根据表达式 expression 不同的值,
执⾏相应的 case 分⽀。
如果找不到对应的值,就执⾏ default 分⽀。
2. 使用case注意事项:
1.case必须是整型表达式分支。
2.case 和后边的数字之间必须有空格。
3.每⼀个case语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
switch (expression)//必须是整型表达式
{
case value1:
statement;
break;
case value2:
statement;
break;
default:
statement
//case中都没有对应值,就默认default
}
例1:输⼊⼀个1~7的数字,打印对应的星期⼏
输⼊:1 输出:星期⼀
输⼊:2 输出:星期⼆
输⼊:3 输出:星期三
输⼊:4 输出:星期四
输⼊:5 输出:星期五
输⼊:6 输出:星期六
输⼊:7 输出:星期天
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)//day是一个确定的数
{
case 1:
//若day是1,执行下面语句
printf("星期⼀\n");
break;//停止,跳出switch语句
case 2:
//若day是2,执行下面语句
printf("星期⼆\n");
break;//停止,跳出switch语句
case 3:
//若day是3,执行下面语句
printf("星期三\n");
break; //停止,跳出switch语句
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default:
//不是星期1-7,则默认是输入错误
printf("输入错误\n");
break;
}
return 0;
}
题目变化:
星期1-5 输出工作日,星期6-7 输出休息日.
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)//day是一个确定的数
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");//星期1-5都是工作日
break;
case 6:
case 7:
printf("休息日\n");//星期六星期天是休息日
break;
default:
//不是星期1-7,则默认是输入错误
printf("输入错误\n");
break;
}
return 0;
}
3. switch语句中的case和default的顺序问题
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。不过我们通常是把 default 语句放在最后处理。