循环语句(循环结构)——“C”
创始人
2024-05-13 23:44:22
0

各位CSDN的uu们好呀,我又来啦,今天,小雅兰给大家介绍的是一个知识点,就是循环语句啦,包括while循环、do-while循环、for循环,话不多说,让我们一起进入循环结构的世界吧

首先,我们先来想一下,为什么需要循环控制?

   在日常生活中,或是在程序所处理的问题中,常常遇到需要重复处理的问题 

  •    要向计算机输入全班50个学生的成绩
  •    分别统计全班50个学生的平均成绩
  •    教师检查30个学生的成绩是否及格

例如:全班有50个学生,统计各学生三门课的平均成绩

 输入学生1的三门课成绩,并计算平均值后输出

scanf("%f %f %f",&s1,&s2,&s3);

aver=(s1+s2+s3)/3;

printf("avver=%7.2f",aver);

 输入学生2的三门课成绩,并计算平均值后输出

scanf("%f %f %f",&s1,&s2,&s3);

aver=(s1+s2+s3)/3;

printf("avver=%7.2f",aver);

要对50个学生进行相同的操作,就意味着上述三行代码需要执行50次,如果没有循环,那么上述三行代码就要重复50次,这样显得代码冗余

  •    大多数的应用程序都会包含循环结构
  •    循环结构、顺序结构和选择结构是结构化程序设计的三种基本结构,它们是各种复杂的基本结构单元

while语句的一般形式如下

   while(表达式)

      循环语句;

while循环的特点是:先判断条件表达式,后执行循环体语句

下面,我给大家举个例子,来让大家更好地理解while循环


  例1:求1+2+3+......+100

    解题思路:

  •         这是累加问题,需要先后将100个数相加
  •         要重复100次加法运算,可用循环实现
  •         后一个数是前一个数加1而得
  •         加完上一个数i后,使i加1可得到下一个数
#include
int main()
{int i=1;int sum=0;while(i<=100){sum=sum+i;i++;}printf("sum=%d\n",sum);return 0;
}

下面,我们再来看一个知识点,就是while语句中的break和continue

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

这里程序的输出结果为1 2 3 4

break在while循环中的作用:

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

所以:while中的break是用于永久终止循环的。

所以,当i==5时,break终止本次循环,故而只打印了1 2 3 4

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

这里程序的输出结果为1 2 3 4 死循环

continue在while循环中的作用就是:

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

进行下一次循环的入口判断。

所以,当i==5时,continue直接跳过while循环后面的语句,跳转到循环的入口判断,从而导致死循环的结果。


然后,我们再来看一段和continue有关的代码

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

这段代码的输出结果为2 3 4 6 7 8 9 10 11

continue只会跳过本次循环后面的代码


用do-while语句实现循环

  do-while语句的特点:先无条件地执行循环体,然后判断循环条件是否成立

  do-while语句的一般形式为:

                  do

                        循环语句;

                  while(表达式);

例2:用do-while语句求:1+2+3+......+100

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

例3:输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数

#include
int main()
{char ch=0;int letters=0;int space=0;int digit=0;int other=0;printf("请输入一行字符:\n");while((ch=getchar())!='\n'){if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){letters++;}else if(ch==' '){space++;}else if(ch>='0'&&ch<='9'){digit++;}else other++;}printf("字母数为:%d\n空格数为:%d\n",letters,space);printf("数字数为:%d\n其它字符数为:%d\n",digit,other);return 0;
}

for循环

    for(表达式1;表达式2;表达式3)

          循环语句;

表达式1

表达式1为初始化部分,用于初始化循环变量的。

表达式2

表达式2为条件判断部分,用于判断循环时候终止。

表达式3

表达式3为调整部分,用于循环条件的调整。


break和continue在for循环中

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

这段代码的输出结果为1 2 3 4

与之前介绍的while循环中的break一样,这里面的break也是跳出整个循环,所以5及5之后的数字都不会再打印

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

但是这里面的continue就与我们之前所说的不太一样了,这里面的continue跳过循环后面的语句,回到i++,进行循环条件的调整,直到不满足i<=10

所以,这段代码的输出结果为1 2 3 4 6 7 8 9 10


for语句的循环控制变量

建议:

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

      int i=0;

      //前闭后开的写法

      for(i=0;i<10;i++)

      {}

      //两边都是闭区间

      for(i=0;i<=9;i++)

      {}


                                                    死循环

永远不会退出的循环为死循环

for( ; ; )

{}


while(1)

{}


do

{

}while(1)


一般情况下,要极力避免死循环

  绝大多数程序不需要死循环。如果出现,往往都是bug

  时间过长的循环会造成”假死“效果,也要考虑解决


