C语言——分支语句与循环语句?轻松拿捏!
2026/9/12 10:09:54 网站建设 项目流程

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_

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询