一:if语句
(1)单向分支
基本语法
if (条件表达式)
{
执行代码块;
}
说明:当条件表达式为真(非0时,就会执行代码块语句,条件表达式为假(0)时,不会执行代码块。
(2)双向分支
基本语法
if (条件表达式)
{
执行代码块1;
}
else
{
执行代码块2;
}
说明:当条件表达式成立(为真),执行代码块1,否则执行代码块2。
案列:输入年龄,如果大于18岁,则输出 “你年龄大于18,要对自己的行为负责!”,否则,输出”你的年龄不大这次放过你了。”
#include <stdio.h>
int main()
{
int age = 0;
printf("请输入年龄");
scanf("%d", &age);
if (age > 18)
{
printf("\n你年龄大于18,要对自己的行为负责!");
}
else
{
printf("\n你的年龄不大,这次放过你了");
}
return 0;
}
(3)多向分支 else if
基本语法
if (条件表达式1)
{
执行代码块1;
}
else if (条件表达式2)
{
执行代码块2;
}
...
else
{
执行代码块n;
}
说明:当条件表达式1成立时,即执行代码块1,如果表达式1不成立,才去判断表达式2是否成立,如果表达式2成立,就执行代码块2,以此类推如果所有的表达式都不成立,则执行else 的代码块。
案列:张三参加考试,他和父亲达成协议,如果成绩不到 60 分没有任何奖励;如果成绩 60分(含)到80分,奖励一个肉夹馍;如果成绩80分(含)到90分,奖励一个 ipad;如果成绩90分及以上,奖励一部华为mate60 pro。
#include <stdio.h>
int main()
{
// 定义变量记录成绩
double score;
printf("请输入你的成绩:");
scanf("%lf", &score);
// 根据成绩进行判断
if (score < 60)
{
printf("你的成绩不及格,没有任何奖励!");
}
else if (score < 80)
{
printf("奖励你一个肉夹馍");
}
else if (score < 90)
{
printf("奖励你一个ipad");
}
else if (score <= 100)
{
printf("奖励你一部华为 mate60 pro,遥遥领先!");
}
else
{
printf("输入无效!");
}
return 0;
}
二:多向分支 switch
基本语法
switch (表达式)
{
case 常量值1:
语句块1;
break;
case 常量值2:
语句块2;
break;
case 常量值n:
语句块n;
break;
default:
语句块n + 1;
}
- switch后面表达式的值必须是一个整型(char、short, int, long等)或枚举类型。
- case后面的值必须是常量,而不能是变量。
- default是可选的,当没有匹配的case时,执行default。
- break语句可以使程序跳出switch语句块,如果没有break,会执行下一个case 语句块,直到遇到break或者执行到switch结尾,这个现象称为穿透。
案列:编写程序,根据输入的月份和年份,求出该月的天数(1-12),就是需要考虑闰年(2月份 29)和平年(2月份 28)。
#include <stdio.h>
//(4)编写程序,根据输入的月份和年份,求出该月的天数(1-12),
//就是需要考虑闰年(2月份 29)和平年(2月份 28)。
int main()
{
int month, year;
printf("请输入年份");
scanf("%d", &year);
printf("请输入月份");
scanf("%d", &month);
_Bool flag;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{//判断是否为闰年
flag = 1;
}
else
{
flag = 0;
}
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("该月有31天");
break;
case 2:
if (flag)
{
printf("该月有29天");
}
else
{
printf("该月有28天");
}
break;
case 4:
case 6:
case 9:
case 11:
printf("该月有30天");
break;
return 0;
}
}
switch和if else if的比较
- 如果判断条件是判等,而且符合整型、枚举类型,虽然两个语句都可以使用,建议使用swtich语句。
- 如果判断条件是区间判断,大小判断等,使用if else if。
三:嵌套分支
嵌套分支是指,在一个分支结构中又嵌套了另一个分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。嵌套分支层数不宜过多,建议最多不要超过3层。
if ()
{
if ()
{
}
else
{
switch ()
{
case …
}
}
}
案列:输入油号(92或95)和油量,计算需要支付的金额。92号汽油每升4元,如果油量大于等于40升,每升3.5元;95号汽油每升5元,如果油量大于等于40升,每升4.5元。
#include <stdio.h>
int main()
{
// 获取用户输入的油号和油量
int oilN, oilL;
printf("请输入油号:");
scanf("%d", &oilN);
printf("请输入油量:");
scanf("%d", &oilL);
// 定义变量记录价格
double price;
// 嵌套分支
switch (oilN)
{
case 92:
price = 4;
if (oilL >= 40)
{
price = 3.5;
}
printf("您本次加油需支付:%.2f", price * oilL);
break;
case 95:
price = 5;
if (oilL >= 40)
{
price = 4.5;
}
printf("您本次加油需支付:%.2f", price * oilL);
break;
default:
printf("本加油站没有您所需油号!");
}
return 0;
}
四:本章练习
习题1:
实现判断一个整数,属于哪个范围:大于0;小于0;等于0。
#include <stdio.h>
//实现判断一个整数,属于哪个范围:大于0;小于0;等于0。
int main()
{
int num;
printf("请输入一个整数");
scanf("%d", &num);
if (num > 0)
{
printf("该整数大于0");
}
else if (num == 0)
{
printf("该整数等于0");
}
else if (num < 0)
{
printf("该整数小于0");
}
return 0;
}
习题2:
判断一个年份是否为闰年。
#include <stdio.h>
//判断一个年份是否为闰年。
int main()
{
int year;
printf("请输入一个年份");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
printf("该年是闰年");
}else{
printf("不是闰年");
}
return 0;
}
习题3:
判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身,例如:153 = 1*1*1 + 5*5*5 + 3*3*3。
#include <stdio.h>
//判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,
//其各个位上数字立方和等于其本身,例如:153 = 1*1*1 + 5*5*5 + 3*3*3。
int main()
{
int num;
printf("请输入一个数字用以判断是否为水仙花数");
scanf("%d", &num);
int g, s, b;
b = num / 100;
s = (num - b * 100) / 10;
g = (num - 100 * b - 10 * s);
if (num == (b * b * b + s * s * s + g * g * g))
{
printf("该数为水仙花数");
}
else
{
printf("你输入的非水仙花数\n以下为全部水仙花数\n");
}
for (int i = 100; i < 1000; i++)
{
num = i;
b = num / 100;
s = (num - b * 100) / 10;
g = (num - 100 * b - 10 * s);
if (num == (b * b * b + s * s * s + g * g * g))
{
printf("%d\n", num);
}
}
return 0;
}
习题4:
输入星期几,如果是星期一到星期三,打印:AAA,星期四到星期五,打印: BBB,星期六到星期日,打印CCC,如果都不是,提示“输入错误”。
#include <stdio.h>
//输入星期几,如果是星期一到星期三,打印:AAA,
//星期四到星期五,打印:BBB,
// 星期六到星期日,打印CCC,
//如果都不是,提示“输入错误”。
int main()
{
int num;
printf("请输入星期");
scanf("%d", &num);
switch (num)
{
case 1:
case 2:
case 3:
printf("AAA");
break;
case 4:
case 5:
printf("BBB");
break;
case 6:
case 7:
printf("CCC");
break;
default:
printf("输入错误");
break;
}
return 0;
}
本章的内容就到这里。
关注我一起成为嵌入式大佬。