3.《C语言》——【分支和循环】

前言

        C语言是结构化的程序设计语言C语言中有三大结构分别为:顺序结构选择结构循环结构C语言是能够实现这三种结构的,如果我们仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。接下来我们就详细讲解这三大结构。

一.C语言三大结构 

1.顺序结构 

什么是顺序结构?C语言中顺序结构就是让程序按照从头到尾的顺序依次执行C语言中每一条代码,不重复执行其他任何代码,也不跳过其他代码。

2.选择结构

什么是选择结构?C语言选择结构也称为分支结构,就是让程序有选择性的执行代码,可以说是跳过不被选择的代码,只执行选择的代码。

3.循环结构

C语言循序结构就是让程序不断地重复执行同一段代码。

一.if else 语句详解

#1. if else 连用

1.我们已经了解了顺序结构就是从上执行到下,一条路。但是很多情况,仅仅是顺序结构是不足以满足要求的。例如:考试分数总分为100。那么及格线为60,当分数大于或者等于60分就为"及格",小于则为"不及格"  。

我们可以写一个代码,来判断,并且给出提示,

例如: 如果分数大于或者等于60,则为输出"及格",否则输出"不及格"  。 

代码如下 :

#include<stdio.h>
int main()
{
	int num = 0; 
	printf("请输入你的成绩:"); 
	scanf("%d", &num); 
	if (num >= 60)
		printf("及格\n");
	else
		printf("不及格\n"); 
	return 0;
}

运行结果: 

分析:  

在这段代码中,score >= 60 是需要判断的条件,>= 表示为“大于或者等于”,等价于数学中的 ≥ .

如果条件成立,也就是满足 score >= 60 , 程序就会执行 if 后边的语句,输出及格 ;如果条件不成立 ,也就是 score < 60 ,那么程序就会执行 else 后边的语句输出不及格。 

2.下图为 if else 连用的流程图: 

if else语句是2个关键字,if 意思为 "如果" , else 意思为 "否则" 。 是用来判断条件,根据判断条件的结果不同,执行不同的语句。

if else语句的语法如下

if(判断条件)

{
    语句块1
}

else

{
    语句块2
}        

分析:

当判断的条件成立,则执行语句块1,不成立就执行语句块2。

那么语句块为由" { } " 包围的一个或者多个语句的集合。它的作用是当我们要包含多条语句我们需要使用" { } " ,否则只能控制一条语句。

例如:当我们if else 需要控制多条语句就需要加" { } "

这两边代码if else 语句都是包含多条语句,左图错误的是当包含多条语句时,没有使用" { } "。

当我们不需要包含多条语句,只有一条语句时,可以省略" { } "。

#2. 只使用 if 语句

if 和 else不一定一起使用,当我们需要满足某种条件时进行一些操作,而不满足条件时就不需要进行任何的操作,这个时候我们只需要使用 if 语句。所以,if else是不一定是同时出现。

单独的使用if语句的形式如下: 

if(判断条件)

{
    语句块
}

意思为:如果判断条件成立就执行该语句,否则直接跳过。执行过程为下图: 

我们可以写一段代码来演示。 

当(a < b)成立就执行了"hello C语言"语句,不成立则跳过,什么也不输出。

#3. if else 的嵌套使用

if else语句不仅仅可以单独使用if语句,也可以多个if else使用,构成多个分支,也就是if else 的嵌套使用,

if else 代码形式如下: 

if(判断条件1)

{
    语句块1
} else  if(判断条件2)

{
    语句块2
}else  if(判断条件3)

{
    语句块3
}else  if(判断条件n)

{
    语句块n
}else

{
     语句块n
}

分析:

意思为:从上到下依次检查判断条件,当某个判断条件成立时,则执行对应的语句块,if else语句就结束了。当前边所有的判断条件都不成立,则执行最后的else,输出语句块n。

简单说,当遇到了能够成立的判断条件,就会执行对应的语句块。其他的判断条件不会再执行判断。所以多个if else只有一个语句块被执行

