C语言的分支语句分为if else语句和switch语句两种;循环语句分为while循环,for循环和do while循环三种,下面我们一起来看一下吧
分支语句
if else语句
if语句的语法形式如下
if(表达式)(语句)表达式成立为真(非0)则语句执行,表达式不成立为假(为0),则语句不执行
例子:输入一个整数,判断是否为奇数
#include<stdio.h>intmain(){intnum=0;scanf("%d",&num);if(num%2==1);printf("奇数");return0;}如果一个数不是奇数,那就是偶数了
这就需要else语句了,语法形式如下
if(表达式)(语句1)else(语句2)例子:输入一个整数,判断是否为奇数,如果是奇数,打印奇数,否则打印偶数
#include<stdio.h>intmain(){intnum=0;scanf("%d",&num);if(num%2==1);printf("奇数");elseprintf("偶数");return0;}- 注意:在if和else语句中,默认都只控制一条语句,比如
#include<stdio.h>intmain(){intage=0;scanf("%d",&age);if(age>=18)printf("成年")printf("可以谈恋爱了!")return0;}你会发现输入的值不管是大于等于18还是小于18"可以谈恋爱了",都会打印在屏幕上,这是因为if语句只能控制一条语句。
那如果我们要if语句同时控制两条语句,就可以使用{}括起来,如下
#include<stdio.h>intmain(){intage=0;scanf("%d",&age);if(age>=18){printf("成年")printf("可以谈恋爱了!")}return0;}- 在if else语句中,else可以与另一个if语句连用构成多重判断。比如要求输入一个整数,判断输入的整数是零,正数,还是负数
intmain(){inti=0;scanf("%d",&i);if(i>0)printf("正数");ifelse(i<0)printf("负数");elseprintf("0");return0;}switch语句
除了if语句外,c语言还提供了switch语句来实现分支结构,如图所示
switch(){case1:statementcase2:statement ···defaultstatement}上面的代码中根据表达式不同的值,相应值执行case分支,如果找不到相对应的值,就会执行default分支。
#include<stdio.h>intmain(){intday=0;scanf("%d",&day);switch(day){case1:printf("星期一");break;case2:printf("星期二");break;case3:printf("星期三");break;case4:printf("星期四");break;case5:printf("星期五");break;case6:printf("星期六");break;case7:printf("星期天");break;default:printf("输入错误");}return0;此时如果输入1,打印星期一;如果输入2,打印星期二,以此类推
此时如果输入1~7以外的值,就会打印“输入错误”
default通常都是放在switch语句最后处理的,当然,如果你对顺序有特殊要求,也是可以放在前面的。
注意:
switch后表达式必须是整型表达式
case后的值必须是整型常量表达式switch中的break
在使用switch语句时,只有使用break才能跳出switch语句,如果去掉switch,就会出现以下情况。
#include<stdio.h>intmain(){intday=0;scanf("%d",&day);switch(day){case1:printf("星期一");case2:printf("星期二");case3:printf("星期三");case4:printf("星期四");case5:printf("星期五");case6:printf("星期六");case7:printf("星期天");}return0;此时运行程序,输入3,打印的是“星期三星期四星期五星期六星期天”,这是因为打印星期三后,程序没有跳出 switch,为了避免这种情况,我们在后面加上break用于跳出程序
当然,我们也可以利用这种特性,如果需求发生变化,变为:
输入1~5,输出工作日
输入6~7,输出休息日
intmain(){intday=0;scanf("%d",&day);switch(day){case1:case2:case3:case4:case5:printf("工作日");break;case6:case7:printf("周末");}return0;}循环语句
for循环
C语言提供了三种循环语句,其中for循环的语法形式如下
for(表达式1; 表达式2; 表达式3)语句表达式1用于循环变量的初始化
表达式2用于循环结束条件的判断
表达式3用于循环变量的调整
For循环的执行流程:
首先执行表达式1初始循环变量
接下来执行表达式2的判断部分,如果表达式2为假,则循环结束;表达式2为真则执行循环语句
然后就是执行表达式3,调整循环变量
调整完后再丢给表达式2判断,是否执行语句
- 总的来说:整个循环中表达式一初始化部分只被执行一次,剩下的就是表达式2,循环语句,表达式3再循环
例如:在屏幕上打印1~10的值:
#include<stdio.h>intmain(){inti=0;for(i=1;i<=10;i++){printf("%d ",i);}return0;}While循环
While循环的语法形式如下
while(表达式)(语句)While循环的执行流程:
先是判断表达式,表达式为假,循环直接结束;表达式为真,则执行循环语句
语句执行完后再继续判断是否进行下一轮循环
例如:在屏幕上打印1~10的值
#include<stdio.h>intmain(){inti=1;while(i<=10){printf("%d",i);i++;}return0;}do while循环
do while循环的语法形式如下
do(语句)while(表达式);do while循环上来就直接执行语句,不同于for循环和while循环需要先判断再执行语句。
do while循环的执行流程
在do while循环中
先执行语句
再判断是否继续循环:如果表达式结果为假,循环结束;如果表达式结果为真,继续循环
例如:打印1~10的值
#include<stdio.h>intmain(){inti=1;do{printf("%d ",i);i++;}while(i<=10);return0;}break和continue语句
在循环语句中
continue是忽略本次循环
break则是直接跳出循环
例如:在程序中加入continue
#include<stdio.h>intmain(){inti=0;while(i<=10){i++if(i==5){continue;//当i等于5后,执行continue,回去判断是否满足下一次循环}printf("%d ",i)}return0;}运行结果为:1 2 3 4 6 7 8 9 10 11
把continue换成break;
#include<stdio.h>intmain(){inti=0;while(i<=10){i++if(i==5){break;//当i等于5后,执行break,跳出循环}printf("%d ",i)}return0;}运行结果:1 2 3 4
需要注意的是:
for循环在执行break语句的最后,不会执行表达式3(变量的调整)
使用continue时要避免造成死循环,如:
#include<stdio.h>intmain(){inti=1;while(i<=10){if(i==5)continue;//因为i等于5后执行continue,去循环的地方//这里跳过了i++,所以i一直为5,程序陷入死循环printf("%d ",i);i++;}return0;}运行结果:1 2 3 4_