C语言程序结构之分支结构if switch
一,程序的结构:顺序结构 :程序运行时按正常的流程运行 (程序内部运行实现线性结构:栈,队
列,链表,数组个人感觉)
分支结构 : 条件语句 if switch
循环结构 : while do while for
二,if语句
1,分类1)第一种形式:
构成:if(表达式){
语句块;
}
2)if....else的形式
用法:如果表达式的值为真(1) 执行语句块1
如果表达式的值为假(0) 执行语句块2
格式:if(表达式)
{
//如果表达式的值为真(1),会这行此代码块
语句块1;
}
else
{
//如果表达式值为假(0),会执行else大括号中的内容
语句块2;
}
3)if...else 的嵌套使用
if(条件1){
语句块1;
if(条件2){ //条件1为真
}
}else{
}
4)if ...else if...else
if(条件1){
语句块1
}else if(条件2) {
}else if(条件3){
}
else{
}
2,注意点:以后if语句不管后面是否为空语句还是一句都加{} (防止出错)
1)if(); if语句后面可以直接写一个“;”(“;”空语句),表示什么都不干
2) 当if语句为真的时候只需执行一句话的时候,是可以省略括号的
3)if(1)或者if(-1) 都是永真式,if(0) 永假式
4)作用域紊乱的问题
if(a>0) int num=-1; // num变量会报错,可以加{}
printf("%d\n",num);
5)if省略大括号的问题
//方法:从下到上找else 根据else找到能进行匹配的if
6)return 关键字 在函数内的话,程序结束;
7)闰年的判读 年份必须满足能够整除4同时不能整除100,或者年份能够整除400;
三,switch语句
1) switch语句一种分支语句
格式:switch(表达式){
case 常量表达式1:语句1;
case 常量表达式2:语句2;
case 常量表达式3:语句3;
case 常量表达式n:语句n;
default:
都不满足再执行的语句;
}
2)注意问题
1>case的穿透问题:为了防止穿透,我们使用break;break,可以提前结束swith语句
如果每个条件中case结束不加break,程序会继续执行,直到遇到break结束;
2>switch(表达式) 表达式的返回值类型不能是float\double,可以是整型的和字符型
case 后的也是常量表达式;
3>如果定义了变量,需要要大括号括起来
int a=3;
switch(a+3){
default:printf("error\n");break;
case 6:
printf("xxx");
int num = -1;
break;
}