我们可以写一段代码,例如输入成绩,输出对应的成绩等级,满分为100,及格线为60。

当我们输入成绩时,会输出对应的成绩等级区间。当条件满足(score >= 60 && score < 70),意思为输入的分数如果在 >= 60 并且 <70 则这个区间输出的成绩等级为C。同样的,当输入的成绩满足这个区间时(score >= 70 && score < 80),则执行对应的语句。

如果都不满足以上的条件判断,则会执行最后的else语句。 

#include<stdio.h>
int main()
{
	int score = 0; 
	scanf("%d", &score); 
	if (score >= 60 && score < 70)
		printf("你的分数等级为:C\n");
	else if (score >= 70 && score < 80)
		printf("你的分数等级为:B\n");
	else if (score >= 80 && score < 90)
		printf("你的分数等级为:A\n");
	else if (score >= 90 && score <= 100)
		printf("你的分数等级为:A+\n");
	else
		printf("你的分数等级为:D\n");  
	return 0; 
}

#4.悬空 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;
}

很多初学者,可能上来就直接判断a为0,不等于1,所以不执行if语句,执行else语句。打印“haha”

那结果是不是说的那样?

当我们运行代码后,发现输出的结果为:什么都没输出。 

分析:

那么为什么会这样? 

这就是悬空else的问题,如果有多个if和else,我们可以记住一个方法口诀,就是:else总是与最近的 if 匹配。

在上边的代码中,我让else和第一个if语句对齐,让我们误以为else是与第一个if匹配的,当if语句不成立的时候,自然想到的就是执行else语句,打印"haha"。但是实际上,else是和第二个if 匹配的,这样后边的if else 语句是嵌套在第一个if语句中,当第一个if语句的条件不成立时,嵌套的 if 和else 就没有机会执行,最终的结果为什么都没输出。 

二.switch 语句详解

#1. if 语句和 switch 语句的对比

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。C语言虽然没有限制 if else 能够处理的分支数量,但是当分支过多时,用 if else 处理会比较不方便,而且容易出现 if else 配对出错这一情况,那么 switch 语句就是一种特殊形式的 if else 结构,能用于判断条件有多个结构的情况。使得多重 if else 更加方便,易读的使用。

那么我们可以使用代码来进行对比,例如:输入一个整数,输出该数字对应的星期几。

1.这是使用 if else 语句的代码:

代码如下:

#include<stdio.h>
int main()
{
	int n = 0; 
	printf("请输入一个数字:");
	scanf("%d", &n); 
	if (n == 1)
		printf("星期一\n");
	else if (n == 2)
		printf("星期二\n");
	else if (n == 3)
		printf("星期三\n");
	else if (n == 4)
		printf("星期四\n");
	else if (n == 5)
		printf("星期五\n");
	else if (n == 6)
		printf("星期六\n");
	else if (n == 7)
		printf("星期日\n");
	else
		printf("输入错误\n");  
	return 0; 
}

运行结果: 

2.这是使用 switch 语句的代码:

代码如下: 

#include<stdio.h>
int main()
{
	int n = 0;
	printf("请输入一个数字:"); 
	scanf("%d", &n); 
	switch (n)
	{
	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("输入错误\n"); 
		break;  
	}
	return 0; 
}

运行结果: 

分析:

 经过对比,使用 switch 语句是能够更好的表达也更加简单。 

#2. switch 语句的表达式 

switch 语句的表达式如下: 

switch(表达式)

{
    case 整型数值1: 语句 1;
    case 整型数值2: 语句 2;
    ......
    case 整型数值n: 语句 n;
    default: 语句 n+1;
}

它的执行过程: 

1. 首先从switch(表达式)的值计算,假设值为num。 

2. 从第一个 case 开始,比较"整型数值1"和num。如果它们两个相等,就执行冒号后的所有语句。也就是从"语句1"一直执行到"语句n+1",而不管后面的 case是否匹配成功。 

