分支和循环(一些相关的函数,如:strcmp函数)

坚持就是胜利

1、变长数组

C99 标准
C99之前,数组的大小不能使用变量
但在C99中引入了变长数组的概念,
这时候数组的大小是可以使用变量的,
但是数组不能初始化;

2、什么是语句

C语句可分成以下五类:
1、表达式语句
2、函数调用语句
3、控制语句
4、复合语句
5、空语句

下面解决介绍一下控制语句

控制语句用于控制程序的执行流程,
以实现程序的各种结构方式 (C语言支持三种结构:顺序结构选择结构循环结构),
它们有特定的语句定义符组成,C语音有九种控制语句。

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

3、C语言的一些介绍

C语言是一门结构化的程序设计语言
C语言支持三种结构
1、顺序结构
2、选择结构
3、循环结构

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

如果你好好学习,校招时拿一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
这就是选择!

4.1 if 语句

if 语句的语法结构:

	//单分支
	if(表达式)
		语句;
		
	//双分支
	if(表达式)
		语句1;
	else
		语句2;
		
	//多分支
	if(表达式1)
		语句1;
	else if(表达式2)
		语句2;
	else if(表达式3)
		语句3;
		……
	else
		语句n;

补充 悬空else语句:

//代码1
int main()
{
	//else 会跟离它最近的 if 语句结合
	int a = 0;
	int b = 2;
	if(a == 1)
		if(b == 2)
			printf("hehe\n");
	else
		printf("haha\n");
	return 0;	
}

上面的代码1 可以写成下面的 代码2

//代码2
int main()
{
	//else 会跟离它最近的 if 语句结合
	int a = 0;
	int b = 2;
	if(a == 1)
	{
		if(b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}
	return 0;	
}

上面的 代码1 和 代码2 的结果是一样的,都是在控制台上什么都不输出!
在这里插入图片描述

4.2 switch语句

switch语句也是一种分支语句。
常常用于多分支的情况。

  • 语法
switch(整型表达式)
{
	case 1//case 和 1 之间是有空格的哦
		语句项;
	case 2//case 和 2 之间是有空格的哦
		语句项;
	……
	case n://case 和 n 之间是有空格的哦
		语句项;
	default :
		语句项;
}

提示

  • default语句的位置可以随意, 但最好还是放到最后(具体的要结合题意来)

case 决定入口
break 决定出口
break语句 的实际效果是把语句列表划分为不同的分支部分。

下面举一个栗子来了解 switch 语句的用法

比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
		case 1:
			printf("星期一\n");
			break;//跳出switch语句
		case 2:
			printf("星期二\n");
			break;//跳出switch语句
		case 3:
			printf("星期三\n");
			break;//跳出switch语句
		case 4:
			printf("星期四\n");
			break;//跳出switch语句
		case 5:
			printf("星期五\n");
			break;//跳出switch语句
		case 6:
			printf("星期六\n");
			break;//跳出switch语句
		case 7:
			printf("星期天\n");
			break;//跳出switch语句
			
	//当在控制台输入的数字不在上面的 1 ~ 7 之间的话,执行	default语句
		default:
			printf("选择错误\n");
			break;//跳出switch语句
	}
	return 0;
}

输出结果

  1. 在控制台输入1
    在这里插入图片描述

  2. 在控制台输入2
    在这里插入图片描述

  3. 在控制台输入8
    在这里插入图片描述
    补充:

如果在一个switch语句中没有break语句,
即使 case 语句有满足switch(整型表达式)中的整型表达式
还是会执行switch语句中的default 语句。

下面举一个栗子

int main()
{
	int num = 2;
	switch (num)
	{
		case 1:
			num++;
		case 2:
			num++;
		case 3:
			num++;
		default :
			num++;
	}
	printf("num = %d\n", num);
	return 0;
}

输出结果是:
在这里插入图片描述

5、循环语句

C语言中的循环语句的使用频率比较
for 循环 > while 循环 > do while 循环

5.1 、while循环

我们已经掌握了,
if 语句:

if (条件)
{
 	语句; 	
}

