嵌入式养成计划-5-C语言程序执行流程:顺序、分支、循环

十五、程序执行的三种顺序

  • 顺序执行
  • 选择执行
  • 循环执行

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.在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhk___

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值