一、流程控制语句
1.顺序结构
从上往下依次执行,是程序默认的执行过程
2.分支结构
程序在执行的过程中出现了岔路
3.循环结构
重复的执行某件事情
二、分支结构
1.分类:
if语句(表判断)、switch语句(表选择)
2.if语句:
第一种格式:
if(关系表达式)
{
语句体;
}
第二种格式
if(关系表达式)
{
语句体A;
}else
{
语句体B;
}
第三种格式
if(关系表达式A)
{
语句体A;
}else if(关系表达式B)
{
语句体B;
}else if(关系表达式C)
{
语句体C;
}else{
语句体N;
}
在C语言中,如果判断的结果是一个数字,非0表示条件成立,0表示条件不成立
如果大括号里面的语句体只有一行,那么大括号可以省略不写
3.switch语句
(1).作用:把所有的选择一一列举出来,根据不同的条件任选其一
(2).格式:
switch(表达式){
case 值1:
语句体;
break;
case 值2:
语句体;
break;
....
default:
语句体n;
break;
}
(3).执行流程:
1.首先计算表达式的值
2.依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束
3.如果所有的case后面的值和表达式的值不匹配,就会执行default里面的语句体,然后结束整个switch语句
(4).细节说明:
1.表达式:计算结果只能为(字符/整数)
2.case:值只能是(字符/整数)的字面量,不能是变量
3.case:值不允许重复
4.break:表示中断,结束的意思,结束switch语句
5.default:所有情况不匹配时,执行该处的内容
4.if和switch语句的使用细节
switch:有限个case进行匹配的情况,10个左右
if:一般是对一个范围进行判断
三、case穿透
1.根据小括号中的表达式的结果去匹配对应的case
2.执行对应case里面的代码
3.如果在执行的过程中,遇到了break,那么直接结束整个switch,如果没有遇到break,就会继续执行下面case中的代码,直到遇到break,或者把整个switch中所有的代码全部执行完毕,才会结束
4.case穿透只会往下进行穿透,不会回到上面
四、例题
/*
* 需求:
* 键盘录入游戏氪金的总额度,不同的额度VIP等级也不一样
* 1~99元:尊贵的VIP1
* 100~499元:尊贵的VIP2
* 500~999元:尊贵的VIP3
* 1000~1999元:尊贵的VIP4
* 2000~5000元:尊贵的VIP5
*/
int money;
printf("请输入您的氪金额度");
scanf("%d",&money);
if(money<=0){
printf("您输入的金额有误");
} else
if(money>=1 && money <=99){
printf("尊贵的VIP1");
}else if(money>=100 && money<=499){
printf("尊贵的VIP2");
}else if(money>=500 && money<=999){
printf("尊贵的VIP3");
}else if(money>=1000 && money<=1999){
printf("尊贵的VIP4");
}else{
printf("尊贵的VIP5");
}
/*
* 需求:键盘录入月份数,输出对应的季节
* 春季:3,4,5月份
* 夏季:6,7,8月份
* 秋季:9,10,11月份
* 冬季:12月份到次年的2月份
*/
int month;
printf("请输入月份");
scanf("%d",&month);
switch(month){
case 3:case 4:case 5:
printf("春季");
break;
case 6:case 7:case 8:
printf("夏季");
break;
case 9:case 10:case 11:
printf("秋季");
break;
case 12:case 1:case 2:
printf("冬季");
break;
default:
printf("您输入的月份有误请重新输入");
}