浅谈C语言——正式步入C语言学习(2)

循环语句与转移语句

今天上新较晚,学习内容较多且有些绕,哈哈哈哈,但是还阻挡不了我对上新的积极性。
本次阅读大约12分钟,快来浏览阅读吧!!!

本次介绍C语言的重复语句,这种语句允许用户设置循环。 每个循环都有一个控制表达式,如果表达式为真(即值不为0),那么继续执行循环。

循环结构

1、 while语句:

While语句执行流程图
在这里插入图片描述

特点:while循环在循环体执行之前测试控制表达式
说明:while后的圆括号表达式可以是任何合法的表达式,但不能为空。
当循环体内只有一条语句,可以省略花括号。为了避免出现死循环,还需要控制循环条件的值。
按照惯例:先分析一下简单的小案例:

/*使用while语句实现1+2+....+10的和并输出*/
#include <stdio.h>
int main()
{
int sum=0;//保存每次计算的总和
int i=1;//因为从1 开始加到10计算,所以初始值应为1
while(i<=10)
{
sum+=i;
printf("sum is : %d\n",sum);
i++;
printf("i is : %d\n",i);
}
printf("结果是:%d\n",sum);
return 0;
}

在这里插入图片描述
通过跟踪观察:1~10的和是一个单位递增1且累加得到的
初始值i=1 执行一次sum=1 ;自增1后i=2,则sum=1+2得到3,显然观察出。第二次执行的是前两次的一个和即1+2=3,这里的3就表示了前两次相加结果那么到第三次则表示的前三次的结果,知道第十次执行时。则表示前10次的和的结果,当执行第11次时则会出现 i<=10为逻辑0的情况,所以直接输出总结果。

还有一种,那就是比如“编写一个平方表” ,也是应用while语句来编写,然后具体怎么来分行,最直接的办法就是当执行条件自增1的时候,直接输出一行,直到最后要求几行,则到哪一行停止,然后你会发现所列行数和期望的行数一样。
程序如下:

/*编写平方表*/

#include<stdio.h>
int main()
{
	int n,sum=0;
	printf("输入一个数:\n");
	scanf("%d",&n);

	while(sum<n)
	{
   sum++;
	printf("%4d",sum);
	printf("%4d\n",sum*sum);
	
	}
	return 0;
}

以6为例进行6行输出。
在这里插入图片描述
当然,应用这种技巧也可以做一些喜欢的图形进行输出,有兴趣的话不妨试一试哟!

2、 do -while语句

在这里插入图片描述

执行do-while语句时,先执行循环体再计算控制表达式的值,接下来举例一个简单的小程序:

/*计算1+2+....+10的输出结果*/
#include<stdio.h>
int main()
{
	int sum=0,a=1;
	do
	{
	sum=sum+a;
	a++;
	}while(a<=10);
	printf("累加结果为:%d\n",sum);
return 0;
}

在这里插入图片描述
正如以上程序,需要注意在while()后一定要加一个”;”这是经常出错的一点,先执行再循环,此语句和while语句类似,掌握较为轻松。

3、 for语句

在这里插入图片描述
for语句是功能较为强大的一种循环。看起来for语句是有点复杂,但是使用较为灵活,应用层面也是比较广的。来一段小程序,来看一下:

/*计算1+2+....+10的输出结果*/
#include<stdio.h>
int main()
{
	int sum=0;
	int i;
	for(i=1;i<=10;i++)
	{
	sum+=i;

	}
	printf("结果是:%d\n",sum);

return 0;
}

在这里插入图片描述
是不是相比较而言,这套程序比较简洁,for语句一般执行表达式从左到右执行,简单明了,也可以相应比较好了解,一气呵成,然后接下来运行过程和上两套程序类似。
在for语句可以有变量自增和变量自减的循环,这是需要注意的,因为往往这边会出现问题,造成一直在循环的结果。

此上三种方法均为常用的循环方法,当然也可以相互套用,但是尽量思路清晰,不要造成过度的拥堵,以免发生不可挽回的错误。

二、转移语句

转移语句一般包括goto语句、continue语句和break语句

goto语句

goto语句为无条件转移语句,小编很庆幸,在大学时期用过一次,因为忘记了这个语句,所以初次用的时候感觉很高大上(原谅小编没见过世面,哈哈)
可以跳出一个循环也可以跳出一个循环,但是不要忘记跳转标识符哦,这就相当于一个跳转的目标。
来吧,展示,还是累加小程序:

/*计算1+2+....+10的输出结果*/
#include <stdio.h>
int main()
{
int sum=0;
int i=1;
flag:
sum+=i;
i++;
if(i<=10)
{
goto flag;
}
printf("结果是:%d\n",sum);
return 0;
}

在这里插入图片描述
此程序小编理解为,goto标识符为flag第一次执行他是直接跳过的,然后直到goto flag;
直接跳转到flag,又从flag开始执行,一直达到不符合条件停止。
goto虽然简单掌握但是在结构化程序设计中是不提倡的,表现为无规律、可读性差,但是也可适量使用!

continue语句

根据需求,需要在满足某个特定条件终止本次循环,跳过循环剩余语句,执行下一次循环,使用continue语句。

记得看过这么一个小段子是关于break语句和continue语句的。就说啊,假设你口渴,需要拿小杯子喝水,被子很小,这就需要不断地倒水喝水,当某一次喝饱了,就会放下水杯,当然杯子有水,停止倒水喝水的这个过程就是break语句;当一次喝水发现水中有灰尘,需要倒掉水,还口渴就需要继续倒水喝水,这个过程就是continue语句。

举一个小例子:

/*计算1~10奇数之和*/
#include<stdio.h>
int main()
{
	int sum=0;
	int i;
	for(i=1;i<=10;i++)
	{
	if(i%2==0)
	{
continue;
}
	sum+=i;	
	}
printf("结果是:%d\n",sum);
return 0;
}

在这里插入图片描述
此例就是if(i%2==0)(杯子里有灰尘)continue;(则倒掉) ,sum+=i;(继续喝),
printf(“结果是:%d\n”,sum);(喝饱了)是不是简单易懂呢,就是这样的,是不是很有意思。

break语句

接下来最直接的一个,直接退出循环break语句,上一节已经出现了,这就是退出循环,当执行到一点时,直接跳出循环来终止循环,可参考上一节的switch语句。
break语句不能用于switch语句和循环语句之外的其他任何语句中!

/*计算1+2+....+10的输出结果*/
#include<stdio.h>
int main()
{
int sum=0;
int i=1;
while(1)
{
if(i>10)
{
break;
}
sum+=i;
i++;
}
printf("结果是:%d\n",sum);
return 0;
}


在这里插入图片描述
这里的while(1)他就表示一直在执行条件,然后当超过条件时,接着break退出循环,进行结果输出。

看到这里是不是又学到了很多呢?
我认为是的,本次内容确实对于初学者来说是比较绕的,但是这个也是很重要的,希望多看几遍哦,慢慢就会了,也不要着急哦。
好了,看到这里别忘了点个赞哦,小编一直不断学习,共同进步,加油!
别忘了点个赞,可以私信或者评论哦,下期再见哦!

猜你喜欢

转载自blog.csdn.net/weixin_43540527/article/details/107867411