使用嵌套的循环体时,应注意以下问题:

  在嵌套的各层循环体中,使用复合语句(即用一对花括号将循环体语句括起来)保证逻辑上的正确性

  内层和外层循环控制变量不应同名,以免造成混乱

  嵌套的循环最好采用右缩进格式书写,以保证层次的清晰性

  循环嵌套不能交叉,即在一个循环体内必须完整的包含着另一个循环


下面给大家拓展一个小小的知识点

 exit()函数

作用是终止整个程序的执行,强制返回操作系统

调用该函数需要嵌入头文件

 


 最后,我们再来小小地看一段代码

#include
int main()
{int i=0;int k=0;for(i=0,k=0;k=0;i++,k++){k++;}return 0;
}

问题是:请问要循环多少次?

别看这段代码看上去简单,但是如果粗心大意,错误仍为找上你。

这个k=0为条件判断部分,0为假,所以一次循环都不会进入

在C语言中,0表示假,非0表示真


好啦,循环语句的部分就到这里啦,今天小雅兰学到了超多知识,掌握了分支语句和循环语句,分支语句包括if语句和switch语句,循环语句包括while语句、do-while语句和for语句

很高兴能与uu们一起学到更多知识,有不足的还请各位大佬多多指点!!!

相关内容

热门资讯

天下第一宫—黄帝... 天下第一宫—黄帝宫游览区导游词  作为一位兢兢业业的旅游从业人员,总不可避免地需要编写导游词,导游词...
导游词之大九湖 导游词之大九湖  我们今天游览的是被称其为湖北的“呼伦贝尔”的大九湖风景区,大九湖并非湖,而是一片沼...
上饶三清山导游词 上饶三清山导游词(通用9篇)  作为一名乐于助人的导游,通常需要用到导游词来辅助讲解,导游词具有形象...
洪崖丹井导游词 洪崖丹井导游词3篇  作为一名尽职尽责的导游,编写导游词是必不可少的,导游词具有注重口语化、精简凝练...
沈阳新乐遗址导游词 关于沈阳新乐遗址导游词范文  新乐文化遗址位于沈阳市皇姑区黄河北大街北运河北岸黄土高台之上,1977...
西山导游词 西山导游词(15篇)  作为一名专门为游客提供优质服务的导游人员,编写导游词是必不可少的,导游词具有...
介绍北京的导游词 介绍北京的导游词(通用10篇)  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想...
小小三峡导游词 小小三峡导游词(精选8篇)  作为一位兢兢业业的旅游从业人员,通常需要准备好一份导游词,导游词由引言...
烟台海昌鲸鲨馆导游词 烟台海昌鲸鲨馆导游词3篇  篇一:烟台海昌鲸鲨馆导游词  来到鲸鲨馆门前,别具一格的螺状建筑展现在眼...
神农架导游词 神农架导游词推荐  神农架于1986年经国务院批准为国家级森林和野生动物自然保护区。  神农架区为湖...
云南九乡导游词 云南九乡导游词  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播文化...
五台山殊像寺导游词 五台山殊像寺导游词  导语:对五台山的殊像寺,导游会怎样解说?下面是小编整理的五台山殊像寺导游词,欢...
孝感董永公园导游词 孝感董永公园导游词  董永公园位于孝感市,国家AAAA级旅游景区,位于孝感市城区槐荫大道东段,距武汉...
拜将台的导游词 拜将台的导游词  我们现在就来到了拜将台。拜将台作为汉初三遗址之一,它坐落在汉中城南,是刘邦拜韩信为...
庐陵文化生态园导游词 庐陵文化生态园导游词  庐陵文化生态园位于江西省吉安市吉州区城北、赣江之滨,整个公园是利用螺子山山体...
玉林都峤山导游词 玉林都峤山导游词  作为一位尽职的导游,可能需要进行导游词编写工作,导游词可以加深游客对景点的印象,...
山西省榆次常家庄园简介导游词 山西省榆次常家庄园简介导游词  常家庄园位于榆次西南东阳镇车辋村,距榆次17.5公里。车辋由四个小自...
黄山的景点导游词 黄山的景点导游词(通用7篇)  作为一名导游,通常需要准备好一份导游词,导游词一般是根据实际的游览景...
西双版纳热带植物园导游词 西双版纳热带植物园导游词推荐  各位朋友,大家好。今天我们将游览闻名遐迩、风光绚丽的中国科学院西双版...
浙江仙华山导游词 浙江仙华山导游词  作为一名具备丰富知识的导游,通常会被要求编写导游词,导游词事实上是一种对旅游景点...