C语言分支语句和循环语句详解

目录

前言

什么是语句?

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

分支语句(选择结构)

if语句 

语法结构:

讲解:

例子:

switch语句

语法格式

讲解:

break语句

例子:

循环语句

循环语句中的break和continue

 break例子:

continue例子: 

while循环

语法结构

讲解: 

例子:

for循环

语法结构

讲解: 

例子:

do…while循环

语法结构

讲解

例子:

转向语句

break和continue

goto语句

语法结构:

讲解:

例子:

return语句 

讲解

例子:

其他 

后语


前言

本篇文章是对C语言分支语句和循环语句的知识点内容上的介绍与讲解,相信各位看完之后肯定会对其有进一步的认识与理解。如果各位有发现任何错误或者需要更为细致的讲解欢迎各位评论或私信。

由于篇幅原因对于篇幅代码的分析内容还没有写出来,各位可以移步到下面链接的板书图片部分查看。

本篇文章所用到的代码与板书图片:代码与板书


什么是语句?

这里我们先简单了解一下:

C语句可分为以下五类:

1.表达式语句

int a = 10;//一个简单表达式语句 赋值语句

          在表达式末尾加个分号就形成一个表达式语句。最常用的表达式语句是函数调用语句和赋值语句。函数调用语句也属于表达式语句,因为函数调用如sin(x) 也属于表达式的一种。赋值语句的作用是将等号左边变量的值改成等号右边表达式的值。

2.函数调用语句

void Add(int a);//函数的声明
void Add(int a)
{
	;//函数的定义
}
int main()
{
	int a = 10;
	Add(a);//函数调用
	return 0;
}

3.控制语句

本篇介绍的是控制语句。

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

可分成以下三类:

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

4.复合语句

int main()
{
	//-------------
	{
		int a = 10;
		int b = 20;
		printf("%d", a);
	}//形如这样用{}一对大括号括起来形成复合语句。
	//--------------
	return 0;
}

        简称为语句块,它使用大括号把许多语句和声明组合到一起。语句块与简单的语句不同,语句块不用分号当作结尾。当出现语法上某处需要一条语句,但程序却需要执行多条语时,就可以用到语句块。

5.空语句

for( int i=0; i<10; i++ )
; //循环体为空

        即只有一个分号的语句,它什么也不做。当用在循环体中时,表示循环体什么也不做。


分支语句(选择结构)

例如:曾经有一份真挚的感情放在我面前。我没有珍惜,等我失去的时候才后悔莫及。换一种选择。如果我去珍惜了这份感情,就会有一份真挚的感情。就是刚下来

if语句 

语法结构:

//结构一:
if (表达式)
	语句;

//结构二:
if (表达式)
	语句1;
else
	语句2;

//结构三:
if (表达式1)
	语句1;
else if (表达式2)
	语句2;
else
	语句3;

讲解:

PS:在C语言里面0为假,一切非0的数为真(包括负数)。 

模式一:当表达式为真的时候,if下面的语句才会执行。当表达式为假,后面的语句那不会执行。

模式二:当表达式为真的时候,if下面的语句才会执行。当表达式为假的时候,就会执行后面else语句下面的语句部分。

模式三:当if后面表达式好为真的时候,if下面的语句才会执行。如果if后表达式为错,就会进入到else if后面表达式的判断部分,如果为真就会执行后面的语句,如果为假就会进入到else后面的语句。

注:

  • 后面的语句可以写成复合语句的形式。就是用一对大括号括起来。
  • 可以写多条else if语句。

例子:

1.判断一个人是否成年?

这里我们输入一个数,把这一个数给变量age,然后利用变量age去给18进行比较,如果大于18就会在屏幕上输不行出成年了。

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age > 18)
		printf("成年了");
	return 0;
}

这里如果我想让代码逻辑更为完整我们这里就可以使用else来进行美化。

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age > 18)
		printf("成年了");
	else
		printf("未成年");
	return 0;
}

2.判断一个人属于什么年龄阶段? 

