【Amazing! C】分支和循环语句(一)

目录

前言

一、分支语句

1. if语句

1.1 语法结构

1.2 if...else if语句

1.3 悬空else

2. switch语句

2.1 语法结构

2.2 break

2.3 default


前言

        C语言是一种结构化得程序设计语言,包括多种语句:表达式语句、函数调用语句、空语句、控制语句、复合语句等。

int main()
{
    3+5;//表达式语句
    printf("hehe\n");//函数调用语句
    ;//空语句
    //此外还有控制语句、复合语句等
}

控制语句共有9种,可分为一下3类:

1.分支语句

        if语句、switch语句;

2.循环语句

        while语句、for语句、do while语句;

3.转向语句

        goto语句、break语句、continue语句、return语句。

一、分支语句

1. if语句

1.1 语法结构

if(表达式)        //判断表达式是否为真,在C语言中,0表示假,1表示真。
    语句1;
else
    语句2;
else
    语句3;

        例如,我们想要实现“年龄大于等于18时打印成年人,否则打印未成年”的功能。

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
		printf("成年人\n");
	else
		printf("未成年\n");
	return 0;
}

        但是,当我们想细分年龄时,例如年龄<18(未成年),18~30(青年),31~50(中年),51~70(中老年),71~99(老年),>99老寿星。程序语句表达如下:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else
	{
		if (18 <= age && age <= 30)
			printf("青年\n");
		else
		{
			if (31 <= age && age <= 50)
				printf("中年\n");
			else
			{
				if (51 <= age && age <= 70)
					printf("中老年\n");
				else
				{
					if (71 <= age && age <= 99)
						printf("老年\n");
					else
						printf("老寿星\n");
				}
			}
		}
	}
	return 0;
}

        但是这样的写法有点复杂,因此,我们可以采用if(...){...} else if(...){...}... else{...}语句进行简化。

1.2 if...else if语句

        上述程序可简化为:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else if (18 <= age && age <= 30)
		printf("青年\n");
	else if (31 <= age && age <= 50)
		printf("中年\n");
	else if (51 <= age && age <= 70)
		printf("中老年\n");
	else if (71 <= age && age <= 99)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

        很明显,经过简化的程序变得更加工整简洁。我们知道,对于if...else语句,通俗的讲,就是如果if表达式行,就值执行if语句的内容,如果不行,就跳过if执行else中的内容。因此,我们可以对程序做出进一步简化:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else if (age <= 30)
		printf("青年\n");
	else if (age <= 50)
		printf("中年\n");
	else if (age <= 70)
		printf("中老年\n");
	else if (age <= 99)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

1.3 悬空else

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else//else与离的最近的if匹配,所以不执行if(a==1),程序不进入条件语句,因此不输出
		printf("haha\n");
	return 0;
}

        尽管else和第一个if看似左对齐,但else总是与离得最近得if匹配

2. switch语句

2.1 语法结构

switch (整型表达式)
{
	case构成的多条语句项:
}
表示形式为:
case 整型常量表达式(可以是1 2 3 4 5 ...):
    语句;

        switch语句相当于多个if...else语句,⽤于判断条件有多个结果的情况。

        例如,输入1,输出星期一;输入2,输出星期二,...,输入7,输出星期日。程序表示为:

int main()
{
	int day = 0;
	scanf("%d", &day);//仅仅是选择switch
	switch (day)
	{
		case 1://case语句从哪里进入的入口,需要有跳出break语句,实现了switch语句中跳出分支的效果
			printf("星期一\n");
			break;
		case 2:
			printf("星期二\n");
			break;
		case 3:
			printf("星期三\n");
			break;
		case 4:
			printf("星期四\n");
			break;
		case 5:
			printf("星期五\n");
			break;
		case 6:
			printf("星期六\n");
			break;
		case 7:
			printf("星期七\n");
			break;
	}

	return 0;
}

值得注意的是:

1.case和整型常量表达式之间至少要有一个空格,常量表达式后面是冒号。

2.每⼀个case语句中的代码执⾏完成后,需要有跳出break语句,实现switch语句跳出分支的效果。

2.2 break

        当程序进入switch语句,并找到case入口时,程序会从当前的case开始向下执行,直至遇到break后跳出分支语句。因此,如果一个case语句中没有break,那么程序在执行完这个case语句后会向下进入下一个case语句,直到遇到break或者执行完整个switch分支语句。以上述程序为例,当我们把break注释掉后,程序中输入1,会把星期一到星期七全部打印下来。

2.3 default

        当所有case无法匹配时,想做一个处理时,需用default来提醒我们。当switch获取到的整型表达式无法与case后的整型变量表达式匹配时,就会执行default语句。

        基于此,我们可对程序做进一步修改,当输入1~5时,打印工作日,当输入6~7时,打印休息日,当输入其他时,会出现提示,打印选择错误。

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
	default:
		printf("选择错误\n");
		break;
	}

	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值