C语言期末复习版之循环结构(基础知识梳理总结)三

大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入知识整理复习模式。若有错误,请多多指教。

前言 

        在C语言中,有三个常用的程序结构,分别是:顺序结构、选择(分支)结构、循环结构。

1、顺序结构:代码从前向后跑;

2、选择(分支)结构:根据条件是否满足而决定执行不同的操作,重点要掌握 if else、switch 以                        及条件运算符;

3、循环结构:重复执行同一段代码。

今天还是接着上一期的内容讲,若没有看上期的小伙伴可以去上期看看,满满的干货呦。

C语言期末复习版(基础知识梳理总结)一

C语言期末复习版之选择结构(基础知识梳理总结)二


 

目录

大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入知识整理复习模式。若有错误,请多多指教。

前言 

【七】循环结构

 一、while 

1)一般形式

 2)while循环流程图

3)用while循环 输入 n 个数并求和 

二、do-while

            1)一般形式

  2)do-while循环流程图

 3)用do-while循环 输入 n 个数并求和 

三、while和do-while小结(重点)

四、for 

1)一般形式

2)for循环流程图

 3)用for循环 输入 n 个数并求和 

4)总结

五、C语言中的break和continue

1)break

定义:

举例:

运行结果: 

 2)continue

定义: 

举例:

运行结果:

3)总结

六、循环的嵌套

1)概念:

2)说明:

3)例题:



【七】循环结构

思维导图

 C语言期末复习版之循环结构(基础知识梳理总结)三

 


​ 

 一、while 

 

1)一般形式

while(循环条件)
{
    循环体;
}

 当循环条件为真(非零)时,执行循环体,执行完循环体,再次计算循环条件,如果循环条件为真,继续执行循环体。如果循环条件为假(零)跳出循环,执行while后的程序。

 2)while循环流程图

C语言期末复习版之循环结构(基础知识梳理总结)三

 

3)用while循环 输入 n 个数并求和 

 

#include "stdio.h"
int main()
{
    int  a, s = 0, i = 0, n;
    printf("请输入相加个数:\n");
    scanf("%d", &n);
    while (i < n)    
    {
        scanf("%d", &a);

        s = s + a;

        i++;        //使i向n靠近
    }

    printf("%d个数相加和为%d\n", n , s);
    return 0;
}

运行结果:

C语言期末复习版之循环结构(基础知识梳理总结)三 

思考:结束时循环几次?i为多少?若循环体没有i++,结果如何?

代码分析: 

1,当程序运行到scanf时输入 3,把3赋值给n;

2,当程序第一次运行到while时,i==0,0<3,即i<n成立;所以会执行循环体,执行结束后,i变成1

        ,a为4,s为4,

3,当程序第二次运行到while时,i==1,1<3,即i<n成立;所以会执行循环体,执行结束后,i变成2

        ,a为8,s为12。

4,当程序第三次运行到while时,i==2,2<3,即i<n成立;所以会执行循环体,执行结束后,i变成3

        ,a为12,s为24。

5,当程序第四次运行到while时,i=3,3==3,即i==n,i<n不成立,循环结束,此时 i=3,a=12,s=24.

由此可得:循环3次,结束时i为3,若没有i++,程序会变成死循环,即程序不会结束。

4)例题

        以-1为终止标记,键盘输入若干个学生的成绩,然后求其平均成绩。

#include <stdio.h>
int main()
{
    int  x, n = 0, s = 0;
    float  av;
    
    scanf("%d", &x);
    while (x != -1)
    {
        n++;    //学生人数。
        s += x;    //计算总分。
        scanf("%d", &x);
    }
    av = 1.0 * s / n;
    printf("%.2f\n", av);

    return 0;
}

运行结果

C语言期末复习版之循环结构(基础知识梳理总结)三 

 本例程序中的循环条件为x!=-1,其意义是,只要从键盘输入的不是-1就继续循环。循环体n++;表示学生人数


二、do-while

 1)一般形式

do
{
    循环体;
}while(循环条件);//注意分号不能少。

        do-while循环与while循环的不同在于:它会先执行“循环体”,然后再判断循环条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“循环体”,而while可能一次也不执行。 

  2)do-while循环流程图

C语言期末复习版之循环结构(基础知识梳理总结)三

 

 3)用do-while循环 输入 n 个数并求和 

#include "stdio.h"
int main()
{
    int  a, s = 0, i = 0, n;
    printf("请输入相加个数:\n");
    scanf("%d", &n);
    do
    {
        scanf("%d", &a);

        s = s + a;

        i++;
    }while (i < n);    //分号不能少

    printf("%d个数相加和为%d\n", n , s);
    return 0;
}

运行结果: 

C语言期末复习版之循环结构(基础知识梳理总结)三

建议:感兴趣的小伙伴可以根据上文的while循环 自己做一遍代码分析,注意第一次循环和最后一次循环,以及循环次数。

4)例题

                以-1为终止标记,键盘输入若干个学生的成绩,然后求其平均成绩。

#include <stdio.h>
int main()
{
    int  x, n = 0, s = 0;
    float  av;
    
    scanf("%d", &x);
    do
    {
        n++;    //学生人数。
        s += x;    //计算总分。
        scanf("%d", &x);
    }while (x != -1);
    av = 1.0 * s / n;
    printf("%.2f\n", av);

    return 0;
}

运行结果:

C语言期末复习版之循环结构(基础知识梳理总结)三


 

三、while和do-while小结(重点)

1,while先判断,后循环。do-while先循环,后判断。

2,在循环体至少执行一次的前提下,while和do-while循环次数一样,不要以为do-while比while多循环一次。