int main()
{
        int age = 0;
        scanf("%d", &age);
        if (age >= 18 && age < 28)
            printf("青年\n");
        else if (age >= 28 && age < 60)
                printf("壮年\n");
        else if (age >= 60 && age < 80)
             printf("老年\n");
        else
             printf("高人\n");
        return 0;
}

注:当一个函数里面有多条if与else,else只会与最近的if相匹配。所以

switch语句

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

语法格式

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

语句项:

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

讲解:

switch后面的整形表达式是int、short、long、char类型。

往switch后面输入相关的值,然后句子往下面执行,会与后面的case后面的整型常量表达式相匹配,如果匹配上了,就会执行case下面的语句。如果没有匹配上,就会往下接着匹配后面的case语句。如果没有我找到相关的case语句,就会看switch语句里面有没有default,如果有default就会执行default语句进行。

break语句

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

break语句的作用就是直接跳出switch语句,如果没有break的话就会接着执行后面的case语句,直道语句执行完或者在后面的case语句中遇到break。

例子:

1.判断星期几?

int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)//int、short、long、char类型
    {
    case 1:
            printf("星期一\n");
            break;
    case 2:
            printf("星期二\n");
            break;
    case 3:
            printf("星期三\n");
            break;
    case 4:
            printf("星期四\n");
            break;
    case 5:
            printf("星期五\n");
            break;
    case 6:
            printf("星期六\n");
            break;
    case 7:
            printf("星期天\n");
            break;
    default:
            printf("输入错误没有找到相对应的星期");
            break;
    }
    return 0;
}

2.看输入的是工作日还是休息日?

根据特性我们知道case语句里面没有break,case与就会往下面接着执行。

因为我们知道1~5都是工作日,所以我们就可以把case 1~5写成一起。然后六和七是休息日,所以我们就可以把六和七写到一起。

int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)//int、short、long、char类型
    {
    case 1:
    case 2:
    case 3: 
    case 4: 
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    default:
        printf("输入错误没有找到相对应的星期");
        break;
    }
	return 0;
}

循环语句

我们会在我们打的闯关游戏里面,我们每次打怪升级,积累经验。一直打一直打,到了满级,我们就可以天下无敌,称霸游戏。而这个过程我们就是循环。

循环语句中的break和continue

在循环语句中break语句的效果和在switch语句中的效果一样。break语句跳出一层循环(在后面的学习中可能有多层循环进行嵌套)。

continue的作用就是不管continue的句子,直接进入到循环语句的表达式部分。

我们用while循环去举例子。

 break例子:

注:if语句里面没有break语句,所以这里面的break语句是用来跳出while循环的。

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);//1 2 3 4
		i++;
	}
	return 0;
}

continue例子: 

int main()
{
    int a = 1;
    while (a <= 10)
    {
        if (a == 5)
            continue;//终止本次循环后面的代码不在执行 直接进入到while循环的判断部分
        printf("%d\n", a);//1 2 3 4 _ 这边一直有光标在闪 在a++;a=5后while成立,进入if判断相等,就会continue直接while a=5
        a++;
    }
    return 0;
}

while循环

语法结构

while (表达式)
	循环语句;

讲解: 

当我们的表达式为真,我们就会执行while下面的循环语句。当循环语句执行完了的时候,我们再回去。看表达式是否为假?如果为假就会跳出while语句句子往下执行,如果为真就会一直执行下去,直到某一次表达式变成假。

根据上面的说法,我们就可以知道在写while循环的时候,我们要写跳出循环语句的句子。

例子:

打印1~100之间的数字在屏幕上。

