无偿分享学习资料,需要的小伙伴评论区或私信dd。。。
无偿分享学习资料,需要的小伙伴评论区或私信dd。。。
无偿分享学习资料,需要的小伙伴评论区或私信dd。。。
完整资料如下:纯干货、纯干货、纯干货!!!
关注专栏:<后续持续更新>
目录
选择结构语句
1.if分支语句
if语句的嵌套
2.switch分支语句
选择结构语句
分类:if分支语句(双分支)、switch分支语句(多分支)
1.if分支语句
分类:单分支if、双分支if、多分支if(类似switch)
⚠️注意:本质上来说if的双分支与多分支属于一种分支,所以理论上常说if只能提供两个分支选择,即认为if无法进行多分支。
格式:
1.单分支if:
if(表达式)
语句1...
2.双分支if:
if(表达式)
语句1...
else
语句2...
3.多分支if:
if(表达式1)
语句1...
else if(表达式2)
语句2...
...
else if(表达式n)
语句n
else
语句n+1
-
所有if语句的表达式可以是一个关系表达式(常见)、数值表达式、逻辑表达式、常量、变量(即结果为逻辑值的表达式)。其内部的内嵌语句语句1、语句2和语句n可以是一个简单的语句也可以是一个复合语句,还可以另一个if语句(嵌套),甚至还可以是其他c语句(9种c语句)
-
整个if语句可以写在多行(推荐)也可以写在一行。
if(a>0) y=1; else y=2; //等同于if(a>0)y=1;else y=2;(语句不要忘记加分号)
-
如果if、else后面的语句只是一个简单的语句,那么花括号可以参略。如果是一个复合语句则不能省略。
int b; if(3<0) { printf("分数"); b=100; } printf("b=%d\n",b);//因为if语句不成立,所以b=100不会执行,则b自然由系统根据数据类型随机赋值 int b; if(3<0) printf("分数"); b=100; printf("b=%d\n",b);//虽然if语句不成立,但b=100不属于if语句的内容,即赋值成立,自然输出b=100
-
if语句无论写在几行,都是一个整体,属于同一个语句,即不要误认为if语句是一个语句、else语句是一个语句,不要误以为看见if的内嵌语句有了分号就以为if语句结束了,还要观察其后面的else。
-
if语句表达式的结果为逻辑值(1【真】、0【假】)。即若表达式为数值(非零为真,0为假)。若是变量或常量(判断数据:数值(非零为真,0为假)、字符串(非空为真、空为假))
-
单分支判断为真就执行。双分支必须执行一个。多分支只要判断到为真,执行完其后的语句就会跳出if。
if(3){ printf("a");//输出a就跳出if语句 }else if(3){ printf("b");//哪怕后面也为真,也不会被执行 }
-
关系表达式a>b>c没有语法错误,只是不能表达正确的数学表达式。正确为a>b&&a>c&&b>c。
-
双分支if语句可以使用条件表达式替换。
if语句的嵌套
定义:在一个if语句中又包含一个或多个if语句称为if语句的嵌套
-
else语句不能单独使用,必须与if语句配合使用,每一个else都会与其上面最近的if配对。每一个if都会与其后面的else配对,若后面没有else,则认为if分支语句结束。
-
为避免二义性混淆,最好用花括号把内嵌部分括起来。
2.switch分支语句
说明:switch属于多分支语句,类似if语句的多分支语句
格式:
switch(表达式)
{
case 常量1:语句1;break;
case 常量2:语句2;break;
...
case 常量n:语句n;break;
default:语句n+1;break;
}
-
switch后面的表达式只能是整型、字符型、枚举型的常量、变量或表达式,case后面只能是整型、字符型、枚举型的常量或常量表达式。(即switch后面可以是变量或常量,但是case后面只能是常量,且只限于整型、字符型、枚举型)
-
case与default都起标号作用,用来标记一个位置,他们的顺序可以颠倒不影响结果(前提有break)。default是在所有匹配项都不成立的情况下执行,也可以省略,但是若没有匹配到对应的值,则不执行任何语句。
-
不同的case后面的常量值不允许相同,否则会出现语法报错。
char a=97; switch(a){ case 97:putchar('A');break; case 'a':putchar('B');break;//报错!!!哪怕转换为97的字符形式,也不允许相同 case 97:putchar('C');break;//常量值相同,报错! case 1>0:break case 1:break;//这里也会报错,因为上面1>0为1 }
-
break的作用:跳出switch(如果没有break,那么switch在找到匹配的标号入口后,会把后面所有的标号后面的语句不加判断的连续执行(这点与if多分支区别:if多分支在判断到为真时会自动跳出if语句)
char a=1; switch(a){ case 0:putchar('A'); case 1:putchar('B');//以下内容全部输出 case 3:putchar('C'); } //输出:BC
-
switch的花括号可以省略,但是只限于case语句只有一个。
-
switch默认执行顺序是从上往下依次执行,没有匹配到再执行default。若default移到前面,则依次执行遇到default则会先绕开,没有匹配到再执行default,若把default移到前面,则需要在最后加上break,否则会输出default下面的语句。
char a=11; switch(a){ default :putchar('O');//输出:OABC case 0:putchar('A'); case 1:putchar('B'); case 3:putchar('C'); }
-
多个case可以共用一组语句
case 1: case 2: case 3:printf(">60");break;
-
switch语句也允许嵌套。