//while
i=0;
while(i<5)
{
    printf("*");
    i++;
}


//do-while
i=0;
do
{
    printf("*");
    i++;
} while(i<5);    

 这两个都是循环5次哦

3,while循环的while后面没分号,do-while的while后面有分号。

4,do-while至少循环一次,while不一定。

5,循环体内必须有使循环趋于终止的条件;

 C语言期末复习版之循环结构(基础知识梳理总结)三

6,注意循环初值与循环条件、循环体的联系; 

C语言期末复习版之循环结构(基础知识梳理总结)三


 

四、for 

1)一般形式

for(表达式1; 表达式2; 表达式3)
{
    循环体;
}

//一般应用形式

for(循环变量赋初值; 循环条件; 循环变量增值)    
                                //表达式可以没有,但分号必须有。一般表达式2也必须存在。
{
    循环体语句;
}

特点:先判断条件,     后执行语句。

“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。

 

2)for循环流程图

C语言期末复习版之循环结构(基础知识梳理总结)三

循环执行步骤:

第一,先进行循环控制变量初始化(即表达式1);

第二,执行循环终止条件(相当于while的()里面的内容),如果判断结果为真,则进入第三步;如果为假则循环终止并退出;

第三,执行循环体;

第四,执行循环控制变量增量,转入第二步。

 第二和 第三是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 第二和 第三。

 

 3)用for循环 输入 n 个数并求和 

 

#include "stdio.h"
int main()
{
    int  a, s = 0, i, n;
    printf("请输入相加个数:\n");
    scanf("%d", &n);
    for(i=0;i<n;i++)
    {
        scanf("%d", &a);

        s = s + a;
    }

    printf("%d个数相加和为%d\n", n , s);
    return 0;
}

 运行结果:

C语言期末复习版之循环结构(基础知识梳理总结)三

 代码解析:

1,先运行表达式1(i=0)初始化;执行循环条件,0<3,即i<n成立,执行循环体,给n赋值为4,s=0+4,i变成1;

2,第二次执行循环条件,i=1,1<3,即i<n成立,执行循环体,给n赋值为8,s=4+8,s=12,i变成2

3,第三次执行循环条件,i=2,2<3,即i<n成立,执行循环体,给n赋值为12,s=12+12,s=24,i变成3

4,第四次执行循环条件,i=3,3=3,即i<n不成立,跳出循环,执行for循环后的语句。此时s=24,

i=3,

4)总结

1,for语句常用于循环次数固定,给定循环初值和终值的情况;

2,for循环为“当型”循环;

3,   for语句的表达式可部分或全部省略,但分号不能省; 

                如:for(  ;;)

4,for语句的循环体为多条语句时,应构成复合语句。 


 

五、C语言中的break和continue

使用while和for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。

1)break

定义:

break语句通常用在循环语句开关语句中,用来从循环体内跳出循环结构,以提前结束循环。。

当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。

当break语句用于do-while、for、while循环语句中时,可使程序终止循环。而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。

举例:

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

    return 0;
}

运行结果: 

C语言期末复习版之循环结构(基础知识梳理总结)三

break是跳出循环,故循环在i=4后面的4,5,6,7 没有打印。

 2)continue

定义: 

其作用为结束本次循环。即跳出循环体中下面尚未执行的语句,对于while循环,继续求解循环条件。而对于for循环程序流程接着求解for语句的表达式3。

举例:

#include<stdio.h>
int main()
{
    int i;
    for (i = 0; i < 8; i++)
    {
        if (i == 4)
            continue;
        printf("%d\n", i);
    }

    return 0;
}

运行结果:

C语言期末复习版之循环结构(基础知识梳理总结)三 

continue只跳过i=4的continue后面的本次循环,故只没有打印4.

3)总结

        break跳过整个循环,continue跳过本次循环。


 

六、循环的嵌套

1)概念:

        循环体中内嵌了一个或多个循环语句。

2)说明:

 ① 嵌套可以是多层的 ;

② 一个循环体必须完完整整嵌套在另一个循环体内,不能出现交叉;

C语言期末复习版之循环结构(基础知识梳理总结)三 C语言期末复习版之循环结构(基础知识梳理总结)三

③ 三种循环可以互相嵌套 。

C语言期末复习版之循环结构(基础知识梳理总结)三                 ​​​​​​​                               ​​​​​​​C语言期末复习版之循环结构(基础知识梳理总结)三        ​​​​​​​        

C语言期末复习版之循环结构(基础知识梳理总结)三

 

 

 

3)例题:

        计算 1!+2!+ … +20!

方法一:

#include "stdio.h"
int main()
{
    double s = 0, t = 1;
    int i;
    for (i = 1; i <= 20; i++)
    {
        t *= i;
        s += t;
    }
    printf("%e\n", s);
    return 0;
}

运行结果

C语言期末复习版之循环结构(基础知识梳理总结)三

 方法二(循环嵌套):

#include "stdio.h"
int main()
{
	int  i, n;
	double  s = 0, t;
	for (n = 1; n <= 20; n++)
	{
		t = 1;
		for (i = 1; i <= n; i++)
			t = t * i;
		s += t;
	}
	printf("s=%e\n", s);
	return 0;
}

运行结果:

C语言期末复习版之循环结构(基础知识梳理总结)三 


循环语句我们复习完了,小主讲的都是基础知识点,若大家觉得有帮助,不妨动动你的小手指给小主个关注。去刷点题上手吧!

上一篇:杜教筛&min_25筛复习


下一篇:重新点亮shell————awk 控制语句[十三]