十五、程序执行的三种顺序
- 顺序执行
- 选择执行
- 循环执行
15.1 顺序结构
- 没啥好说的,就是顺着往下面执行
15.2 分支选择结构
- 有选择的去执行某段程序
15.2.1 单分支选择结构
格式:
if(表达式)
{
代码块
}
/* 此部分为注释,解释上面的内容
表达式的内容 就是为了判断是不是需要执行这段代码块
代码块的内容 就是你想要进行的操作
解读:如果 表达式 成立 , 那么将 执行代码块的内容
*/
注意:
1. if 后面的 () 不可以省略
2. if 后面不加分号,如果存在分号不会报错,if起不到判断的效果
3. {} : 如果C语句只有一条时,可以省略不写,如果存在多条不可以省略
4.表达式:条件,表达式可以是任意表达式,但是一般多选用关系、逻辑、算数表达式
15.2.2 双分支选择结构
格式:
if(表达式)
{
代码块1
}else{
代码块2
}
/* 此部分为注释,解释上面的内容
表达式的内容 就是为了判断是不是需要执行这段代码块
代码块的内容 就是你想要进行的操作
解读:如果 表达式成立,那么 将执行代码块1的内容,否则执行代码块2的内容
*/
注意:
1. if 后面的 () 不可以省略
2. if 后面不加分号,如果存在分号不会报错,if起不到判断的效果
3. {} : 如果C语句只有一条时,可以省略不写,如果存在多条不可以省略
4.表达式:条件,表达式可以是任意表达式,但是一般多选用关系、逻辑、算数表达式
15.2.3 多分支选择结构
格式:
if(表达式1)
{
代码块1
}else if(表达式2){
代码块2
}else if(表达式3){
代码块3
}...
...
else if(表达式n){
代码块n
}else{
代码块n+1
}
/* 此部分为注释,解释上面的内容
表达式的内容 就是为了判断是不是需要执行这段代码块
代码块的内容 就是你想要进行的操作
解读:如果 表达式1成立,那么 将执行代码块1的内容
如果表达式1不成立,但是表达式2成立,将执行代码块2的内容
如果表达式1和2都不成立,但表达式3成立,那么执行表达式3的内容
...
...
如果前面n-1个表达式都不成立,但表达式n成立,那么执行代码块n的内容
如果前面的都不成立,那么执行代码块n+1的内容
最后的else,按实际需求看是否写
*/
注意:
1. if 后面的 () 不可以省略
2. if 后面不加分号,如果存在分号不会报错,if起不到判断的效果
3. {} : 如果C语句只有一条时,可以省略不写,如果存在多条不可以省略
4.表达式:条件,表达式可以是任意表达式,但是一般多选用关系、逻辑、算数表达式
15.2.4 switch选择
格式:
switch(表达式){
case 常量表达式1:
语句1;
case 常量表达式2:
语句2;
……
case 常量表达式n:
语句n;
default:
语句n+1;
}
/* 此部分为注释,解释上面的内容
switch、case、break、default都是关键词。
解读:
表达式 中的结果需要是能够对应到下面的那些常量表达式
当下面的 表达式的结果 与 常量表达式 的值相等时,会执行这个常量表达式后面的语句
如果后面没有加上 break 关键字进行跳出结束,那么后续的别的语句也会被执行,
直到遇到 break 或者 执行完后面的所有语句。
default是默认,如果前面语句都没有执行,那么默认执行default中的语句
15.3 循环结构
循环结构一般有三种语句,而 C/C++ 中有第四种——goto。
- for 循环
- while 循环
- do while 循环
- goto 跳转
15.3.1 for 循环
格式:
for(表达式1; 条件表达式; 表达式2){
循环体
}
/* 此部分为注释,解释上面的内容
表达式1 中一般为 初始化语句、赋值语句
条件表达式 是用来判断是否继续执行循环体,成立则继续执行
表达式2 中一般是 计算用的表达式,比如让计数变量自增
这三个表达式在一些条件下可以不用写:
表达式1 写在了for循环外面
条件表达式 在循环体中使用了分支选择结构判断,然后使用break跳出
表达式2 计数变量的变化也写在了循环体中
解读:
先执行表达式1,然后判断 条件表达式 是否成立
若条件表达式成立,则执行循环体的内容,否则结束循环
执行完循环体后 执行表达式2的内容
然后去执行条件表达式的内容,判断是否成立,不成立就跳出
如此循环往复
*/
示例:
for(int i = 0; i < 3; i++){
printf("*");
}
/*
输出了三个*
即 ***
*/
15.3.2 while 循环
格式:
while(条件表达式){
循环体
}
/* 此部分为注释,解释上面的内容
解读:
先判断条件表达式是否成立
如果成立,则执行循环体,不成立则跳出
执行完循环体后继续判断条件表达式是否成立,如此循环往复
*/
示例:
int i = 1;
while(i<3){
printf("*");
}
/*
输出了两个*
即 **
*/
15.3.3 do while 循环
格式:
do{
循环体
}while(条件表达式)
/* 此部分为注释,解释上面的内容
解读:
先执行一遍循环体,然后判断条件表达式是否成立
如果成立,则继续执行循环体,然后再次判断条件表达式,如此循环
*/
示例:
int i = 1;
do{
printf("*");
}while(i<3);
/*
输出了三个*
即 ***
*/
15.3.4 goto 跳转
格式:
Lable: 想要跳转到的语句位置;
.
.
.
goto Lable;
/* 此部分为注释,解释上面的内容
解读:
先在 想要跳转到的位置 设置一个Lable(标签)
然后执行到 goto 语句时,无条件的跳转到Lable标记的语句,开始从这一句往下执行
一般 goto 和 标签 搭配,而且 还要 配合条件判断语句
*/
示例:
int i = 0;
LOOP: printf("*");
i++;
if(i < 2)
goto LOOP;
/*
输出了两个*
即 **
*/
15.3.5 循环控制
有几个关键字可以控制循环的进行程度。
- break;
用于结束循环,仅结束 break 所在的那层循环,也可以用来结束switch语句 。 - continue;
用于跳过本次循环,仅跳出 continue 所在的那一层的本次循环,外层的够不到。 - return;
用于函数返回值,函数进行返回时就会结束函数,所里哪怕里面有循环也会直接结束。 - goto;
无条件跳转,一般搭配选择结构使用,当满足自己设定的条件后可设置无条件跳转到某行。 - exit;
用于结束程序,和 return 都属于掀桌子的。
几个小作业:
1.对学生的考试成绩分级评测,规则为: 成绩1-100之间合法
1、成绩>=90为等级A
2、成绩>=80为等级B
3、成绩>=70为等级C
4、成绩>=60为等级D
5、成绩<60为等级E
2.计算三个数的最大值
3.输入一个字符,
如果是大写转换小写,
如果是小写转换大写,
如果是数字输出平方,
如果是特殊字符则直接输出
4.给定一个整数,判断它是否被3、5、7整除,并输出一下信息
1.能同时被3,5,7整除(直接输出3 5 7,每个数字之间一个空格)
2.只能内其中两个整数整除(输出两个数,小的在前,大的在后,例如3 5 或者 3 7 或者5 7,中间使用空格隔开)
3. 只能被其中一个整数整除(输出这个除数)
4.不能被任何数整除,输出小写字母n
案例如下:
输入:105
输出:3 5 7
5.解读程序
6.简述题
7.位运算
下面是我写的:
再来一点作业:
1.计算序列 1/1-1/3+1/5-1/7…
2.
3.循环输入整数,输入0结束,
计算最大差值【最大值最小值不算0】
我写的:
1.
2. i 是无符号整型数,当不断的 i-= 2 到 i=0 时,再减的话 i 会成为一个很大的正数,而不是小于0,所以for循环的条件一直成立,会无限的循环下去。应该将 i 改为有符号的整型数,或者将 i>=0 改为 i>0;
3.