int main()
{
	int i = 1;
	while (i<=100)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

for循环

语法结构

for(表达式1; 表达式2; 表达式3)
	循环语句;

讲解: 

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

执行顺序:表达式1->表达式2->循环语句->表达式3

例子:

打印1~100之间的数字在屏幕上。

int main()
{
	int i = 1;
	for (i = 1; i <= 100; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

do…while循环

语法结构

do
	循环语句;
while (表达式);

讲解

do…while循环和while循环的一些语法细节,语法规则都是差不多的。

只不过while循环是先执行表达式,判断表达式为真为假。

do…while循环是先跑一遍循环语句。然后再进入到表达式部分,判断表达式部分,进行真假的判断。再考虑是否执行第二次循环。

例子:

int main()
{
	int i = 1;
	do
	{
		printf("%d ",i);
		i++;
	} while (i<=100);
	return 0;
}

转向语句

break和continue

  • break语句的作用是跳出一层循环语句或是跳出switch语句的作用。 
  • count语句的作用是去掉后面循环语句,直接跳转到循环表达式的那判断语句部分进行判断。

goto语句

在break语句的知识点上我提到的break只能跳出一层循环,所以当句子出现多层循环的时候,我们要把整个要跳出整个嵌套的循环句子,这个时候我们就可以用goto语句。去跳出多层循环嵌套部分。在实际的应用中,goto也多数应用于跳出深层的嵌套里面。我们要在写goto语句的时候一定要注意goto语句使用的是否合理,一定不要滥用。

语法结构:

goto error;//这个error是我随便取的名字
error:
	//句子

for (...)
for (...)
{
    for (...)
    {
        if (...)
            goto error;
    }
}
…
error :
    if (...)
        //句子

讲解:

当句子执行到goto语句的时候,我们根据goto后面自己起的名字,直接把句子跳转到相对应名字的部分。

例子:

一个关机程序

解读代码:

因为要用到strcmp和system函数所以我们要引用两个头文件 一<string.h>,一个<Windows.h>。

先创建一个名为input数组,数组的每一个元素是char类型。然后系统就会提示你电脑将在一分钟内关机。如果输入我是猪,就取消关机。然后代码进入scanf部分输入。然后输入的东西用strcmp与我是猪相比较。如果相同的话就取消。关机如果不是一样的话就会转到else部分到goto agin。后面句子就会跳转到agin部分。又来一遍,然后就接着输入,如果一直不输入我是猪的话,电脑将会在一个一分钟关机。

#include <string.h>
#include <Windows.h>
int main()
{
    char input[10] = { 0 };
    system("shutdown -s -t 60");
again:
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s", input);
        if (0 == strcmp(input, "我是猪"))
        {
            system("shutdown -a");
        }
        else
        {
            goto again;
        }
    return 0;
}

return语句 

讲解

对return语句目前个人理解,return语句就是用来直接结束函数的,表示函数结束,并且给与一个返回值,并且给一的返回值与函数的返回类型相对应。

例子:

例一:

返回回一个零,然后与main函数返回类型相对应,0为是整数,int是整形的意思,正好相对印。

int main()
{
	return 0;
}

例二: 

给两个数输出其最大值

int MAX(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int a = 10;
	int b = 20;
	printf("%d", MAX(a, b));
	return 0;
}

其他 

  • continue语句只能用在循环语句里面。就是while循环、do…while循环、for循环里面。
  • break语句只能用在循环语句和switch语句里面。就是switch语句、while循环、do…while循环、for循环里面。
  • 注意些循环表达式和分支表达式里面,一定要小心赋值表达式(=)和相等(==)的区别,在C语言里面这种错误是不会有提示的出来的。
  • 在写if语句、while循环、for循环的时候要主要后面不要加分号(;)在if语句里面,如果后面有分号符号不论表达式是否正确,后面if所控制的语句都会执行。while循环和for循环则会出现,一直执行判断条件部分,一直到判断条件出错(为假),执行其控制的循环语句一遍。
  • 在执行if语句、循环语句的时候后面如果没有大括号的情况下只会控制其最近的一条语句,只有用大括号括起来,形成一条复合语句。其句子才能成为一块儿被if语句或者循环语句所控制。
  •  for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题。

后语:

好了,以上就是个人对于C语言的控制语句的了解与认识。希望能对各位对于学习C语言相关知识与认识有所帮助。如果各位有什么不懂的或者是需要有探讨的地方,欢迎留言和私信。码字不易,还请各位多多点赞。

欢乐的时间总是很短暂的,又到时间说拜拜,我们下一篇文章再见。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值