3. 如果"整型数值1"不能和num相等,那么就会跳过  case 整型数值1: 语句 1;继续往下比较第二个case ,如果第二个case和num又不相等,就继续比较第三个case ...... 。一旦发现有某个case的整型数值能够和num相等,那么就执行后面所有的语句。例如:"整型数值4"和num相等,那么就会从"语句4"一直执行到"语句n+1"  。 

4. 如果一直到最后都没有整型数值能够和num相等,那么执行 default 后面的语句"n+1"  。

下图为 switch 语句执行过程图:

我们可以使用代码来演示,

代码如下: 

#include<stdio.h>
int main()
{
	int n = 0;
	printf("请输入一个数字:");
	scanf("%d", &n);
	switch (n)
	{
	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");
	default:
		printf("输入错误\n");
	}
	return 0;
}

运行结果: 

分析:

我们可以看到结果,当我们输入1,发现1和 case 1 匹配成功。于是就执行case 1语句以及后面的所有case 的语句,但是我们只是想执行case 1的语句,并不想执行其他case的语句,这不是我们想要的结果,那么为了实现这一结果,必须要在后面加入 break;语句。 

#3. switch 语句和 break 语句 

break 语句和 if 语句以及 switch 语句一样,都是C语言中的一个关键字。是用于跳出 switch 语句,我们知道了 switch 语句也是有分支的效果,只有在 switch 语句中使用 break 才能够跳出 switch 语句,当某个 case 语句后边是没有 break 语句,代码就会继续往下执行,所以其他的 case 语句中的代码就会被执行。只有遇到 break 语句或者 switch 语句的结束才会停止。

对于 switch 语句中的 break 语句是非常的重要,是能够实现真正的分支效果。 

我们可以使用 break 语句来修改前边表达不够准确的代码:

代码如下: 

#include<stdio.h>
int main()
{
	int n = 0;
	printf("请输入一个数字:"); 
	scanf("%d", &n); 
	switch (n)
	{
	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("输入错误\n"); 
		break;  
	}
	return 0; 
}

运行结果: 

通过 break 语句的添加我们可以看到实现了目标。

#4. switch 语句中的 default 语句

在前边的代码中我们也看到了 switch 语句中的 default 语句。那么 default 语句的作用是什么? 在使用 switch 语句时,我们会遇到一些情况,当 switch 语句中的 case 的整型数值无法和 switch 语句的表达式相匹配时,这时候我们可以做一些处理,那么就得加入 default 语句。 

我们可以用代码来演示,例如:1~5是工作日,6~7是休息日,不在这2个范围的就报出错误。 

代码如下:  

#include<stdio.h>
int main()
{
	int n = 0;
	printf("请输入一个数字:"); 
	scanf("%d", &n); 
	switch (n)
	{
	case 1: 
	case 2: 
	case 3: 
	case 4: 
	case 5: 
		printf("工作日\n");  
		break; 
	case 6: 
	case 7:
		printf("休息日\n"); 
		break;  
	default: 
		printf("输入错误\n"); 
		break; 
	}
	return 0;
}

运行结果: 

当然 default 语句没有也是可以,只不过当 switch 语句的表达式与 case 语句的整型数值不相等时,不输出任何值。 

#5. switch 语句中的 case 和 default 的顺序问题 

其实在 switch 语句中,case 语句和 default 语句是没有顺序要求的,只要你的顺序满足实际的要求即可,不过通常来说,default 语句都是放在最后处理的。 

例如这一段代码,我把 default 语句放在前边也是没有问题。 

#include<stdio.h>
int main()
{
	int n = 0;
	printf("请输入一个数字:"); 
	scanf("%d", &n); 
	switch (n)
	{
	default:
		printf("输入错误\n");
		break;
	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;
	}
	return 0; 
}

#6. switch 语句的补充说明

1. case 语句后面的值必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。例如下边的例子

2. default 语句不是必须的,没有 default 语句也可以,只不过如果所有的 case 语句与表达式匹配失败时,就什么都不执行。 

case 10: printf("..."); break;  //正确
case 8+9: printf("..."); break;  //正确
case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
case 9.5: printf("..."); break;  //错误,不能为小数
case a: printf("..."); break;    //错误,不能包含变量
case a+10: printf("..."); break;  //错误,不能包含变量

三. while 循环语句详解

在前边我们已经介绍了顺序结构以及选择结构,那么接下来就轮到了循环结构。循序结构也就是重复执行一行代码。那么循环结构也就有 while 循环语句,do while 循环语句 以及 for 循环语句。我们就先讲解 while 循环语句。 

#1. if 语句和 while 循环语句的对比 

我们先进行 if 语句和 while 循环的一个对比,代码如下: 

这是 if 语句的代码:

#include <stdio.h>
int main()
{
	if (1)
		printf("hehe\n"); //if后边条件满⾜,打印⼀次hehe
	return 0;
}

运行结果: 

这是 while 循环语句的代码 : 

#include <stdio.h>
int main()
{
	while (1)
		printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe
	return 0;
}

运行结果: 

分析:

经过对比,我们可以发现,if 语句如果表达式结果为真,只是执行了一次。但是 while 循环语句结果为真,是死循环。 

那么当 while 循环的表达式结果为假就什么都不执行。

代码如下: 

#include <stdio.h>
int main()
{
	while (0)
		printf("hehe\n"); //while后边的条件不满⾜,什么都不打印
	return 0;
}

运行结果: 


 

#2. while 循环语句的形式

while 循环语句的形式如下 :

while(表达式)

{
    语句块
}

表示为,先执行计算括号中的表达式的值,如果执行的结果为真(非0)时,就执行"语句块",执行完"语句块",就再次进行表达式的值计算,如果还是为真,就继续执行"语句块"。这一过程的结束是直到表达式计算的值为假(0),就退出循环,那么 while 循环语句就结束了。

下图是 while 语句的执行流程图: 

首先上来执行判断表达式,如果表达式为假,则循环结束。如果表达式判断为真,则执行语句,语句执行完接着再判断,是进行下一次判断。 

那么我们可以用 while 循环语句来演示代码,例如:打印1~10数字。 

代码如下: 

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

运行结果: 

分析:

该代码过程是,先进行 while 循环的表达式,如果表达式的结果为真,就执行语句。该程序中表达式为 n <= 10 ,n = 1 ; 所以该表达式为真,就执行语句。n++是可以改变变量的值,这样随着循环的不断执行,循环条件中的变量的值也不断的变化。当不满足 n <= 10 时,就停止了循环,while 循环也就结束。 

四. do while 循环语句的详解

#1. do while 循环语句和 while 循环语句的对比

1.C语言的循环不仅仅是 while 循环还有 do while 循环以及 for 循环,那么接下来我们就说明 do while 循环。do while 循环和 while 循环别看挺像的,但是它们也有不同之处。

2.不同之处在于,do while 循环会先执行"语句块",然后再判断表达式是否为真,如果为真就继续执行;如果为假,就结束循环。因此,do while 循环是至少要执行一次"语句块",这是和 while 循环不同的地方。

我们可以写代码来判断一下这两个循环语句的不同。 

这是 while 循环语句的代码: 

#include<stdio.h>
int main()
{
	while (0)
	{
		printf("HELLO WORLD\n"); 
	}
	return 0; 
}

运行结果: 

这是 do while 循环的代码: 

#include<stdio.h>
int main()
{
	do
	{
		printf("HELLO WORLD\n"); 
	} while (0); 
	return 0; 
}

运行结果:  

分析:

经过这2段代码的对比,我们可以看到,while 循环的表达式结果为假,条件不成立,所以不会执行语句,也就不会打印出"HELLO WORLD";那么 do while 循环的表达式结果也是为假,条件也不成立,但是还是执行了语句"HELLO WORLD",这是因为无论表达式的结果是真还是假,语句都会至少执行一次,这是 do while 循环的特点。 

#2. do while 循环语句的表达式

下图为 do while 循环的一般表达式: 

