平地起C楼—第三层《C语言分支与循环》

本文介绍了C语言中的各类结构,包括if分支语句(单分支、多分支及嵌套)、switch语句、循环语句(while、for、do...while)以及break、continue和goto的用法。还涉及到了随机函数的使用,通过实例演示了如何编写猜数字游戏。
摘要由CSDN通过智能技术生成

在这里插入图片描述

前言

各位伙伴你们好!通过前面介绍C语言的数据类型以及变量的使用之后。我们会把它和C语言中的各种结构语句相结合,从而构成各种C语言语句。接下来介绍C语言的各种结构语句吧!。👉👉👉

1. C语言结构分类

结构分类我用一张图来说明它的种类:🏃‍♀️🏃‍♀️🏃‍♀️

​​​​在这里插入图片描述

2. if 分支语句结构

分支语句可以分为单分支语句、多分支语句、嵌套使用。

2.1 if 单分支语句结构

if (表达式)
语句;

该语句表达式为真才执行下面的语句,否则不执行。如果语句中的内容不止一句必须用大括号。

例1. 输入一个整数,判断是否为奇数?

#include<stdio.h>

int main()
{
	//首先,题目需要一个整数并初始化,一般初始化为0,所以得定义一个变量来接收这个整数。
	//因为说的是整数,因此为整型
	int number = 0;
	printf("请输入一个整数—>:\n");
	scanf_s("%d",&number);//注意取地址符号别丢了。
	//写入一个数后,立马判断是否奇数。
	//判断奇数的条件是对2取余,看余数是否为1.
	if (number % 2 == 1)
		printf("%d是奇数!\n",number);
	return 0;
}

2.2 if…else 语句结构

else表示否则的意思,当表达式部位真的时候会执行else 的语句。以上一个为例子。

在这里插入图片描述

2.3 if…else 嵌套使用

在 if……else 语句中,else 可以和另一个if 连用,构成多重判断。

在这里插入图片描述

  • 嵌套使用

在这里插入图片描述

2.4 else悬空问题

【始终记住一句话,如果有多个 if 和 else ,else 总是和最接近的 if 匹配的。】

在这里插入图片描述

等价于下面,所以什么都没打印。

在这里插入图片描述

3. switch 语句结构

除了 if 语句之外,C语言还提供了一个分支语句—— switch。它是一种特殊形式的 if……else 语句,一般用于判断有多个结果的情况。基本语法格式如下👇👇👇:

3.1 基本语法格式

在这里插入图片描述

上面的代码中,是根据表达式expression不同的值,执行下面相应的 case 语句,如果没有对应的case 语句,就执行 default 语句。【注意:switch 后的expression 必须是整型表达式(表达式结果必须是整型);case 后的值必须是整型常量表达式;在case语句最后面记得加break;】

  • 注意:
    1. case 和后边的数字之间必须有空格
    1. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

3.2 break语句作用

在这里插入图片描述

  • 有break的代码输出内容:👇👇👇

在这里插入图片描述

3.3 switch语句中case和default语句的顺序问题

此问题很简单,就是他们之间没有任何顺序,随便放,但是为了让代码格式好看,一般把default语句放在最后的。

4. while 循环语句结构

while循环语句的基本格式:——》

  • while(表达式) 语句;
  • 当表达式的结果为0,即为假,就跳出循环,结束执行,若表达式为1,即为真,就继续执行while循环里面的语句。

4.1 例2、取出每个数的每一位?

在这里插入图片描述

对10取余——获取一个数的最低位;除以10——去除一个数的最低位。

5. for 循环语句结构

for循环语句基本语法, for循环语句是使用频率最高的,其基本格式如下:👇👇👇👇
for(exp1;exp2;exp3)
语句;

  • exp1表达式:用于循环变量的初始化。
  • exp2表达式:用于循环结束条件的判断。
  • exp3表达式:用于循环变量的调整。

就是从初始化条件开始,与表达式2进行判断,若为真,就执行里面的语句,执行完以后,就进行调整;调整过后再一次进行比较判断,直到条件判断为假,就跳出循环,执行结束。【在整个循环中,表达式1语句,只执行1次,其他语句是根据条件判断做出循环】

5.1 练习:计算1~100之间3的倍数的数字之和

在这里插入图片描述

6. do……while 语句结构

do……while()循环语句基本语法:

do{

   语句;

}while(表达式);

while()和for()循环,是先判断再执行,条件如果满足就进入循环语句,不满足就跳出循环。而do……while()循环是先直接进入循环体,执行循环语句,然后再执行while()里面的判断表达式,若为真,就进行下一次循环,若为假就不再继续循环。【do……while()循环至少会执行一次】

6.1 练习:计算一个整数是多少位数

在这里插入图片描述

7. break和continue语句结构

break和continue语句的作用地方:

用于循环语句当中,break:用于永久的终止循环,只要执行break就跳出循环。而continue语句作用是跳过本次循环continue后面的代码,在for循环和while循环中有所差异。

【注意:🧨🧨🧨遇到break和continue语句的时候,必须注意变量调整的位置和条件判断,很有可能存在死循环】。下面就是出现是循环了。
在这里插入图片描述

8. goto语句结构

goto语句是C语言一种特殊语法,它是用于多层循环的结构,可以快速的跳出整个循环。【一般goto语句不要乱用,以免让代码层次乱套】

8.1 一个有意思的关机程序

在这里插入图片描述

9. 综合练习《猜数字游戏》

写一个随机生成1~100之间的数字,让玩家去猜大小,当猜数字猜大了或者小了会给出提示,让玩家重新猜数字,知道猜对为止。【会用到随机函数rand()和时间戳函数srand()】,代码如下:

//猜数字游戏
 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{	
	int number = 0;//要输入猜想的数据值
	int number1 = 0;//电脑随机数
	number1 = rand() % 101;
	while (1)
	{
		printf("请输入猜想的数字—>:\n");
		scanf_s("%d", &number);
		if (number > number1)
			printf("猜大了!\n");
		else if (number < number1)
			printf("猜小了!\n");
		else
		{
			printf("恭喜你,猜对了!!!\n");
			break;
		}
	}

}

int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;//选择功能
	printf("**************************\n");
	printf("****欢迎来到猜数字游戏****\n");
	printf("**************************\n");
	printf("*****    1—> play   *****\n");
	printf("*****    0—> exit   *****\n");
	printf("**************************\n");
	printf("请选择—>:\n");
	scanf_s("%d",&input);
	switch (input)
	{
	case 1:
		game();
		break;
	case 0:
		printf("欢迎下次玩耍!\n");
		break;
	}
	return 0;
}

10. 随机函数的使用

【记住这几个点就可以了:1、使用之前包含头文件#include<stdlib.h>和#include<time.h>;2、在主函数里面第一行写时间戳函数srand((unsigned int)time(NULL));3、在使用rand()函数时候,范围定义就是看自己需要多大的范围,这个随机函数的范围是0 — RAND_MAX,最大值依赖编译器,一般是32767;比如生成0~100之间的数,就把rand()%100+1或者rand()%101;表示[0,100],如果写成rand()%100就表示[0,100),左闭区间右开区间,取不到100】

  • 【以上是这篇博客所有内容。】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值