循环语句(循环结构)——“C”

简介: 循环语句(循环结构)——“C”

各位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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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()函数


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


调用该函数需要嵌入头文件<stdlib.h>

image.png

image.png

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

#include<stdio.h>
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们一起学到更多知识,有不足的还请各位大佬多多指点!!!

相关文章
|
1月前
|
C++
c++循环结构讲解
c++循环结构讲解
24 0
|
1月前
|
C++ 容器
C++循环结构
C++循环结构
|
1月前
第6章循环结构(二)
第6章循环结构(二)
12 0
|
1月前
|
C++
12循环结构
12循环结构
16 0
|
1月前
|
安全 程序员 C#
C#循环结构
C#循环结构
21 0
|
3月前
|
机器学习/深度学习 资源调度 物联网
C++系列-第3章循环结构-29-累乘和连除
C++系列-第3章循环结构-29-累乘和连除
|
3月前
|
人工智能 程序员 C++
C++系列-第3章循环结构-26-认识do-while语句
C++系列-第3章循环结构-26-认识do-while语句
|
4月前
|
算法 C++
C++007-C++循环结构
C++007-C++循环结构
|
4月前
|
算法 C++
C++009-C++循环结构while
C++009-C++循环结构while
|
4月前
选择结构和循环结构
选择结构和循环结构
53 0