C语言详细分析讲解流程控制语句用法
时间:2022-09-29 11:06:29|栏目:C代码|点击: 次
一、分支语句
1.if语句
- 流程控制语句可以让程序中的语句不再从上到下逐条执行
- 分支是一种流程控制语句,可以把程序中某些语句忽略掉不去执行
- if关键字可以用来编写分支语句,只有当表达式为真时,才会执行对应语句
- 如果多个分支的逻辑表达式之间存在互斥关系,则可以采用else关键字把他们合并成一个分支语句
- 一个分支语句中的多个逻辑表达式之间如果具有互补关系,则可以把最后一个逻辑表达式省略
例如:从终端获取一个数字,判断 正数,负数,零
#include<stdio.h> int main(){ int num = 0; printf("请输入一个整数:"); scanf("%d",&num); if(num >= 0){ printf("正数\n"); } else if (num < 0){ printf("负数\n"); } else { printf("零\n"); } return 0; }
2.switch语句
- 如果有一组数字,数字的个数有限,每个数字对应一组专门的处理语句。这种情况的分支可以采用下面的语法实实现:
例:在控制台获取4个数字0,1,2,3,对应输出四个季节
#include <stdio.h> int main(){ int season = 0; printf("请输入一个代表季节的数字:"); scanf("%d",&season); switch(season){ case 0: printf("春天\n"); break; case 1: printf("夏天\n"); break; case 2: printf("秋天\n"); break; case 3: printf("冬天\n"); break; default: // 如果上述情况都不匹配,执行该语句 printf("所有情况都不匹配,请检查输入是否为正整数!"); break; } return 0; }
- switch后面的()里面不一定是一个变量,也可以是一个公式,如果例题需求改为:输入的数字对4取余,对应四个季节,那么可以改为 switch(season % 4)
- default为case情况都不匹配的情况,才执行
二、循环语句
循环语句可以让一组语句多次反复执行
1.for语句
for( exp1 ; exp2 ; exp3 ) 其中 exp1为变量初始值赋值语句,exp2为循环变量与终值的关系,exp3为循环变量怎么从初值变为终值。exp之间通过分号 ; 隔开
对于下例中的num++,即每次运行完后,num = num +1 ,更多关于自增自减的内容请参考《探讨++i与i++哪个效率更高》
例:在屏幕循环打印12345五个数字
#include <stdio.h> int main(){ int num = 0; for(num =1;num <= 5;num++){ printf("%d\n",num); } return 0; }
2.break和continue语句
break语句随时终止循环的执行
continue语句可以把档次大括号中后面的语句跳过
无论break还是continue,都只对直接包含它的循环语句产生影响
具体区别请参考C语言中break与continue的用法和区别详解
3.循环嵌套
- 循环嵌套结构可以用来解决复杂的循环问题
- 首先把复杂问题分组,为每组找到一个代表数字。
- 要求所有组的代表数字是规律变化的。
- 循环嵌套由两个循环构成,其中一个包含另一个。外循环负责描述组代表数字的变换过程,内循环负责完成某组内的所有处理任务。
- 循环嵌套结构中内循环的开始数字和结束数字很可能需要根据外循环的循环。
例:采用for循环嵌套打印九九乘法表
#include <stdio.h> int main() { for (int i = 1; i < 9; i++) { for (int j = 1; j <= i; j++) { printf("%d*%d=%-4d", i, j,i*j); } printf("\n"); } return 0; }
4.while和do…while语句
- while关键字也可以用来编写循环
- for关键字编写的循环和while关键字编写的循环可以互相替代
- 当编写循环时不容易算出循环的执行次数时就可以考虑采用while关键字
- while(逻辑表达式){ 反复执行的语句组 }
- while关键字也可以编写空语句和死循环
- 采用do…while语句也可以实现循环,格式如下:
- do{ 语句 } while (逻辑表达式);
- 使用do…while语句可以保证大括号内部的语句至少执行依次
例:使用while循环输出12345五个数字
#include<stdio.h> int main(){ int num = 1; while(num <= 5){ printf("%d\n",num); num++; } return 0; }
例 do…while演示
#include<stdio.h> int main(){ int num = 1; do{ printf("芜湖~,我执行成功啦!\n"); num++; }while(num < 1); return 0; }
输出结果如下:num = 1不满足while里面num < 1的条件,但是do会先执行{ }里面的内容,所以打印成功。
如果改成while形式,打印不成功: