【C语言】分支与循环语句

分支语句:

1.if...else...语句

1.概念

if 语句控制条件分支。 如果表达式的值不为零,则执行 if 语句的主体,否则,则执行else语句的主体。(0即为假,非0即为真)

先来看看if...else...执行结构流程图

#include<stdio.h>
int main()
{
	int a = 0;
	if (a==0)
		printf("呵呵\n");
	else
		printf("hehe\n");
	return 0;
}

2.其他写法

if...else...语句可省略else部分,写成只有if语句的形式

#include<stdio.h>
int main()
{
	int a = 0;
	if (a == 0)
		printf("呵呵\n");
	return 0;
}

也可写成if...else if....else if...else...的形式,分支成多个部分

#include<stdio.h>
int main()
{
	int a = 0;
	if (a == 0)
		printf("呵呵\n");
	else if(a == 1)
		printf("hehe\n");
	else if (a < 0)
		printf("哈哈\n");
	else
		printf("哈哈\n");
	return 0;
}

3.注意事项

1.if...else...语句在具有多个分支的情况下只会进入其中的一个分支
#include<stdio.h>
int main()
{
	int a = 0;
	if (a == 0)
		printf("呵呵\n");
	else if (a < 1)
		printf("哈哈\n");
	else
		printf("哈哈\n");
	return 0;
}
2.在if()里判断相等时可能会因疏忽把“==”打成“=”,而在c语言里”=”是赋值,“==”才是判断是否相等,若是将变量赋值成一个非0的值,那么判断的语句将直接为真。所以在进行判断相等时需要多加注意。
#include<stdio.h>
int main()
{
	int a = 0;
	if (a = 1)
		printf("呵呵\n");
	return 0;
}

推荐一个写法

在判断一个变量的值是否与常量相等时可以利用(1==a)这种形式,若是少了一个“=”,编译器会因为把常量赋值给变量直接报错。

#include<stdio.h>
int main()
{
	int a = 0;
	if (0 == a)
		printf("呵呵\n");
	if(0 = a)
		printf("hehe\n");
    return 0;
}

3.if语句的嵌套

嵌套 if 语句和 else 子句时,请使用大括号将语句和子句组合成复合语句,以阐明你的意图。 如果没有大括号,编译器会将每个 else 与缺少 else 的最近 if 关联,从而解决二义性

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	if (0 == a)
		if (0 != b)
			printf("呵呵\n");
		else
			printf("hehe\n");
	else
		printf("哈哈\n");
}

为了方便阅读,嵌套时请加上{}

4.分支的执行语句若是有多个,别忘记加{}哦

2.switch语句

1.概念

switch 语句使控件根据 表达式 的值转移到其语句正文中的一个标记语句

流程图如下

判断星期几

#include<stdio.h>
int main()
{
	int day = 0;

	switch (day)
	{
	case 1:
		printf("Monday\n");
		break;
	case 2:
		printf("Tuesday\n");
		break;
	case 3:
		printf("Wednesday\n");
		break;
	case 4:
		printf("Thursday\n");
		break;
	case 5:
		printf("Friday\n");
		break;
	case 6:
		printf("Saturday\n");
		break;
	case 7:
		printf("Sunday\n");
		break;
	default:
		break;
	}

	return 0;
}

2.注意事项

1.case的后面不能出现相同的值

2.case后面的后面只能接整型常量表达式

char,short,int,long,long long,以上都是整型,若是char类型的数据,别忘记‘ ’哦,应该是case ‘a’的形式

3.不加break的结果
#include<stdio.h>
int main()
{
	int day = 2;
	switch (day)
	{
	case 1:
		printf("早八\n");
	case 2:
		printf("早八\n");
	case 3:
		printf("早八\n");
	case 4:
		printf("早八\n");
	case 5:
		printf("早八\n");
	case 6:
		printf("休息\n");
	case 7:
		printf("休息\n");
	defauilt:
		printf("哪来的这一天啊\n");
	}
	return 0;
}

通过以上代码,我们可以发现case后面若是没有break,那他将会从匹配的case持续执行到switch执行语句的末尾,所以别忘了加break哦。

有时候也可以通过少用break简化代码

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("日々早八、日々早八、烦たます\n");
		break;
	case 6:
	case 7:
		printf("休息\n");
	defauilt:
		printf("哪来的这一天啊\n");
	}
	return 0;
}

4.defauilt的位置必须在末尾吗?

defauilt是缺省的其他条件。众所周知,编译器读取数据是从上至下读取,所以defauilt必须放在switch语句末尾吗?答案是否定的,它可以放在switch语句中的任意位置

循环语句

1.while语句

1.概念

while是计算机的一种基本循环模式。 当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。

流程图

#include<stdio.h>
int main()
{
	int i = 0;
	while (i < 10)
	{
		printf("%d\n",i);
		i++;
	}
	return 0;
}

2.do while语句

1.概念

do...while 循环是 while 循环的变体。 在检查while条件是否为真之前,该循环首先会执行一次do之内的语句,然后在while内检查条件是否为真,如果条件为真的话,就会重复do...while这个循环,直至while为假。

流程图

特点:至少执行一次

3.for循环

1.概念

4.break和continue

1.break

break 语句将终止执行其所在位置最接近的外围 dofor 或 while 语句。

利用该功能,我们可以提前跳出循环

#include<stdio.h>
int main()
{
	int i = 0;
	while (i < 10)
	{
		printf("%d\n", i);
		if (5 == i)
			break;
		i++;
	}
	return 0;
}

利用这个特点,我们在不知道到底循环多少次时可以写个死循环,再利用内部判断跳出循环

#include<stdio.h>
int main()
{
	int i = 0;
	while (1)
	{
		printf("%d\n", i);
		if (5 == i)
			break;
		i++;
	}
	return 0;
}

2.continue

continue的作用是在不结束循环的前提下跳过本次循环体中continue后面的部分

#include<stdio.h>
int main()
{
	int i = 0;
	while (i < 10)
	{
		printf("%d\n", i);
		i++;
		if (5 == i)
			continue;
	}
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值