版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章循环结构程序设计在解决实际问题的过程中,常常会遇到一些需要重复处理的问题。循环结构可用来处理需要重复处理的问题,所以,循环结构又称为重复结构。第4章循环结构程序设计在解决实际问题4.1循环的概念4.2语句4.3…循环4.4循环4.5语句和语句4.6多重循环4.7程序举例4.8三种循环语句的比较第4章循环结构程序设计第4章4.1循环的概念第4章循环结构程序设计第4.1循环的概念循环结构,又称为重复结构,是结构化程序设计的三种基本结构之一,在数值计算和很多问题的处理中都需要用到循环控制。例如,用迭代法求方程的根,计算全班同学的平均分等。几乎所有的应用程序都包含循环,它和顺序结构、选择结构共同作为各种复杂结构程序的基本构造单元。因此熟练地掌握选择结构和循环结构的概念及使用,是程序设计最基本的要求。4.1循环的概念循环结构,又称为重复结4.1循环的概念例如,计算1~100的累计和。根据已有的知识,可以用1+2+3+…+100来计算,但显然很繁琐。现在换个思路来考虑:首先设置一个累加器,其初值为0,利用来计算(i依次取1、2、…、100),只要解决以下3个问题即可:①将i的初值置为1;②每执行1次后,i值增1,其过程如下所示:0;1;重复执行部分;1;
③当i增到101时,停止计算。此时,的值就是1~100的累计和。4.1循环的概念例如,计算1~100的累计C语言提供了3种循环语句来实现:(1)()~循环语句(2)~()循环语句;(3)()~循环语句。下面我们将分别介绍这三种循环语句。4.1循环的概念C语言提供了3种循环语句来实现:4.1循环的概念4.2语句4.2语句4.2语句用来实现“当型”循环,其一般形式为:(循环条件表达式)循环体语句在执行语句时,先对循环条件表达式进行计算,若其值为非0(真),则反复执行循环体语句,直到循环条件表达式的值为0(假)时,循环结束,程序控制转至循环语句的下一条语句。其执行过程如图4-1所示。图4-1语句的执行过程4.2语句用来实现“当型”循环,其一般形式为:图4-使用语句时,应注意以下几个问题:①循环体语句可以是一个空语句、一个语句或一组语句。当循环体是一组语句时,则必须用花括号括起来,组成复合语句。图4-2计算1~100累计和的流程图和图描述4.2语句使用语句时,应注意以下几个问题:图4-2计算1~100累计<>(){;/*定义整型变量*/0;/*将的初值置为0*/1;/*将i的初值置为1*/(i<=100)/*若i<=100则执行循环体*/{;/*将i进行累加*/1;/*i的值加1*/}("\n");/*输出的值*/}程序运行结果:50504.2语句<>程序运行结果:4.2语句②语句中的循环条件表达式可以是任何类型的表达式。③循环体内一定要有使表达式的值变为0(假)的操作,否则循环将无限进行,即形成死循环。④语句的特点是“先判断,后执行”,如果循环条件表达式的值一开始就为0,则循环体语句一次也不执行。例如,对于下面的语句:()("");如果变量i赋值0时,则一次也不执行循环体语句;如果变量i赋值4时,则其运行结果为:3︼2︼1︼0︼。4.2语句②语句中的循环条件表达式可以是任何类型的表达式。4.2例4.1利用公式求π的近似值,直到最后一项的绝对值小于为止。分析:本题仍为求累加和问题,因此,循环体中有这样的求累加和表达式。为公式中的某一项,其特点是,分母为奇数,且相邻项符号相反,当<时,停止求累加和。π的近似值可以表示为4。4.2语句例4.1利用公式4.2语句(b)图描述图4-3例4.1的流程图和图描述(a)流程图描述4.2语句(b)图描述图4-3例4.1的流程图和图描述(a)流程<><>(){1;110;(()>=14)/*当满足条件时结束*/{;/*计算通项并进行累加*/2;/*i值加2得到下一个奇数*/;/*相邻项符号取反*/;/*求公式中的某一项*/}4*;("8.6f\n");/*输出的值*/}程序运行结果:3.1413974.2语句<>程序运行结果:4.2语句(a)流程图描述(b)图描述例4.2从键盘上连续输入字符,直到输入“回车”符为止,统计输入的字符中数字字符的个数。4.2语句(a)流程图描述(b)图描述例4.2从键盘上连<>(){;0;("<>\n");((())'\n')/*按回车键时结束*/{(>='0'<='9')/*只对数字字符的个数进行统计*/{();/*输出数字字符*/1;/*对数字字符的个数进行累加统计*/}}("\\n");/*输出数字字符的个数*/}程序运行结果:<>5667↙566744.2语句<>程序运行结果:4.2语句4.3…循环4.3…循环4.3…循环…用来实现“直到型”循环,其一般形式为:
循环体语句(循环条件表达式);执行过程是,先执行循环体语句,然后对循环条件表达式进行计算,若其值为真(非0),则重复上述过程,直到循环条件表达式的值为假(0)时,循环结束,程序控制转至该结构的下一条语句。其执行过程如图4-5所示。4.3…循环…用来实现“直到型”循环使用…语句时,应注意以下几个问题:①当循环体是一组语句时,则必须用花括号括起来,组成复合语句。②循环体内一定要有使表达式的值变为0(假)的操作,否则循环将无限进行。③…循环是先执行,后判断,因此循环体至少执行一次。④和都是关键字,配合起来使用,()后面的“;”不可缺少。4.3…循环使用…语句时,应注意以下几个问题:4.3…循环例4.3用…循环编写计算1+2+3+……+100的程序。(a)流程图描述(b)图描述4.3…循环例4.3用…循环编写计算1+2+3+……+100的程序。(<>(){01;/*开始执行循环*/{;/*计算累加和*/;/*i自加1*/}(i<=100);/*如果i<=100,则循环继续执行*/("\n");/*输出累加和*/}程序运行结果:5050例4.3用…循环编写计算1+2+3+……+100的程序。4.3…循环<>程序运行结果:例4.3用…循环编写计算1+2+3+…例4.4输入若干名学生的某门课程的成绩,以负数作为结束输入的标志,计算该门课程的平均成绩。首先输入一个成绩,若输入负数,直接结束;否则使用循环结构计算总成绩,同时统计学生人数1,最后计算平均成绩。4.3…循环例4.4输入若干名学生的某门课程的成绩,以负数作为结束输<>(){0;0;(":\n");("");(<0)/*若输入负数,则输出非成绩信息直接结束*/("\n");
{{;/*对学生的成绩进行累加*/;/*统计学生数*/("");/*从键盘输入的值*/}(>=0);/*若输入负数,则结束循环*/;/*计算平均成绩*/("6.2f\n");/*输出平均成绩*/}}程序运行结果::80↙67↙-1↙︼73.504.3…循环<>程序运行结果:4.3…循环4.4循环C语言的循环使用最为灵活,功能很强。不仅可以用于计数型循环,而且可以用于条件型循环。完全可以代替和…循环。4.4循环C语言的循环使用最为4.4循环循环语句的一般形式为:(表达式1;表达式2;表达式3)循环体语句其中,是C语言的关键字,其后圆括号通常有3个表达式。表达式之间用分号隔开,表达式可以是C语言中任何合法的表达式。表达式1给循环变量赋初值;表达式2是循环条件;表达式3修改循环变量值。后面的语句为循环体。循环体多于一条语句时,要用复合语句表示。4.4循环循环语句的一般形式为:循环语句的作用:首先求解表达式1的值,然后求解表达式2的值,若表达式的值非0(真)时,就执行循环体,执行一次循环体后求解表达式3的值,再求解表达式2的值,若表达式2仍不为0再执行循环体,再求解表达式3的值。如此反复直到表达式2的值为0时,整个循环结束。其执行过程如图所示。4.4循环循环语句的作用:首先求解表达式1的值,然后语句最简单的应用形式,也就是最易理解的形式:(循环变量赋初值;循环条件;循环变量增值)循环体语句4.4循环语句最简单的应用形式,也就是最易理解的形式:表达式2?执行语句成立不成立执行for循环之后的语句执行表达式3执行表达式1循环初始条件循环控制条件循环体语句等价于下列语句:表达式1;(表达式2){语句;表达式3;}(表达式1;表达式2;表达式3)语句表达式2?执行语句成立不成立执行for循环之后的语句执行表达例4.5用循环编写计算1+2+3+……+100的程序。4.4循环例4.5用循环编写计算1+2+3+……+100的程序。4.<>(){0;/*定义整型变量并对赋初值*/(1<=100);/*通过循环对i进行累加*/(“\n”);/*输出累加和*/}4.4循环<>4.4循环使用循环时,语句中的表达式可以部分或全部省略,但两个“;”不可省略。①省略表达式1,这时没有了给循环变量赋初值的操作,则应该在语句之前给循环变量赋初值。例如:1;/*对循环变量i赋初值*/(<=100)/*省略了表达式1*/;②省略表达式2,相当于缺少条件判断,循环将无限进行,因此如果缺少表达式2,可以认为表达式2始终为真。4.4循环使用循环时,语句中的表达式可以部分或全③省略表达式3,则可以把循环变量的修改部分放到循环体中进行。例如:(1<=100;)/*省略了表达式3*/{;;/*在循环体内改变循环变量i的值*/}④省略表达式1和表达式3,相当于在循环中只有表达式2,即只给出循环结束的条件。这时可以采用上述①和③中的方法,保证循环正常结束。⑤三个表达式全部省略,(;;)相当于(1)。4.4循环③省略表达式3,则可以把循环变量的修改部分放到循环体4.例4.6用循环编写计算n!的程序。由于是个连乘的重复过程,每次循环完成一次乘法,共循环次。在前面我们对计算累加和采用了“第i项”的循环算式,类似对于连乘可以采用“*第i项”的循环算式,其中第i项就是循环变量i。4.4循环例4.6用循环编写计算n!的程序。4.4循环<>(){1;/*定义整型变量,并对阶乘t赋初值1*/("n:");/*输出提示信息*/("");/*从键盘输入n的值*/(1<)*i;/*循环重复n次,计算n!*/("\n");/*输出n的阶乘*/}程序运行结果:n:5↙1204.4循环例4.7<>程序运行结果:4.4循环例4.74.4循环4.4循环<>(){i;;("");;/*将输入的第一个学生的成绩赋给*/;/*将输入的第一个学生的成绩赋给*/(2<=10){("");/*通过循环输入其他学生的成绩*/(>)/*输入的成绩大于,将输入的成绩值赋给*/;(<)/*输入的成绩小于,则将输入的成绩值赋给*/;}("\6.2f6.2f\n");}程序运行结果:758966489810079859068↙100.00︼48.004.4循环<>程序运行结果:4.4循环4.5语句和语句为了使循环控制更加灵活,C语言允许在特定条件成立时,使用语句强行结束循环,或使用语句跳过循环体其余语句,转向循环条件的判定语句。4.5语句和语句为了使循环控制更加灵4.5语句和语句4.5.1语句语句的一般形式为:;语句有两个作用:用于语句时,退出语句,程序转至语句下面的语句;用于循环语句时,退出包含它的循环体,程序转至循环体下面的语句。4.5语句和语句4.5.1语句例4.8找出在~100以内的自然数中,能被9整除的第一个数。4.5语句和语句例4.8找出在~100以内的自然数中,能被9整除的第一个<>(){;("n:");("");(<=100){(90)/*判别i能否被9整除*/{(".\n");/*i能被9整除,则输出i的值*/;/*提前退出循环*/}}}程序运行结果:n:1↙9.n:65↙72.4.5语句和语句<>程序运行结果:4.5语句和语句4.5.2语句语句的一般形式为:;语句作用是:结束本次循环,跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。在和…语句中,语句把程序控制转到后面的表达式处,在语句中,语句把程序控制转到表达式3处。4.5语句和语句4.5.2语句4.5语句和语句例4.9找出在~100以内的自然数中,能被9整除的所有数。4.5语句和语句例4.9找出在~100以内的自然数中,能被9整除的所有数。<>(){;/*定义整型变量*/("n:");/*输出提示信息*/("");/*从键盘输入n的值*/(":");(<=100){(90)/*判别i能否被9整除*/{("%4d");/*i能被9整除,则输出i的值*/;/*结束本次循环,转至处*/}}}程序运行结果:n:65↙:︼︼72︼︼81︼︼90︼︼994.5语句和语句<>程序运行结果:4.5语句和语句例4.10分析下面程序的执行结果。<>(){1;(1<100){(",\n");/*输出的值*/(b>5)/*若b>10,则结束整个循环*/;(21)/*若2=1,则3并结束本次循环*/{3;;/*转至处*/};}}程序运行结果:1,12,43,34,64.5语句和语句例4.10分析下面程序的执行结果。程序运行结果:4.5注意:语句和语句的区别:语句只结束本次循环,而不是终止整个循环的执行;语句则是结束循环,不再进行条件判断。4.5语句和语句注意:4.5语句和语句4.6多重循环一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。、…和三种循环语句可以互相嵌套,内嵌的循环体内还可以嵌套循环,这就是多重循环。4.6多重循环一个循环体内又包含另一个4.6多重循环例4.11以下面形式输出九九乘法表。1×1=12×1=22×2=43×1=33×2=63×3=94×1=44×2=84×3=124×4=165×1=55×2=105×3=15……………5×5=257×1=77×2=147×3=21……7×7=498×1=88×2=168×3=24…………8×8=649×1=99×2=189×3=27………………9×9=814.6多重循环例4.11以下面形式输出九九乘法表。分析:求积可以用两层循环结构实现:(1<=9)/*i表示被乘数*/(1<)/*j表示乘数*/*j;
第一个语句,称为外循环,i表示被乘数。第二个语句,称为内循环,j表示乘数。嵌套重复循环结构总是先完整地执行内循环一次,外循环再执行一次。4.6多重循环分析:求积可以用两层循环结构实现:4.6多重循环据上述分析,算法可以用如图所示的流程图和图描述。4.6多重循环据上述分析,算法可以用如图所示的流程图和图描述。4.6<>(){;/*定义整型变量*/(1<=9)/*外循环用于控制行数*/{(1<)/*内循环用于控制列数*/{*j;/*计算i*j,并赋值给变量t*/("%3d*2d");/*输出t,即i*j的值*/}("\n");/*输出1行后换行*/}}4.6多重循环<>4.6多重循环例4.12用嵌套循环计算的值。4.6多重循环例4.12用嵌套循环计算<>(){;0;("n:");("");(1<)/*外层循环重复n次,求累加和*/{1;/*置t的初值为1,以保证每次求阶乘都从1开始连乘*/(1<)/*内层循环重复i次,计算!*/*j;;/*把i!累加到中*/}("\n");}程序运行结果:n:4↙334.6多重循环<>程序运行结果:4.6多重循环例4.13输出一个任意行的等腰三角形图形。****************分析:把三角形顶点放在屏幕第40列的位置,每行的输出开始位置比上一行提前一列,每行输出星号的个数是行数的2倍减去1。输入n的值来确定所需要的行数。程序的外循环控制输出的行数,内循环是两个并列的循环,前面一个循环输出每行前面的空格,后面一个循环输出该行的星号,星号输出结束后换行,接着输出下一行。4.6多重循环例4.13输出一个任意行的等腰三角形图形。4.6多重<>(){;("");("");/*从键盘上输入等腰三角形所占的行数*/(1;k<;)/*此循环用于控制行数*/{(1<40)/*此循环用于控制星号前的空格*/("");(1<=2*1)/*此循环用于控制一行内打印星号的个数*/("*");("\n");/*输出一行后换行*/}}****************4.6多重循环<>*4.6多重循环4.7程序举例4.7程序举例4.7程序举例例4.14编写程序求斐波纳契()数列的前20项,要求每行输出5个斐波纳契数。斐波纳契数列源自一个有趣的问题:一对小兔,一个月后长成中兔,第3个月长成大兔,长成大兔以后每个月生一对小兔。问第20个月有多少对兔子?斐波纳契数列的规律是:每个数等于前两个数之和。其可以用数学上的递推公式来表示:4.7程序举例例4.14编写程序求斐4.7程序举例4.7程序举例<>(){f123;k;f1=12=1;/*斐波纳契数列的头两个数*/("%1010"12);/*输出斐波纳契数列的头两个数*/(3<=20)/*循环18次求斐波纳契数列的后18项*/{f312;/*新的斐波纳契数的一个数等于前两个数之和*/("%10"3);f12;/*迭代,用新的数覆盖旧的数*/f23;(50)("\n");/*每输出5个斐波纳契数换行*/}}4.7程序举例<>4.7程序举例程序运行结果:112358132134558914423337761098715972584418167654.7程序举例程序运行结果:4.7程序举例例4.15利用下面级数求正弦函数的值(要求算到最后一项的绝对值小于为止)。这是一个多项式累加和,每一项的符号和分子、分母都是有规律性地变化:符号依此作正负变化;分子是x的奇数次幂;分母则是从1开始的奇数阶乘。可以用循环结构实现,当循环计算到某一项≤时循环结束,输出(x)的值。4.7程序举例例4.15利用下面级数求正弦函数的值(要求算到最后一项的绝4.7程序举例4.7程序举例<><>3.14159(){1;;1;("");/*输出提示信息*/(""1);/*从键盘输入角度x1的值*/1*180;/*将角度x1换算成弧度*/;/*把级数的第一项x作为累加和的初值*/;/*将x赋值给*/
4.7程序举例<>4.7程序举例(3()>=162)/*当前项<=,执行循环*/{1;1;(1<){*j;/*通过循环计算当前项的阶乘t*/*x;/*通过循环计算当前项的分子*/};/*将值的符号取反*/*;/*计算新的当前项值*/;/*对进行累加*/}("(%.2f)\n"1);}程序运行结果:2↙(2.0)=0.0348994.7程序举例(3()>=162)/*当前项<=例4.16从键盘上输入一个大于2的整数,判断m是否为素数。所谓素数是指除了1和它本身以外,再不能被任何整数整除的数。根据这一定义,判断一个整数是否素数,只需把被2到m-1之间的每一个整数去除,如果都不能被整除,则m就是一个素数。例如:判断19是否素数,将19被2,3,···,18除,都不能整除19,则19就是一个素数。实际上,除数只要为2~的全部整数即可。让m被2~除,如果m能被2~之中任何一个整数整除,则说明m不是素数,否则m一定是素数。4.7程序举例例4.16从键盘上输入一个大于2的整数,判断m是否为素数。4.7程序举例4.7程序举例(){;1;/*将素数标志设置为1*/
{("a:");/*输出提示信息*/("");/*从键盘输入变量m的值*/}(m<=2);/*若m<=2,则结束循环*/()(m);/*将(m)取整后赋值给变量k*/(2<)(0)/*若m不是素数,则将素数标志置为0并结束循环*/{0;;}()/*若素数标志1,则输出该数是素数*/("a.\n");/*若素数标志0,则输出该数不是素数*/("a.\n");}4.7程序举例()4.7程序举例程序运行结果:a:35↙35a.a:19↙19a.4.7程序举例程序运行结果:4.7程序举例例4.17把一元钱换成5分,2分,1分的零钱,统计共有多少种换法。用a、b、c分别表示换的5分、2分、1分的张数,则a、b、c的值应该满足:5*2*100。4.7程序举例例4.17把一元钱换成5分,2分,1分的零<>(){0;(0<=20)/*本循环表示5分的有多少种换法*/(0<=50)/*本循环表示2分的有多少种换法*/(0<=100)/*本循环表示1分的有多少种换法*/(5*2*100);/*经过三重循环后,统计出有多少种换法*/("\n");/*输出结果*/}程序运行结果:5414.7程序举例<>程序运行结果:4.7程序举例例4.18计算用户输入的两个正整数之间的所有整数中0,1,2,…,9数码的个数。例如,101~104之间总共包含四个整数101,102,103,104,其中0的个数为4,1的个数为5,2、3、4的个数为1,其余数码没有出现都为0。要计算某整数中包含的各个数码的个数,必须对该整数进行分解,求得所包含的各个数码,其方法可以通过每次除以10取余数得到,然后再对商进行同样的处理,直到商为0时为止。对所得到的数码进行计数,可采用语句来实现。4.7程序举例例4.18计算用户输入的两个正整数之间的所有整数中0,1,<>(){12;0=01=02=03=04=0;5=06=07=08=09=0;/*循环用于从键盘上输入两个正整数*/{(":");(""12);}(1<02<01>2);/*若1<0或2<0或1>2,则退出循环*/(1<2)/*循环用于控制整数在1~2之间*/{;
{10;/*s对10取余数后赋值给r*/4.7程序举例<>4.7程序举例(r)/*用r匹配后的语句*/{0:0;;1:1;;2:2;;3:3;;4:4;;5:5;;6:6;;7:7;;8:8;;9:9;;}10;/*s对10整除后赋值给s*/}(0);/*若0,则结束循环*/}("05d15d25d35d45d\n"01234);("55d65d75d85d95d\n"56789);}4.7程序举例(r)/*用程序运行结果::101104↙041521314150607080904.7程序举例程序运行结果:4.7程序举例4.8三种循环语句的比较4.8三种循环语句的比较4.8三种循环语句的比较C语言提供的、…以及三种循环结构各有其特点,应根据不同的情况选择不同的循环,以便更好地实现程序的功能。现对三种循环结构加以比较如下。1.三种循环都可以用来处理同一个重复的问题,一般情况可以互相代替。2.和…循环,都在后面指定循环条件,在循环体中还应包含修改循环条件,使循环趋于结束的语句如)。而循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此,循环的功能更强,凡用循环能完成的,用循环都能实现。4.8三种循环语句的比较C语言提供的、…以及三种循环结3.在和…循环中,循环变量赋初值的操放在循环语句之前。而循环可以在表达式1中实现循环变量赋初值,也可以省略表达式1,在循环语句之前完成4.三种循环都可以用语句结束循环,用语句开始下一次循环。5.三种循环之间的不同之处是、循环是先判断表达式的值,后执行循环体语句,而…循环则是先执行一次循环体语句,后判断表达式的值。4.8三种循环语句的比较3.在和…循环中,循环变量赋初值的操放在循环语句之前。而循环本章小结C语言提供了重复操作的、…以及三种循环语句,这三种语句一般情况下可以互相代替。要重点掌握这3种循环语句的一般形式,了解它们开始和终止的条件,尤其要注意语句和…语句的异同。注意多重循环时循环的嵌套,内外循环必须层次分明。注意和语句的区别。本章小结C语言提供了重复操作的、…以人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。人有了知识,就会具备各种分析能力,第4章-循环结构程序设计素材课件78第4章循环结构程序设计在解决实际问题的过程中,常常会遇到一些需要重复处理的问题。循环结构可用来处理需要重复处理的问题,所以,循环结构又称为重复结构。第4章循环结构程序设计在解决实际问题4.1循环的概念4.2语句4.3…循环4.4循环4.5语句和语句4.6多重循环4.7程序举例4.8三种循环语句的比较第4章循环结构程序设计第4章4.1循环的概念第4章循环结构程序设计第4.1循环的概念循环结构,又称为重复结构,是结构化程序设计的三种基本结构之一,在数值计算和很多问题的处理中都需要用到循环控制。例如,用迭代法求方程的根,计算全班同学的平均分等。几乎所有的应用程序都包含循环,它和顺序结构、选择结构共同作为各种复杂结构程序的基本构造单元。因此熟练地掌握选择结构和循环结构的概念及使用,是程序设计最基本的要求。4.1循环的概念循环结构,又称为重复结4.1循环的概念例如,计算1~100的累计和。根据已有的知识,可以用1+2+3+…+100来计算,但显然很繁琐。现在换个思路来考虑:首先设置一个累加器,其初值为0,利用来计算(i依次取1、2、…、100),只要解决以下3个问题即可:①将i的初值置为1;②每执行1次后,i值增1,其过程如下所示:0;1;重复执行部分;1;
③当i增到101时,停止计算。此时,的值就是1~100的累计和。4.1循环的概念例如,计算1~100的累计C语言提供了3种循环语句来实现:(1)()~循环语句(2)~()循环语句;(3)()~循环语句。下面我们将分别介绍这三种循环语句。4.1循环的概念C语言提供了3种循环语句来实现:4.1循环的概念4.2语句4.2语句4.2语句用来实现“当型”循环,其一般形式为:(循环条件表达式)循环体语句在执行语句时,先对循环条件表达式进行计算,若其值为非0(真),则反复执行循环体语句,直到循环条件表达式的值为0(假)时,循环结束,程序控制转至循环语句的下一条语句。其执行过程如图4-1所示。图4-1语句的执行过程4.2语句用来实现“当型”循环,其一般形式为:图4-使用语句时,应注意以下几个问题:①循环体语句可以是一个空语句、一个语句或一组语句。当循环体是一组语句时,则必须用花括号括起来,组成复合语句。图4-2计算1~100累计和的流程图和图描述4.2语句使用语句时,应注意以下几个问题:图4-2计算1~100累计<>(){;/*定义整型变量*/0;/*将的初值置为0*/1;/*将i的初值置为1*/(i<=100)/*若i<=100则执行循环体*/{;/*将i进行累加*/1;/*i的值加1*/}("\n");/*输出的值*/}程序运行结果:50504.2语句<>程序运行结果:4.2语句②语句中的循环条件表达式可以是任何类型的表达式。③循环体内一定要有使表达式的值变为0(假)的操作,否则循环将无限进行,即形成死循环。④语句的特点是“先判断,后执行”,如果循环条件表达式的值一开始就为0,则循环体语句一次也不执行。例如,对于下面的语句:()("");如果变量i赋值0时,则一次也不执行循环体语句;如果变量i赋值4时,则其运行结果为:3︼2︼1︼0︼。4.2语句②语句中的循环条件表达式可以是任何类型的表达式。4.2例4.1利用公式求π的近似值,直到最后一项的绝对值小于为止。分析:本题仍为求累加和问题,因此,循环体中有这样的求累加和表达式。为公式中的某一项,其特点是,分母为奇数,且相邻项符号相反,当<时,停止求累加和。π的近似值可以表示为4。4.2语句例4.1利用公式4.2语句(b)图描述图4-3例4.1的流程图和图描述(a)流程图描述4.2语句(b)图描述图4-3例4.1的流程图和图描述(a)流程<><>(){1;110;(()>=14)/*当满足条件时结束*/{;/*计算通项并进行累加*/2;/*i值加2得到下一个奇数*/;/*相邻项符号取反*/;/*求公式中的某一项*/}4*;("8.6f\n");/*输出的值*/}程序运行结果:3.1413974.2语句<>程序运行结果:4.2语句(a)流程图描述(b)图描述例4.2从键盘上连续输入字符,直到输入“回车”符为止,统计输入的字符中数字字符的个数。4.2语句(a)流程图描述(b)图描述例4.2从键盘上连<>(){;0;("<>\n");((())'\n')/*按回车键时结束*/{(>='0'<='9')/*只对数字字符的个数进行统计*/{();/*输出数字字符*/1;/*对数字字符的个数进行累加统计*/}}("\\n");/*输出数字字符的个数*/}程序运行结果:<>5667↙566744.2语句<>程序运行结果:4.2语句4.3…循环4.3…循环4.3…循环…用来实现“直到型”循环,其一般形式为:
循环体语句(循环条件表达式);执行过程是,先执行循环体语句,然后对循环条件表达式进行计算,若其值为真(非0),则重复上述过程,直到循环条件表达式的值为假(0)时,循环结束,程序控制转至该结构的下一条语句。其执行过程如图4-5所示。4.3…循环…用来实现“直到型”循环使用…语句时,应注意以下几个问题:①当循环体是一组语句时,则必须用花括号括起来,组成复合语句。②循环体内一定要有使表达式的值变为0(假)的操作,否则循环将无限进行。③…循环是先执行,后判断,因此循环体至少执行一次。④和都是关键字,配合起来使用,()后面的“;”不可缺少。4.3…循环使用…语句时,应注意以下几个问题:4.3…循环例4.3用…循环编写计算1+2+3+……+100的程序。(a)流程图描述(b)图描述4.3…循环例4.3用…循环编写计算1+2+3+……+100的程序。(<>(){01;/*开始执行循环*/{;/*计算累加和*/;/*i自加1*/}(i<=100);/*如果i<=100,则循环继续执行*/("\n");/*输出累加和*/}程序运行结果:5050例4.3用…循环编写计算1+2+3+……+100的程序。4.3…循环<>程序运行结果:例4.3用…循环编写计算1+2+3+…例4.4输入若干名学生的某门课程的成绩,以负数作为结束输入的标志,计算该门课程的平均成绩。首先输入一个成绩,若输入负数,直接结束;否则使用循环结构计算总成绩,同时统计学生人数1,最后计算平均成绩。4.3…循环例4.4输入若干名学生的某门课程的成绩,以负数作为结束输<>(){0;0;(":\n");("");(<0)/*若输入负数,则输出非成绩信息直接结束*/("\n");
{{;/*对学生的成绩进行累加*/;/*统计学生数*/("");/*从键盘输入的值*/}(>=0);/*若输入负数,则结束循环*/;/*计算平均成绩*/("6.2f\n");/*输出平均成绩*/}}程序运行结果::80↙67↙-1↙︼73.504.3…循环<>程序运行结果:4.3…循环4.4循环C语言的循环使用最为灵活,功能很强。不仅可以用于计数型循环,而且可以用于条件型循环。完全可以代替和…循环。4.4循环C语言的循环使用最为4.4循环循环语句的一般形式为:(表达式1;表达式2;表达式3)循环体语句其中,是C语言的关键字,其后圆括号通常有3个表达式。表达式之间用分号隔开,表达式可以是C语言中任何合法的表达式。表达式1给循环变量赋初值;表达式2是循环条件;表达式3修改循环变量值。后面的语句为循环体。循环体多于一条语句时,要用复合语句表示。4.4循环循环语句的一般形式为:循环语句的作用:首先求解表达式1的值,然后求解表达式2的值,若表达式的值非0(真)时,就执行循环体,执行一次循环体后求解表达式3的值,再求解表达式2的值,若表达式2仍不为0再执行循环体,再求解表达式3的值。如此反复直到表达式2的值为0时,整个循环结束。其执行过程如图所示。4.4循环循环语句的作用:首先求解表达式1的值,然后语句最简单的应用形式,也就是最易理解的形式:(循环变量赋初值;循环条件;循环变量增值)循环体语句4.4循环语句最简单的应用形式,也就是最易理解的形式:表达式2?执行语句成立不成立执行for循环之后的语句执行表达式3执行表达式1循环初始条件循环控制条件循环体语句等价于下列语句:表达式1;(表达式2){语句;表达式3;}(表达式1;表达式2;表达式3)语句表达式2?执行语句成立不成立执行for循环之后的语句执行表达例4.5用循环编写计算1+2+3+……+100的程序。4.4循环例4.5用循环编写计算1+2+3+……+100的程序。4.<>(){0;/*定义整型变量并对赋初值*/(1<=100);/*通过循环对i进行累加*/(“\n”);/*输出累加和*/}4.4循环<>4.4循环使用循环时,语句中的表达式可以部分或全部省略,但两个“;”不可省略。①省略表达式1,这时没有了给循环变量赋初值的操作,则应该在语句之前给循环变量赋初值。例如:1;/*对循环变量i赋初值*/(<=100)/*省略了表达式1*/;②省略表达式2,相当于缺少条件判断,循环将无限进行,因此如果缺少表达式2,可以认为表达式2始终为真。4.4循环使用循环时,语句中的表达式可以部分或全③省略表达式3,则可以把循环变量的修改部分放到循环体中进行。例如:(1<=100;)/*省略了表达式3*/{;;/*在循环体内改变循环变量i的值*/}④省略表达式1和表达式3,相当于在循环中只有表达式2,即只给出循环结束的条件。这时可以采用上述①和③中的方法,保证循环正常结束。⑤三个表达式全部省略,(;;)相当于(1)。4.4循环③省略表达式3,则可以把循环变量的修改部分放到循环体4.例4.6用循环编写计算n!的程序。由于是个连乘的重复过程,每次循环完成一次乘法,共循环次。在前面我们对计算累加和采用了“第i项”的循环算式,类似对于连乘可以采用“*第i项”的循环算式,其中第i项就是循环变量i。4.4循环例4.6用循环编写计算n!的程序。4.4循环<>(){1;/*定义整型变量,并对阶乘t赋初值1*/("n:");/*输出提示信息*/("");/*从键盘输入n的值*/(1<)*i;/*循环重复n次,计算n!*/("\n");/*输出n的阶乘*/}程序运行结果:n:5↙1204.4循环例4.7<>程序运行结果:4.4循环例4.74.4循环4.4循环<>(){i;;("");;/*将输入的第一个学生的成绩赋给*/;/*将输入的第一个学生的成绩赋给*/(2<=10){("");/*通过循环输入其他学生的成绩*/(>)/*输入的成绩大于,将输入的成绩值赋给*/;(<)/*输入的成绩小于,则将输入的成绩值赋给*/;}("\6.2f6.2f\n");}程序运行结果:758966489810079859068↙100.00︼48.004.4循环<>程序运行结果:4.4循环4.5语句和语句为了使循环控制更加灵活,C语言允许在特定条件成立时,使用语句强行结束循环,或使用语句跳过循环体其余语句,转向循环条件的判定语句。4.5语句和语句为了使循环控制更加灵4.5语句和语句4.5.1语句语句的一般形式为:;语句有两个作用:用于语句时,退出语句,程序转至语句下面的语句;用于循环语句时,退出包含它的循环体,程序转至循环体下面的语句。4.5语句和语句4.5.1语句例4.8找出在~100以内的自然数中,能被9整除的第一个数。4.5语句和语句例4.8找出在~100以内的自然数中,能被9整除的第一个<>(){;("n:");("");(<=100){(90)/*判别i能否被9整除*/{(".\n");/*i能被9整除,则输出i的值*/;/*提前退出循环*/}}}程序运行结果:n:1↙9.n:65↙72.4.5语句和语句<>程序运行结果:4.5语句和语句4.5.2语句语句的一般形式为:;语句作用是:结束本次循环,跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。在和…语句中,语句把程序控制转到后面的表达式处,在语句中,语句把程序控制转到表达式3处。4.5语句和语句4.5.2语句4.5语句和语句例4.9找出在~100以内的自然数中,能被9整除的所有数。4.5语句和语句例4.9找出在~100以内的自然数中,能被9整除的所有数。<>(){;/*定义整型变量*/("n:");/*输出提示信息*/("");/*从键盘输入n的值*/(":");(<=100){(90)/*判别i能否被9整除*/{("%4d");/*i能被9整除,则输出i的值*/;/*结束本次循环,转至处*/}}}程序运行结果:n:65↙:︼︼72︼︼81︼︼90︼︼994.5语句和语句<>程序运行结果:4.5语句和语句例4.10分析下面程序的执行结果。<>(){1;(1<100){(",\n");/*输出的值*/(b>5)/*若b>10,则结束整个循环*/;(21)/*若2=1,则3并结束本次循环*/{3;;/*转至处*/};}}程序运行结果:1,12,43,34,64.5语句和语句例4.10分析下面程序的执行结果。程序运行结果:4.5注意:语句和语句的区别:语句只结束本次循环,而不是终止整个循环的执行;语句则是结束循环,不再进行条件判断。4.5语句和语句注意:4.5语句和语句4.6多重循环一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。、…和三种循环语句可以互相嵌套,内嵌的循环体内还可以嵌套循环,这就是多重循环。4.6多重循环一个循环体内又包含另一个4.6多重循环例4.11以下面形式输出九九乘法表。1×1=12×1=22×2=43×1=33×2=63×3=94×1=44×2=84×3=124×4=165×1=55×2=105×3=15……………5×5=257×1=77×2=147×3=21……7×7=498×1=88×2=168×3=24…………8×8=649×1=99×2=189×3=27………………9×9=814.6多重循环例4.11以下面形式输出九九乘法表。分析:求积可以用两层循环结构实现:(1<=9)/*i表示被乘数*/(1<)/*j表示乘数*/*j;
第一个语句,称为外循环,i表示被乘数。第二个语句,称为内循环,j表示乘数。嵌套重复循环结构总是先完整地执行内循环一次,外循环再执行一次。4.6多重循环分析:求积可以用两层循环结构实现:4.6多重循环据上述分析,算法可以用如图所示的流程图和图描述。4.6多重循环据上述分析,算法可以用如图所示的流程图和图描述。4.6<>(){;/*定义整型变量*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育考核试题及答案
- 妇科罕见肿瘤手术淋巴结处理策略
- 女职工健康档案数字化管理路径
- 大数据支持下的职业病高危行业预警分级模型
- 初中语法考试及答案解析
- 2026年口腔护理(牙周病护理)试题及答案
- 2025年中职西餐烹饪(披萨制作)试题及答案
- 2025年高职给排水工程技术(排水系统维护)试题及答案
- 2025年中职汽车美容与装潢(汽车美容技术)试题及答案
- 2025年大学化学(化学教育)试题及答案
- 某220千伏变电站10千伏电容器开关柜更换工程的安全措施与施工方案
- 钳工个人实习总结
- 大健康养肝护肝针专题课件
- 道路高程测量成果记录表-自动计算
- 关于医院“十五五”发展规划(2026-2030)
- DB31-T 1587-2025 城市轨道交通智能化运营技术规范
- 2025水泥厂生产劳务承包合同
- 施工项目高效人员配置与设备管理方案
- 采血后预防淤青的按压方式
- 医学师承出师考核申请表
- 光伏电站基础知识500题及答案
评论
0/150
提交评论