do{
    语句块
}while(表达式);

下图为 do while 语句的执行流程图: 

do while 循环也是可以完成和 while 循环一样的循环作用。我们可以写一段代码,打印出1~10的数字。

代码如下: 


#include<stdio.h>
int main()
{
	int n = 1; 
	do
	{
		printf("%d ", n); 
		n++;  

	} while (n <= 10); 
	return 0;
}

 运行结果: 

分析: 

所以对于 while 循环和 do while 循环的选择应用,我们可以根据情况的不同选择对应的方法。如果是想先判断再执行语句,可以选择 while 循环语句;如果是想先执行语句再进行判断,可以选择 do while 循环语句。 

五. for 循环语句的详解

#1. for 循环语句的表达式

对于循环结构我们在前边也介绍了 while 循环以及 do while 循环。那么最后我们就介绍 for 循环,那么 for 循环它的使用起来更加灵活,完全的可以去替代 while 循环。  

下图是 for 循环的语法表达式:  

for(表达式1; 表达式2; 表达式3)
{
    语句块 
}

分析: 

1. 表达式1会首先的被执行,而且只会执行一次,以后都不会被执行。这一步骤是允许你声明并且初始化任何循环控制变量,可以认为这是一个初始化的语句。 

2. 执行完表达式1 ,接下来会判断表达式2,表达式2一般是一个关系表达式。表达式2是用于判断是否执行语句块的,也被称为"循环条件"。如果判断结果为真,则会执行语句块;如果判断结果为假,则不会执行语句块。

3. 接着执行表达式3 ,表达式3是用于控制循环的变量,很多情况下是一个带有自增或者自减操作的表达式。

4. 当再次判断的时候,不会再执行表达式1 ,而是表达式2和语句块以及表达式3的循环过程,这个过程表达式2的判断如果是真的,接着执行语句块,然后执行表达式3(表达式2——>语句块——>表达式3),这个过程会不断循环;当判断的结果为假,那么循环结束。 

5. for 循环的表达式1,表达式2,表达式3,可以都不写,只要在它们之间有分号也可以,只不过最终的执行是死循环,表达式2默认的判断结果为真。 

下图为流程图: 

#2. for 循环语句的用法

我们可以写一段代码演示,例如:用 for 循环输出1~10数字。 

代码如下:

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

运行结果:

分析

我们先创建了 i 变量并且进行了初始化,然后 进行 for 循环,表达式1给的值为1,做为循环的起始点 ;表达式2进行判断当 i <= 10时为真,执行循环,当不满足这个表达式时,终止循环;表达式3为控制 i 变量的自增,每次都会自增1。

#3. for 循环中的三个表达式

前面我们有提到,for 循环中的三个表达式都是可以省略的,只要有分号 " ;" 即可。那么就让我们来验证一下。 

1.省略初始化条件(表达式1) 

代码如下: 

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

运行结果: 

分析: 

我们可以看到就算是省略了表达式1也是没问题的,上边代码中 i = 0,移到了 for 循环的外边。 

2.省略循环条件(表达式2)

代码如下:

#include<stdio.h>
int main()
{
	int i = 0; 
	for (i = 0 ; ; i++)
	{
		printf("%d ", i); 
	}
	return 0; 
}

运行结果: 

分析: 

我们可以看到是死循环,表达式2如果没有,默认为是真,相当于 while(1)死循环。所谓的死循环,就是表达式永远的成立。循环会一直的执行下去,永远不会结束。死循环对于程序来说是有危害的,所以我们应该避免程序死循环 。 

3.省略了控制变量(表达式3)

代码如下: 

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

运行结果: 

分析: 

如果省略了表达式3的控制变量(自增或者自减),那么变量 i 的值不会进行改变,会造成死循环,所以我们应当加上控制变量。

对于控制变量我们也可以不放在表达式3这个位置,

代码如下: 

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

运行结果: 

六. break 语句的详解

