分支和循环语句(一)

好久……不见。

断了两次的学习复盘,今天我来狂补!最近一直在学分支循环语句,首先我们来一起了解一下在C语言中,语句的种类。


1、语句的分类

在C语言中,语句可以分为一下几种:

1、表达式语句

2、函数调用语句

3、控制语句

4、复合语句

5、空语句

        没错,标红的那个就是后面几节要介绍的。今天标题的语句均属于控制语句。控制语句适用于控制程序的执行流程,以实现程序的各种程序结构方式,他们由特定的语句定义所组成,C语言中有九种控制语句,可以分为以下三大类:

        1、条件判断语句也叫分支语句:if 语句、switch 语句;

        2、循环执行语句:do while 语句、while 语句、for 语句;

        3、转向语句:break语句、goto 语句、continue 语句、return 语句。

        条件判断语句核心就是给出一个表达式,来判断真假,然后分流出两条支路分别执行不同的操作;循环执行则是给定一个条件,符合这个条件就无限进行循环往复的语句执行,一旦不符合条件,就跳出循环;转向语句这个名字还是很贴合他本身的功能的,就是在一段代码中,改变代码执行的方向,具体结合后面的代码进行详解。


2、分支语句(选择结构)

 比起分支语句,我觉得选择语句更能贴近它的实际作用的效果。它的实际作用我理解的就是岔路口处有几条路供你选择,每条路都有着自己的最终走向。而且选择语句中可以嵌套使用,也就是你选择一条路之后走过一段时间又来到一个岔路口,又要来进行一次选择。就像我们学习一样。

        不同的选择走上不同的路,这就是选择语句,走上不同的选择的路继续遇到不同的选择,套娃模式就是选择语句的嵌套。


2、分支语句——if 语句

说了上面的一堆,相信大家应该有个简单的认识啦,下面我们进行第一的分支语句——if的介绍

首先我们来熟悉一下的 if 的语法结构:

//单分支 :

if(表达式)
{
    语句;
}

//双分支:

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

多分支:

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

        表达式是作为判断语句走向的唯一依据。如果表达式为真,则 if 中的语句执行,为假则跳过 if 语句。如果是单分支,不论真假,if 执行完之后分支结构结束,如果是双分支,if 为真,执行 if 的语句,else 跳过,如果为假则直接执行else下的语句。多分支结构逐个对 if 、else if 进行语句判断,如果都为假,执行else语句。

        上述的代码中 { } 表示一个语句块,如果仅执行一条语句的时候,是可以省略的,但执行多条语句的时候,需要 { } 来括起来,否则第一个 ; 结束后,后面的语句不属于语块内。{ } 可以使代码的逻辑更加清晰,所以建议大家就都写上。

        还要注意一个问题就是套娃使用 if 的时候,else 和谁匹配的问题,准则就是和谁近就和谁匹配。所以我们在写代码的时候,为了减少错误发生的可能,将else 与与之对应的 if 对其,尤其是多个if 嵌套的时候,很容易产生误读。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i = 0;
	scanf("%d", &i);
	if (i % 2)
	{
		printf("%d是奇数\n",i);
		i++;
	}
	else
	{
		printf("%d是偶数\n",i);
	}
	return 0;
}

         如图,当我输入5的时候打印出“5是奇,“i%2”在这里作为 if 的表达式,打印是语句。除了上面这种直接在括号里出现0 和非 0 的表达式外,还有相等、大于和小于较为常见。

if (num == 5)

if (5 == num)

        两个表达式都是判断相等,但往往第二个更加好用。因为当我们在平时敲代码的时候,是容易把“=” 和“==” 搞混的,一旦这里把判断相等错输入成了赋值,那么第一个代码num=5 ,表达式不为零,直接进入if 语句中,而第二个 5=num ,常量被赋值则会系统报错,让我们能够快速的找到错误的所在。类似种种的代码思想有很多,后期会慢慢提到。(毕竟老师没讲,现在提我也不会)


2、分支语句——switch 语句

         switch 语句也是一种分支语句,主要就是用在多分支的情况。比如:

输入1,输出星期一;

输入2,输出星期二;

输入3,输出星期三;

输入4,输出星期四;

输入5,输出星期五;

输入6,输出星期六;

输入7,输出星期日;

        如果我们用上面 if ……else if ……的结构,完全能实现这个要求,但是实在麻烦了一些,这里我们就可以用switch 语句。

switch(整数表达式)
{
    语句项;
}

        语句项指的就是一些case语句:

case 整形常量表达式:
     语句;

        这里要注意的是,一定要是整数和整形常量表达式,这是甲鱼的臀部——规定。

        在switch中还有一个比较重要的角色——break,如果没有他我们是无法直接实现分支的,switch 搭配 break 才能实现真正的分支。

#include<stdio.h>

int main()
{
	int i = 0;
	scanf("%d", &i);
	switch (i)
	{
		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;
}

         如图为实现输入数字几就打印星期几的功能。会看到每一个case语句后面都会跟一个break,是因为switch语句中的整形表达式其实相当于一把钥匙,只要这把钥匙找到了对应的门锁,也就是case语句,那么任务就完成了,执行完对应的case的命令后依次向后执行其他语句,知道 switch语句结束或中途遇到break 才会终止,所以说输入的数字其实就是选择从哪里开始执行语句,之后就是依次向下执行语句,有点类似于 int main()。如果这里我们不用break:

#include<stdio.h>

int main()
{
	int i = 0;
	scanf("%d", &i);
	switch (i)
	{
		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;
}

        输入“1”之后,知道了case的入口——case 1,然后从case 1 后开始执行剩下的部分,直至结束,所以 break 的作用就是把语句列表化成不同的分支。

如果所有表达式的值与所有的case的值都不匹配,不加入其他东西的话,系统也不会报错,就是跳过所有的case,跳出switch 语句。但如果不想要直接跳出去,如果所有的case 都不匹配还想进行一条语句的执行的话,就可以引入——default。直接在语句列表中加入即可:

default:
    语句;

         当所有的case 的值都不符合时,执行default的值,它可以放在语句列表的任意位置,但是一般我们都放在最后。

        在编写最后一个case的时候后面加上一个break,可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句,而导致后面的default语句执行,一个switch中default有且只有一个大家要清楚的记得这一点:default 前的case语句没有break的话,是会执行default 语句的,它是一条正常的语句,如果读到他了会执行他的,比起其他的语句,他只是多了一个功能,就是其他case 不符合条件时,只要他在语句列表里就会找到他,并且执行他。

        今天的小葵花课堂到这就结束了,我去快马加鞭下一篇了~

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值