分支与循环语句(1)

C语言是一种结构化的语言,其基本有:顺序结构,选择结构,循环结构。

这也对应了我们生活中的三种结构或这三种结构的组合。

例如我们从学校走到家里,这一路就是顺序结构。

我们从学校出来,是回家,还是去网吧,这个就是选择结构。

我们从学校到家,再从家到学校,周而复始,这就是循环结构。

分支语句:

我们常见的分支语句有两种,分别是:用 if(表达式/常量/变量) ,引起的选择结构。

以及用 switch(表达式/常量/变量) 来引起的选择结构。

首先我们来介绍用 “if” 来引起的选择结构

if:

if语句的语法基本形式如下:

if(表达式)
    语句    

表达式成立(为真),则执行 “if” 控制的语句

若表达式不成立(为假),则不执行 “if” 控制的语句

在C语言中我们通常用 “0” 来表示假,用非 “0” 来表示真

如果表达式的结果为0,则语句不执行,若表达式为非“0”,则执行语句

例如如下的代码:

#include<stdio.h>

int main()
{
	int a = 0;
	//输入一个数值来表示变量a
	scanf("%d", &a);

	//分支语句
	if (a)
		printf("Hello,C!\n");
	return 0;

}

通过我们输入的变量a的值来判断“Hello,C!”是否进行打印,如果我们输入一个非0的值,就会打印,如果我们输入0,则不执行打印。

此为输入0的效果。

此为输入非0数值的效果。

 if语句的判断条件如上图所示。

else:

如果我们想输入0则打印别的内容应该怎么办呢?应该怎么表示呢?

例如我们不回家,就去网吧,此时就要用到else语句

那么else语句应该用何种形式表达呢?

else的语法形式如下:

if(表达式)
    语句1

else

    语句2

如上就是else的语法形式

下面我将举例给大家说明

首先我们定义一个整数变量,并且输入一个整数,如果我们输入非0,则表示回家

如果我们输入0,则表示去网吧

下面我们用代码说明

#include<stdio.h>

int main()
{
	//创建一个变量来表示回家还是去网吧
	int i = 0;
	
	//我们输入一个数值来表示去网吧还是回家
	scanf("%d", &i);
	
	//如果我们输入0,就去网吧,如果我们输入的数值非0,则回家
	if (i)
		printf("回家");
	else
		printf("去网吧");
	return 0;
}

下面为我们输入非0的打印情况:

下面为我们输入0的打印情况:

 分支中包含多条语句的情况:

分支中如果包含多条语句会怎么样呢?

#include<stdio.h>

int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a)
		printf("回家");
	    printf("不去网吧");
	return 0;
}

例如如上代码,我们输入一个非0值,想要打印 “回家 不去网吧”我们做一下试验

如果我们输入0,我们来看一下是什么效果

可以看到 ,无论我们输入0,还是非0,不去网吧都会被打印到屏幕上,那么这是什么情况呢?

这是因为,if语句只会控制一条语句,如果我们输入0,则只会控制打印回家,而不会控制打印不去网吧,对于不去网吧这一条语句而言,它是独立存在的,无论我们输入什么,他都不会被if 语句控制,依旧会打印出来,那如果我们要if语句同时控制两条及以上语句,怎么办呢?那么我们就要用 ”{ }” 这样一对括号括起来我们要控制的语句,当然,else语句后也可跟上括号,如下:

#include<stdio.h>

int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a)
	{
		printf("回家");
		printf("不去网吧");
	}
	else
	{
		printf("去网吧");
		printf("不回家");
	}
	return 0;
}

通过如上代码,我们就可以控制两条语句,例如我们输入非0;则打印” 回家不去网吧 “

我们输入0,则打印 ” 去网吧不回家 “

以上就是我们代码的运行截图

嵌套if:

 如果我们回家以后想要选择做作业还是打游戏怎么办呢?

那么我们就要用到嵌套if来实现

代码如下所示:

#include<stdio.h>

int main()
{
	//创建一个变量来表示回家还是去网吧
	int a = 0;
	//再次创建一个变量来表示回家以后是学习还是打游戏
	int b = 0;
	//进行判断是回家还是去网吧
	
	if (a)
	{
		printf("回家");
		printf("不去网吧");
		//判断回家后是打游戏还是学习
		if (b)
		{
			printf("学习");
		}
		else
		{
			printf("打游戏");
		}
	}
	
	else
	{
		printf("去网吧");
		printf("不回家");
	}

	return 0;
}

此时我们就要用到 if 的嵌套使用,来表示回家是学习还是打游戏。

悬空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;
}

那么很多初学者,上来以判断 a 是 0,不等于 1 ,那就执⾏ else ⼦句,打印 haha

其实这是错误的,当我们运行代码后会发现什么都不输出

这是因为,if 总是和离他最近的else匹配

上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的

其实它是和离他最近的 if 匹配的

如果我们要else和第一个if匹配,我们可以修改成如下代码:

#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;
}

switch语句:

C 语言除了 if 语句外,还提供了switch 语句来实现分支结构

switch语句是一种特殊的,if ...... else 结构,用于判断有多个结果的情况,它把多重的else  if改成   更简单的形式

switch语句的基本定义代码如下:

switch (expression) 
{
 case value1: statement
 case value2: statement
 default: statement
}

上面的代码中,expression表示不同的值,执行相应的case分支,如果找不到对应的值,则执行default分支语句。

if语句和switch语句的对比

请看如下代码,用来计算除3之后的余数

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 if(n%3 == 0)
 printf("整除,余数为0\n");
 else if(n%3 == 1)
 printf("余数是1\n");
 else
 printf("余数是2\n");
 return 0;
}

如果用switch语句来实现是这样的:

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
 case 0:
 printf("整除,余数为0\n"); 
 break;
 case 1:
 printf("余数是1\n"); 
 break;
 case 2:
 printf("余数是2\n"); 
 break;
 }
 return 0;
}

switch语句中,我们需要注意的是,case后必须有空格

每一个case语句结束后都需要加上break,才能跳出switch语句

如果不加break跳出switch,则会一直往下依次执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王的创意工坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值