第四章 选择结构
1.定义:从main()开始,由上往下有哪些语句执行,哪些语句不执行
1.两类表达式
1.1 关系运算符及关系表达式(得到的值要么是1,要么是0)
< <= > >= == !=
< <= > >= 是6级
== != 是7级
同级顺序是自左往右
例题:
代码语言:c复制4>5 0
5==5 0
7=7 非法,赋值运算符左边必须为变量
5>4>3 0 5>4是1,1>3是0,所以是0
1.2 逻辑运算符与逻辑表达式
&& || !(单目)
单目是2级,&&是11级 ,||是12级
(1)在c语言中逻辑表达式的值只有1或0两种值。其中,1表示“真”,0表示“假”
(2)&&是全真为1,有0为0,||是有1为1,全0为0 ,!是1变0,0变1
例题:
代码语言:c复制a >5
a>5
5||5
4<3 && 9
0&&7
5>4>3&&3
2.if语句
格式1:
代码语言:c复制if(表达式)
语句序列1;=>if子句
后继语句
格式2:
代码语言:c复制if(表达式)
语句序列1;
else
语句序列2;
格式3:if语句的嵌套
代码语言:c复制if(表达式1)
if(表达式2)
语句序列11;
else
语句序列12;
else
语句序列2;
3.switch语句
代码语言:c复制switch语句值得注意的点有很多,要小心谨慎。
switch(表达式)
{
case 常量表达式1:子句1
case 常量表达式2:子句2
...............
case 常量表达式n:子句n
default: 子句n 1
}
注意点:
- 【default: 子句n 1】该条语句可以有,也可以省略
- case后只能接常量整型或字符型,不能有变量和逗号表达式
- 各case后常量不能出现相同的值
- 只有每一个case常量表达式都不符合,才会跳转执行default
- 在子句不执行break语句的情况下,符合常量表达式1,会把子句1到n,以及default内子句n 1
来看几个列子:深刻理解switch语句
不带break:
代码语言:c复制#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
switch(x)
{
case 1:printf("语句1n");
case 2:printf("语句2n");
case 3:printf("语句3n");
default:printf("语句defaultn");
}
}
带break:
代码语言:c复制#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
switch(x)
{
case 1:printf("语句1n");break;
case 2:printf("语句2n");break;
case 3:printf("语句3n");break;
default:printf("语句defaultn");
}
}
运算符先后顺序大总结
第一级:()
第二级:单目
第三级-第十二级:双目
双目运算符:按顺序分,算术,关系,逻辑三类运算符
第十三级:三目
第十四级:=
第十五级:,
单目运算符就是一个符号的,双目就是两个符号的
第五章 循环结构
定义:从main()开始,从上向下,使得某些语句重复执行。 循环结构的程序:在顺序结构中加入循环控制语句。
1.循环控制语句(4类)
1.1 while语句(当型循环)
第一类:
代码语言:c复制while(表达式)
{
循环体语句序列;
}
先执行表达式,再执行循环体语句
执行完循环体语句,再回到表达式,判断是否继续进入循环
while执行一条语句或一条复合语句
1.2 do-while语句(直到型循环)
第二类:
代码语言:c复制do
{
循环体语句序列;
}while(表达式);
先执行循环体语句,然后进入表达式,判断是否进行下一次循环
do-while也是就近控制一条或花括号的复合语句
1.3 for语句
第三类:
代码语言:c复制for(表达式1 ;表达式2 ;表达式3)
{
循环体语句序列;
}
表达式1是初始化,表达式2是判断,表达式3是增减语句
for循环流程描述:
表达式1,是初始化,就执行一次,然后从表达式1到表达式2,判断表达式2
执行循环体语句
执行表达式3,回到表达式2判断,判断决定结束循环或进入到循环体语句
1.4 if(){} else{} goto配合使用
第四类(几乎不用):
if(){} else{} goto配合使用
2.两个控制语句---break continue
格式:break
功能:终止退出
范围:循环体中和switch体
匹配最近的循环体
格式:continue
功能:结束一次循环继续
范围:循环体中
匹配最近的循环体
3. 例题
1.下面程序的运行结构是()
代码语言:c复制# include<stdio.h>
int main()
{
int num=0;
while(num<=2)
{
num ;
printf("%dn",num);
}
}
运行结果:
代码语言:c复制1
2
3
2.设整型变量x的当前值为3,执行以下循环语句后,输出的结果是()
代码语言:c复制# include<stdio.h>
int main()
{
int x=3;`1
do
printf("%dt",x-=2);
while(!(--x));
}
运行结果:
代码语言:c复制1 -2