C语言之分支循环语句

目录

C语言语句

程序的流程结构

C语言表式真假的方式

分支语句和循环语句 

选择语句

if语句

switch语句

循环语句

break与continue的区别

while循环

for循环

经典for循环代码

for循环变种

do……while语句

经典do……while语句

goto语句

C语言语句

C语言:结构化程序设计语言

语句:C语言中由一条“;”隔开的就是一条语句(单个;也为语句,其是空语句)。

程序的流程结构

  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构:依据条件是否满足,有选择的执行相应的功能
  • 循环结构:依据条件是否满足,循环多次执行某段代码

C语言表式真假的方式

  • 真:!0
  • 假:0

分支语句和循环语句 

分支语句

  • if
  • switch

循环语句

  • while
  • for
  • do……while 

goto语句

选择语句

if语句

//单分支1
if(表达式){
……语句;……}

//单分支2
if(表达式){
……语句;……}else{
……语句;……}

//多分支
if(表达式1){
……语句1;……}else if(表达式2){
……语句2;……}else{
……语句3;……}

注意:如果大括号内只有一条语句的话,那么大括号可以省略不写。

以多分支为例if后面表达式为真就执行后面的语句,否则到下面的else if看后面括号内的表达式是否为真,为真则执行后面的语句否则继续向后寻找为真的表达式,如果都没有找到那么就会执行else后面的语句。

int a = 60;
	if (18 < a < 26) {
		printf("青年");
	}

//正确写法如下
int a = 60;
	if (18 < a && a<26) {
		printf("青年");
	}

上面的代码结果仍然会打印青年,其执行逻辑为

1.60>18为真——此式子结果为1

2.1<26为真——此式子结果为1

最终导致整体式子为1(为真)

else与if匹配原则——else与离得最近的if进行匹配

int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("b=2");
		else
			printf("a!=1");
//这里else与第二个if匹配

switch语句

switch分支常用于多分支的场景

//switch语句基本语法
switch(整形表达式){
    case 整形常量表达式1:……语句1;…… break;
    case 整形常量表达式2:……语句2;…… break;
    case 整形常量表达式3;……语句3;…… break;
    default: ……语句4;……
}

注意:“:”后面如果有多个语句的话尽量用{}括起来(不加也可以,只要用好break即可),这里面的整形用字符型也可以,因为字符型也属于整形的一种,其底层存储的是字符的ASCII码值。

关于switch语句

如果不加break语句switch语句会从上往下找符合上面给的条件的整形常量表达式(在没找全case之前会跳过default语句),找到之后开始执行后面的语句从上往下依次执行,也包括default后面的语句(前提:default语句在后面),如果都没找到,那么就跳回到之前的default语句开始向后执行所有语句。

switch语句的case作为入口,break作为出口,这样才做到了真正的分支。


循环语句

break与continue的区别

  • break:永久终止循环。
  • continue:终止当前循环,跳到下一次循环。

while循环

//语法结构:
while(表达式){
——语句;——}

注意:如果里面仅有一个语句的话,则{}可省略。

理解:表达式为真,那么就会执行循环体,然后再此判断表达式是否为真,如果为假,则跳出循环体。


for循环

//语法规则:
for(表达式1;表达式2;表达式3){
——循环语句;——}

表达式1为初始化部分,用于初始化循环变量。

表达式2为条件判断部分,用于判断循环什么时候终止(表达式2为假时)。

表达式3为循环调整部分,用于循环条件的调整。

执行顺序:

表达式1——>表达式2——>语句——>表达式3——>表达式2——>语句——>……

经典for循环代码

void main() {
	//需求:打印1——4,6_10
	int i = 0;
	for (i= 1; i <= 10; i++) {
		if (i == 5)
			continue;
		printf("%d ", i);
	}
}
//这里执行continue之后跳过当前循环依然会执行i++语句

for循环变种

//变种1
void main() {
	int i = 0;
	for (; ;) {
		printf("%d ", i);
	}
}

判断条件的省略致使for循环为死循环。

//变种2
void main() {
	int x,y;
	for (x=0,y=0;x<2&&y<5;++x,y++) {
		printf("haha");
	}
}

do……while语句

//语句语法:
do{
——语句项;——}while(表达式);

特点:先执行语句——>判断表达式是否为真,为真则继续执行循环体,为假则跳出循环。

经典do……while语句

//需求:打印1——10
	int i = 1;
	do {
		printf("%d ", i);
		i++;
	} while (i <= 10);

goto语句

作用:无条件跳转语句

语法:goto 标记;

解释:若标记的名称存在,执行到goto语句时,会跳转到标记的位置

#include <stdio.h>
//这里的表现是个死循环
void main() {
	flag:
	printf("begin\n");
	printf("end\n");
	goto flag;
}

goto语句最常用的用法是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或者多层循环;

  

注意: goto语句只能在一个函数内跳转,不能跨函数;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值