分支语句与循环语句( if,else,switch,for,while,do while )



前言

刚开始学C没多久,此文用来记录+分享(如有错误,请多指正


一、分支语句是什么?

分支语句其实就是,根据不同的条件(表达式),选择并执行不同的语句,就是个选项题(


1. if 单分支语句

如果条件成立则执行语句,不成立则跳过

语法如下:

if(表达式)
{
	执行语句;
}

2. if - else 双分支语句

如果条件不成立则执行与其配对的else语句
else 语句总是与它离得最近的if语句配对
注意!是 else 找离它最近的if,不是 if 找 else !

语法如下:

if(表达式)
{
	执行语句1;
}
else
{
	执行语句2;
}

就像下面代码一样,else 找到了离它最近的if语句,也就是"(j<0)",而第一个 if 条件不成立跳过

代码如下(示例):

int main()
{
	int i = 1;
	int j = 2;
	if(i<0)
	{
		printf("%d",i);
	}
	if(j<0)
	{
		printf("%d",j);	
	}
	else
	{
		printf("%d",i+j);
	}	
	return 0;
}


3. if - else if - else 多分支语句

其实和上面 if else 差不多,如果第一句不成立就执行下一句直到最后一句 else( else 上面所有 if (包括 else if )都无法成立) 结束
只不过 else if 可以无限套娃,但是写忒多会影响执行效率(

语法如下:

if(表达式1)
{
	执行语句1;
}
else if(表达式2)
{
	执行语句2;
}
else if(表达式3)
{
	执行语句3;
}
...//此处可无限套娃else if
else (表达式n)
{
	执行语句n;
}

键盘输入分数,判断优良 ,代码如下(示例):
scanf_s 是因为vs觉得 scnaf 不安全,自己定义了一个 scanf_s(啊这。。。)

int main()
{
	int score = 0;
	scanf_s("%d", &score);//此处为键盘输入
	if (score >= 90)
		printf("优秀!");
	else if (score >= 80)
		printf("良好。");
	else if (score >= 70)
		printf("还行~");
	else
		printf("加油吧!少年!");
	return 0;
}


4. 三目运算符 " ? : "

这玩意就是简化版的 if - else if - else
如果表达式为真,执行语句1、为假,执行语句2

语法如下:

(布尔表达式?执行语句1:执行语句2)

代码如下(示例):

int main()
{
	int i = 10;
	int b = (i == 10 ? 20 : 30);
	int c = (i != 10 ? 20 : 30);
	printf("%d\n", b);
	printf("%d\n", c);
	return 0;
}


5. switch 语句

switch 语句的话也可以无限套娃哦,而且比上面 if else 无限套娃简洁一点,也是一种选择语句,当分支较少时候推荐用上面讲到的 if else 语句,分支较多的话,推荐用 switch 语句

它原理就是,表达式是啥就去找对应的 case 找到就执行 对应的语句块,然后 break 跳出 switch 语句


5.1 switch 语句中的 break

break 可以理解成 终止/跳过,比如找到了你想找的东西,没必要再往下找浪费时间,就可以直接 break 跳过后面的过程。
假如你在 switch 中 case 了一堆,然后没写 break 那他这个跟 顺序结构没啥区别了,从上到下全给你执行一遍,但是在每个 case 加上 break,他们都是一个一个单独的,从而实现了分支(视情况而写!
break 在循环语句里也会用到!


5.2 switch 语句中的 default

其实就是用来擦屁股用的(不是)
在所有 case 里没找到匹配的表达式,那就执行这个 default (最终手段!


5.3 switch 其他小知识

1.case 后面的 常量表达式 只能是整型、字符型或枚举型常量

2.case 没有顺序之分,你可以12345… 也可以 13524… 它总是能找到的,除非你没写(X),default 也是(建议写到最后)

3.多个 case 可以共用一个语句块

语法如下:

switch (表达式)
    {
    case 常量表达式1:
        语句块1;
        break;
    case 常量表达式2:
        语句块2;
        break;
    case 常量表达式3:
    	语句块3;
        break;
    ...//套娃
    case 常量表达式n:
        语句块n;
        break;
    default:
        语句块m;
        break;
    }
    //分界线
    switch (表达式)
    {
    case 常量表达式1:
    case 常量表达式2://     此处表达式 1,2,3 共用语句块1
    case 常量表达式3:
    	语句块1;
    	break;
    default:
    	语句块2;
  	 	break;
    }

switch 语句就不写代码示例了(可以进行各种组合,头秃。。。


二、循环语句是什么?

循环语句就字面意思,就循环干一件事儿(


1.for语句

for 简单理解就是,从几开始数,数到多少,加还是减
语法如下:

for(初始化表达式 ; 循环控制语句 ; 增值表达式)
{
	语句;
}

输出0~10

代码如下(示例):

int main()
{
	for (int i = 0; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}


1.1 for语句中的 break

用来跳过整个循环,只要遇到了 break 就跳出循环!
如果写的是嵌套循环的话,只跳出 break 所在的那个循环

代码如下(示例):

int main()
{
	for (int i = 0; i <= 10; i++)
	{
		printf("%d ", i);
		break;
	}
	return 0;
}

第一轮就跳出了循环,i为0,输出也为0


2.while语句

while 和 if 其实差不多,只是一个能循环执行,一个只能执行一次的区别,while 为真(非0)就重复执行语句

语法如下:

while(表达式)
{
	语句;
}

输出10~1数字

代码如下(示例):

int main()
{
	int i = 10;
	while (i)//i=0 退出循环,所以少打印一个0
	{
		printf("%d ", i);
		i--;//每次打印完 i-1
	}
}


2.1 while语句中的 break

和上面一样,就不举例了(擦汗


2.2 while语句中的 continue

continue 的话 有点像是 跳过了但没完全跳过(乐
continue 只跳过他后面的代码,并继续
也就是说,只有在他后面的代码,被跳过了,循环是继续的

代码如下(示例):

int main()
{
	int i = 1;
	while (i)
	{
		printf("%d", i);
		continue;
		i--;//被continue跳过了
	}
	return 0;
}

由于 i - - 被跳过,i始终为1,while循环不停止,重复打印1


3.do while语句

do while 先执行 后判断,原理和 while 差不多

输出0~10数字

代码如下(示例):

int main()
{
	int i = 0;
	do
	{
		printf("%d ", i);
		i++;
	} while (i<=10);
	return 0;
}


总结

嗨呀,第一次写这么长的文章,头脑已经有点混乱了(眼神迷离),如果有错的地方,务必指正一下!我改改(应该能改吧)
希望对刚入坑的小白们有点帮助(虽然我本身也是小白,哎嘿


  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值