分支和循环语句(1)

本文详细介绍了C语言中的控制语句,包括if条件判断语句和switch选择语句的使用。通过实例展示了if语句的多层次条件判断及else的匹配规则,强调了break在switch语句中的重要作用,以及default子句在未匹配case时的执行情况。内容深入浅出,有助于理解C语言的流程控制。
摘要由CSDN通过智能技术生成

系列文章目录

前言

C语句可分为以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句
    本次介绍的是控制语句。

一、控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语 言有九种控制语句。 可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

二、分支语句(选择语句)

2.1if语句

if语句的语法结构
请添加图片描述
演示代码

演示1
请添加图片描述
演示2
请添加图片描述
演示3

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else if (age >= 18 && age < 30)
	{
		printf("青年\n");
	}
	else if (age >= 30 && age < 50)
	{
		printf("中年\n");
	}
	else if (age >= 50 && age < 80)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}
}

2.1.1 else的用法

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

else会和离它最近的if形成匹配

2.1.2if语句的书写

//代码1
if (condition) {
    return x; }
return y;
//代码2
if(condition) //代码2看着舒服一些,逻辑清楚。
{
    return x; 
}
else
{   
    return y; 
}
//代码3
int num = 1;
if(num == 5) 
{
    printf("hehe\n");
}
//代码4
int num = 1;  //代码4可以防止将==写成=,减少犯错。
if(5 == num) 
{
    printf("hehe\n");
}

2.2 switch语句

switch语句常用于多分支语句
如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七

如果用if语句写的话

#include<stdio.h>

int main()    //这种方式太繁琐了
{
	int day = 0;
	scanf("%d", &day);
	if (1 == day)
	{
		printf("星期一");
	}
	else if (2 == day)
	{
		printf("星期二");
	}
	else if (3 == day)
	{
		printf("星期三");
	}
	else if (4 == day)
	{
		printf("星期四");
	}
	else if (5 == day)
	{
		printf("星期五");
	}
	else if (6 == day)
	{
		printf("星期六");
	}
	else
	{
		printf("星期日");
	}
	return 0;
}

switch语句可以使我们的程序简单一点。
下面我们一起了解一下switch语句
首先switch语句的语法结构

switch(整型表达式) 
{
    语句项;
}
//语句项是什么?
//是一些case语句:
//如下:
case 整形常量表达式:
    语句;

下面我们用switch语句写一下上面的案例

#include<stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
        printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
		break;
	case 6:
		printf("星期六");
		break;
	case 7:
		printf("星期日");
		break;
	}
	return 0;
}

划重点在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
上面案例如果没有break时,运行结果
请添加图片描述
可以看到这样语句从case进入,在运行到最后时结束。

2.2.1 break作用

break会把switch语句划分为不同的分支部分,语句从case进入,在遇到break时跳出结束。

2.2.2 default子句

当表达的值与所有的case标签的值都不匹配怎么办?
结果就是所有的语句都被跳过了。
以上面案例演示一下
请添加图片描述
当我们输入值 > 7时,没有匹配的case值,编译器会自动跳过switch语句,什么都不做。
这个时候如果你并不想编译器忽略所有不匹配标签的值时。
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。

总结

 今天的分享就到这里,谢谢大家,求三连。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值