在前面的 switch 语句中我们有提到 break 语句,是用来跳出 switch 语句的。break 语句也不仅仅是只能用于 switch 语句,对于 if 语句 ,while 循环语句 ,do while 循环语句以及 for 循环语句都是可以使用的。  

#1. break 语句的语法

break 语句的语法:  

break;

break 语句的流程图: 

 

break 语句的语法有以下两种: 

1. 当 break 语句出现在一个循环语句内,循环会立刻的终止。程序会继续执行接着循环的下一条语句。

2. 可以用来终止 switch 语句中的一个 case,前边我们已经使用 break 语句在 switch 语句中的用法,我们也可以使用 break 语句在其他循环语句中。 

3. 如果使用的嵌套循环,break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行语句。

break 语句在 for 循环语句中的作用: 

代码如下: 

#include<stdio.h>
int main()
{
	int i = 0; 
	for (i = 1; i <= 10; i++)
	{
		printf("%d\n", i); 
		break;  
	}

	printf("HELLO WORLD\n"); 
	return 0; 
}

运行结果: 

分析: 

我们可以看到 for 循环中加入了 break 语句,过程为当 :表达式1 为 i = 1 , 然后进行表达式2的判断 1 <= 10 ,为真,执行 printf 在屏幕上打印 1,然后执行了 break 语句,就直接跳出了循环,for 循环也就终止了,不会再继续执行循环,紧接着继续执行了 for 循环的下一条语句,打印出了 "HELLO WORLD" 。 

七. continue 语句的详解

1.对与 continue 语句不像 break 语句那么暴力,break 是用来结束所有的循环,循环语句不再有机会执行;continue 是用来结束本次的循环,会直接调到下一次循环,如果循环的条件成立还会继续的循环,continue 语句只用在 while 循环语句,for 循环语句,以及 if 语句中一起使用。

2.continue 语句对于 for 循环,执行了 continue 语句后自增的语句仍然会执行,对于 while 和 do while 循环,会重新执行条件判断语句。

#1. continue 语句的语法

1.continue 语句的语法; 

continue;

 2. continue 语句的流程图: 

#2. continue 语句用于 for 循环语句

代码如下: 

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

运行结果: 

分析: 

我们可以看到 for 循环中的 if 语句判断条件为: i == 5  , 则执行 continue 语句。所以在循环的过程中,如果满足了 if 语句中的判断条件,则跳过了打印数字5,也就不会执行打印数字5  。 

#3.continue 语句用于 while 循环语句

代码如下 : 

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

运行结果: 

 运行过程: 

分析:

我们可以看到,while 循环中包含了一条 if 语句,语句中判断条件为 i == 5,当满足该条件时,执行 continue 语句,但是执行的结果和 for 循环是不一样的,是因为,while 循环没有机会去执行控制变量 i++,所以 i 的值一直为 5 ,就造成了一个循环的判断。  

#4.continue 语句用于do while 循环语句

 continue 语句作用与 while 循环语句和 do while 循环语句是一样的。 

代码如下: 

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

运行结果: 

 运行过程: 

分析: 

我们可以看到其实和 while 循环语句一样的效果,当满足 if 语句的条件判断时,continue 执行,下边的语句是根本没有机会去执行的,而是直接跳过进入下一次的循环。 

八. goto 语句的详解

对于 goto 语句其实是用的很少,goto 语句是允许把控制无条件的转移到同一函数内的被标记的语句。 

建议:在任何的编程中,都不是很建议使用 goto 语句,是因为它使得程序的控制难以追踪,使得程序难以理解和修改。

#1. goto 语句的语法

1. goto 语句的语法: 

goto label;
..
.
label: statement;

2. goto 语句的流程图: 

我们可以来演示: 

#include<stdio.h>
int main()
{
	printf("haha\n");
	printf("haha\n");
	goto next;

	printf("haha\n");
	printf("haha\n");
	printf("haha\n");

	next:
	printf("enen\n");
	return 0;
}

使用了goto语句,就会跳过中间的3句"haha",执行到next: 

结束

                感谢大家的阅读,希望能有所帮助! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值