【C语言详解】分支与循环

2021-10-29-

作者:Nico
时间: 2021-10-25
网站地址:https://github.com/sxfinn

目录

💦什么是语句

C语句可分为以下五类:

  • 表达式语句
  • 函数调用语句
  • 控制语句
  • 复合语句
  • 空语句

这里介绍的是控制语句。

控制语句用于控制程序的执行流程,以实现特定的功能和结构,它们具有特定的语句定义符组成,C语言有九种控制语句。

分为三类:

  1. 分支语句:if、switch语句;
  2. 循环语句:while、for、do while语句;
  3. 转向语句:break、continue、goto、return语句;

💦分支语句(选择结构)

if语句

面对选择,我们会直接想或者说:我要XXX,我不要XXX。

举个例子:

面临以下选择

  1. 好好学习—>收获满满
  2. 无所事事—>继续废柴

可以看到二者是不可兼得的,只能选择其中的一个。

那么对于计算机呢?

if的语法结构:

//一般结构
if(表达式)
	语句;
if(表达式)
	语句;
//多分支结构
if(表达式1)
	语句1;
else if(表达式2)
	语句2;
else
	语句;

注意:表达式的内容只看真假,可以是一个常数,可以是一个变量。

如下图:
在这里插入图片描述

由图可知:

若表达式结果为真,则对应语句执行。

那么C语言中如何表示真假?

C语言中 0为假,非0为真。

如果要执行的语句不止一条,那我们还需要将要执行的语句用大括号{}括起来。

例:

#include<stdio.h>
//代码1
int main()
{
   
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
   
		printf("未成年\n");
	}
	else if (age > 18 && age < 60)
	{
   
		printf("壮年\n");
	}
	else if (age > 60)
	{
   
		printf("老年\n");
	}
	return 0;
}
代码2
int main()
{
   
	double grade_point = 0;//初始化绩点
	scanf("%lf", &grade_point);
	if (grade_point >= 4.0 && grade_point < 5.0)
	{
   
		printf("优秀\n");
	}
	else if (grade_point < 4.0 && grade_point >= 3.0)
	{
   
		printf("一般\n");
	}
	else
		printf("差\n");
	return 0;
}    

一个if与一个else匹配,如果有多个if或者else语句呢?

int main()
{
   
	int a = 1;
	int b = 2;
	if (a == 5)
		if (b == 2)
			printf("true");
	else
		printf("false");
	return 0;
}

输出结果:

无输出结果。

所以可以断定else是与第二个if匹配的。

可以看到上面代码的写法,很容易让我们产生误解,所以代码风格非常重要。

我们可以改写成以下形式:

int main()
{
   
	int a = 1;
	int b = 2;
	if (a == 5)
    	{
   
		if (b == 2)
			printf("true");
    	}
		else
        	{
   
			printf("false");
        	}
	return 0;
}

结论:else必须紧挨if后要执行的语句,且总是与最近且未匹配else的if匹配。

if语句的书写形式

	//代码1
	//函数体
if (1)
	{
   
		return 1;
	}
	return 2;

返回值结果:

​ 1

上述代码给人模棱两可的感觉,表达不清晰,很容易产生误解。

我们来换一种写法

	//代码2
	if (1)
	{
   
		return 1;
	}
	
	else
	{
   
		return 2;
	}

返回值结果:

1

显然,代码2的逻辑更加清晰,可读性更高。

结论:代码风格很重要,可读性和逻辑要好。

练习:

判断一个数是奇书还是偶数。

奇数:不可以被2整除的数。

偶数:可以被2整除的数。

能否被2整除就是我们的突破口,可以用此条件进行区分。

代码:

int main()
{
   
	int i = 0;
	scanf("%d", &i);
	if (i % 2 == 0)
	{
   
		printf("%d是偶数\n", i);
	}
	else
	{
   
		printf("%d是奇数\n", i);
	}
	return 0;
}

输入:3

输出:3是奇数

输入:4

输出:4是偶数

分支语句(branch),如同河流的不同支流,分支少还好,但是当分支很多的情况呢?

我们再一个一个去写就太繁琐,于是switch语句的作用就体现出来了。

switch语句

通常是多分支的,有多种情况可以选择。

例如:我们想输出今天周几

输入1,输出周一

输入2,输出周二

输入3,输出周三

输入4,输出周四

输入5,输出周五

输入6,输出周六

输入7,输出周天

if语句实现:

int main()
{
   
	int day = 0;
	scanf("%d", &day);
	if (day == 1)
		printf("周一");
	else if (day == 2)
		printf("周二");
	else if (day == 3)
		printf("周三");
	else if (day == 4)
		printf("周四");
	else if (day == 5)
		printf("周五");
	else if (day == 6)
		printf("周六");
	else if (day == 7)
		printf("周七");
	else
		printf("输入错误");
  • 59
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值