分支与循环语句

目录

前言

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

1.1 if语句

1.2 switch语句

二、循环语句

2.1 while循环

2.2 for循环

2.3 do…while()循环

三、goto语句


       C语言是结构化的程序设计语言,分为顺序结构、选择结构和循环结构。为什么这么说呢?其实这三种结构来自于生活,我们在生活中做的事情无非就三类,第一类就是从头走到尾,一步一步地做,就是C语言的顺序结构;第二类是我们可能会做出一种选择,比如说,有的同学选择考研,有的同学选择就业,就会使人生走的路不同,这就是C语言的选择结构;第三类是我们可能要循环往复地重复做一件事情,这就是C语言地循环结构。顺序结构比较简单,一步一步走就行了,下面讲一下选择语句和循环语句。

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

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

分支语句地基本结构如下:

1.1 if语句

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

//双分支

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

代码举例

//代码1
#include <stdio.h>
int main()
{
	int score = 0;
	scanf("%d", &score);
	if (score < 60)
	{
		printf("不及格");
	}
	return 0;
}
//代码2
#include <stdio.h>
int main()
{
	int score = 0;
	scanf("%d", &score);
	if (score < 60)
		printf("不及格");
	else
		printf("及格");
	return 0;
}
//代码3
#include <stdio.h>
int main()
{
	int score = 0;
	scanf("%d", &score);
	if (score < 60)
		printf("不及格");
	else if (score >= 60 && score <= 80);
		printf("良好");
	else if (score >= 80 && score <= 90);
		printf("优秀");
	return 0;
}

如果括号里地表达式结果为真,语句执行,结果为假,则语句不执行。

0表示假,非0表示真

如果条件成立要执行多条语句,要使用代码块,如果只执行一条语句可以不加大括号。

#include <stdio.h>
int main()
{
	if (表达式)
	{
		语句列表1
	}
	else if
	{
		语句列表2
	}
	return 0;
}

这里的一对{ }就是一个代码块。

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

       在上面代码中,肉眼是看else是和第一个if对齐的,可能会误导我们认为输出“haha”,但运行结果是什么也不输出,因为else是和它离得最近的if匹配的,所以程序压根就没有进入第二个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;
}

1.2 switch语句

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

比如:

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

       如果还采用if…else的形式太过复杂,因此我们采用switch语句。

switch(整形表达式)

{

        case  整型常量表达式:

        语句;

}

例如:

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	int n = 1;
	switch(day)
	{
	case 1:
		printf("星期一\n");
	case 2:
		printf("星期二\n");
	case 3:
		printf("星期三\n");
	case 4:
		printf("星期四\n");
	case 5:
		printf("星期五\n");
	case 6:
		printf("星期六\n");
	case 7:
		printf("星期天\n");
	}
	return 0;
}

 上列代码运行结果如下:

       当输入2时,进入switch语句后就会从case 2一直运行下去直到结束,要想终止语句,需要用到break关键字。

        这时输入几就从对应的case语句运行,并终止后面的语句。

default子句
如果表达式的值与所有的case标签的值都不匹配,所有的语句就会都被跳过。然而程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。如果不想忽略不匹配所有标签的表达式的值时,可以在语句列表中增加一条default子句。当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句就会像执行一个case标签一样执行default子句。

二、循环语句

 循环语句分为:

while

for

do while

2.1 while循环

while语句执行的流程:

#include<stdio.h>

int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d", i);
		i++;
	}
	return 0;
}
//打印1~10

       当while表达式判断结果为真,就会进入循环体执行语句,当循环到使while表达式判断结果为假时,就会跳出循环。

while语句中的break和continue

       在while语句中,只要遇到break,就会直接终止循环。

#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d", i);
		i++;
	}
	return 0;
}

       上述代码,当循环到i等于5时就会终止循环,所以打印结果为:

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

#include <stdio.h>
int main()
{
	int i = 0;

	while (i < = 10)
	{
		i++;
		if (i == 5)
			continue;//跳过本次循环continue后边的代码, 直接去判断部分判断
		printf("%d ", i);
	}
	
	return 0;
}
//打印结果为1 2 3 4 6 7 8 9 10

2.2 for循环

语法形式:

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

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

使用for循环打印1~10

#include <stdio.h>
int main()
{
	int i = 0;

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

 for 语句的执行流程

       进入for循环后,先对初始化部分进行赋值,然后执行判断语句,判断结果若为真,执行循环语句,若为假,则不执行循环。当然,for循环语句中也有break和continue关键字,for语句中的break关键字和在while语句中是一样的,for语句遇到continue后会跳过后面的语句,然后进入调整部分。

建议:

1.不可在for循环体内修改循环变量,防止for 循环失去控制。
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

2.3 do…while()循环

语法形式:

do

         循环语句;

while(表达式)

do…while()语句执行流程:

#include<stdio.h>
int main()
{
     int i=10;
     do
     {
        printf("%d\n",i);
     }while(i<10)
     return 0;
}

       do…while时先执行后循环,所以循环至少执行一次。首先执行一下要循环的语句,随后进行判断是否进行下一次的循环。当遇到break退出循环,遇到continue,后面的语句不再执行,结束本次循环,进行下一次循环。

三、goto语句

       C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

for(……)
    for(……)
    {
        for(……)
        {
            if(disaster)
                goto error;
        }
    }
   -
error:
   if(disaster)
         //处理错误情况

遇到goto语句后,程序会直接跳转到goto后面标号(error)的位置
 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值