当条件满足的情况下,if语句后的语句要么执行,否则不执行
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C语言中给我们引入了:while语句,可以实现循环

  • 语法
 while(表达式)
 {
 	循环语句;	
 }

下面举一个栗子

//使用 while 循环在屏幕上打印 1~10 的数字
int main()
{
	//定义一个初始变量 n = 1
	int n = 1;
	while (n <= 10)
	{
		//每次循环,打印对应的 n 值
		printf("%d ", n);
		// n 自增 1
		n++;
	}
	return 0;
}

- 输出结果

在这里插入图片描述

  1. break语句在while循环中的作用

break在while循环中只要遇到 break
就停止后期的所有的循环,直接终止循环
所以:while中的break是用于永久 终止循环的。

  1. continue语句在while循环中的作用

continue是用于终止 本次循环 的,
也就是本次循环中continue后边的代码 不会再执行
而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。

5.2 、for 循环

我们已经知道了while 循环,
但是我们为什么还要一个for 循环呢?
首先来看看for循环的语法

  • 语法:
for(表达式1;表达式2;表达式3)
{
	 循环语句;
}

表达式1
表达式1为 初始化部分,用于初始化循环变量的。
表达式2
表达式2为 条件判断部分,用于判断循环是否终止
表达式3
表达式1为 调整部分,用于循环条件的调整

下面举一个栗子

//使用for循环在屏幕上打印 1~10
int main()
{
	//定义一个迭代循环变量 i 
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		//每次循环,打印对应的 i 值
		printf("%d ", i);
	}
	return 0;
}

输出结果

在这里插入图片描述

break和continue在for循环中的意义

我们发现在for循环中也可以出现break和continue,
它们的意义和在while循环中是一样的。
但是还是会有一些差异的

5.3 、do while循环

  • 语法
do
{
	循环语句;	
}while(表达式);//分号不要忘记了哦!!!

下面举一个栗子

//使用do while循环在屏幕上打印 1~10
int main()
{
	//定义一个迭代循环变量 i 
	int i = 1;
	do
	{
		//每次循环,打印对应的 i 值
		printf("%d ", i);
		// i 自增 1
		i++;
	} while (i <= 10);
	return 0;
}

输出结果
在这里插入图片描述

  • 特点

循环至少执行一次,使用的场景有限,所以不是经常使用。

6、getchar、putchar 函数的一些介绍

  • getchar、putchar只针对字符
ch = getchar();//读取一个字符,并且赋值给变量 ch
putchar(ch);//输出一个字符到屏幕上

7、scanf 、printf 函数的一些介绍

scanf 按照指定的格式,输出数据
printf 按照指定的格式,输出数据
补充 这里的格式即是 对应的占位符
如:%d%f%s 等等
(具体的占位符的介绍,请翻看我之前发的博客初识C语言3

8、strcmp函数

判断两个字符串是否相等,
要使用strcmp函数,不能直接使用 ==(这里是两个等于号!!!)
如果第一个字符串小于第二个字符串,返回 <0 的数字
如果第一个字符串大于第二个字符串,返回 >0 的数字
如果第一个字符串等于第二个字符串,返回 0
(需要引入头文件 #include<stdlib.h> 和 #include<string.h>

9、goto语句(goto语句只能在同一个函数内部跳转,不能跨函数跳转!!!)

C语言中提供了可以随意滥用的goto语句和标记跳转的标号
从理论上goto语句是没有必要的,
实践中没有goto语句也可以很容易的写出代码。
但是某些场合下,goto语句还是用得着的,
最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

例如:一次跳出两层或多层循环
多层循环这种情况使用break是达不到目的的
它只能从最内层循环退出到上一层的循环
goto语句 就可以完成!!!

  • goto语言真正适合的场景如下:
	//第一层
	for(……)
	{
		//第二层
		for(……)
			{
				//第三层
				for(……)
				{
					if(disaster)
						goto error;
				}
			}
			……
	}
		
	error:
		if(disaster)
			//处理错误情况

补充说明 goto语句在C语言中的使用频率不高!!!

天天编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值