2020/1/281C语言程序设计(二级教程)——Chap5循环结构安庆职业技术学院图文信息中心疏国会安庆职业技术学院全国计算机等级考试(NCRE)培训2020/1/28C语言程序设计(NCRE二级)21、循环结构的概念循环结构是结构化程序设计的三种基本结构之一,用于对程序中某些语句重复执行。如:(1)打印10个、20个甚至n个“*”号;(2)要在屏幕上打印1~100的所有数字;(3)在屏幕上打印1~100的所有数字,每行10个;(4)要计算1+2+3+…+100(或到n);(5)要计算1+3+5+…+99(或到n);(6)要打印10行,每行20个“*”号;2020/1/28C语言程序设计(NCRE二级)32、三种循环结构_while结构while(表达式){循环体语句序列;}语法结构表达式为真?循环体语句序列;NY先判断,后执行循环体,循环体有可能一次都不执行2020/1/28C语言程序设计(NCRE二级)43、三种循环结构_while结构举例k=0;while(k10){printf(“*”);k++;}举例:K10?打印一个*K的值+1NY2020/1/28C语言程序设计(NCRE二级)54、三种循环结构_do-while结构do{循环体语句序列;}while(表达式);语法结构表达式为真?循环体语句序列;NY先执行循环体,后判断,循环体至少要执行一次2020/1/28C语言程序设计(NCRE二级)65、三种循环结构_do-while结构举例do{i++;s+=i;}while(i10);举例:i10?i加1将i累加到和变量s中NY先执行循环体,后判断,循环体至少要执行一次2020/1/28C语言程序设计(NCRE二级)76、三种循环结构_for结构for(表达式1;表达式2;表达式3){循环体语句序列;}语法结构2020/1/28C语言程序设计(NCRE二级)87、三种循环结构_for结构流程图for(表达式1;表达式2;表达式3){循环体语句序列;}语法结构表达式2为真?执行表达式1NY执行循环体语句序列执行表达式3先执行表达式1,且只执行一次;循环体和表达式3有可能一次都不执行。2020/1/28C语言程序设计(NCRE二级)98、三种循环结构_for结构举例for(k=0;k10;k++){printf(“*”);}举例:k10?k=0;NY打印一个*k++表达式1、表达式2、表达式3可以部分或全部省略,但两个“;”不能省略。如:for(;;)2020/1/28C语言程序设计(NCRE二级)109、循环结构中的break语句(1)循环体运行过程中,若遇到break语句,则立即终止本层循环,转到本循环外的下一条语句执行。(2)循环体中的break语句通常应放在if分支语句中,当所要求的条件满足时,即退出本层循环。{……;if(……)break;……;}循环体……;2020/1/28C语言程序设计(NCRE二级)1110、循环结构中的break语句举例inti,s=0;for(i=1;i=10;i++){s=s+i;if(i%5==0)break;}printf(“s=%d\n”,s);2020/1/28C语言程序设计(NCRE二级)1211、循环结构中的continue语句(1)循环体运行过程中,若遇到continue语句,则立即跳过本趟循环中余下尚未执行的语句,转到下一趟循环的条件判定。(2)循环体中的continue语句通常应放在if分支语句中,当所要求的条件满足时,即进入下一趟循环。for(表达式1;表达式2;表达式3){……;if(……)continue;……;}2020/1/28C语言程序设计(NCRE二级)1312、循环结构中的continue语句示意while(表达式){……;if(……)continue;……;}do{……;if(……)continue;……;}while(表达式);2020/1/28C语言程序设计(NCRE二级)1413、例1-打印10个、20个(或n个)“*”号#includestdio.hmain(){intn,i=1;printf(请输入一个正整数:);scanf(%d,&n);while(i=n){printf(*);i++;}printf(\n);}2020/1/28C语言程序设计(NCRE二级)1514、例2-在屏幕上打印1~100的所有数字#includestdio.hmain(){inti=1;while(i=100){printf(%4d,i);i++;}printf(\n);}2020/1/28C语言程序设计(NCRE二级)1615、例3-在屏幕上打印1~100,每行10个#includestdio.hmain(){inti=1;while(i=100){printf(%4d,i);if(i%10==0)printf(\n);i++;}}2020/1/28C语言程序设计(NCRE二级)1716、例4-计算1+2+3+…+100(或到n)#includestdio.hmain(){intn,i=1,s=0;printf(Entern:);scanf(%d,&n);while(i=n){s=s+i;i++;}printf(s=%d\n,s);}2020/1/28C语言程序设计(NCRE二级)1817、例5-计算1+3+5+…+99(或到n)#includestdio.hmain(){intn,i=1,s=0;printf(Entern:);scanf(%d,&n);while(i=n){s=s+i;i+=2;}printf(s=%d\n,s);}2020/1/28C语言程序设计(NCRE二级)1918、例6-打印10行,每行20个“*”号#includestdio.hmain(){inti=1,j;while(i=10){j=1;while(j=20){printf(*);j++;}printf(\n);i++;}}2020/1/28C语言程序设计(NCRE二级)2019、使用循环结构应注意的问题(1)避免死循环。可在循环中修改变量的值,使得循环条件趋于假值,以便正常退出循环;也可在循环体中根据条件判断执行break;以退出本层循环。当条件表达式恒为真时,循环为无条件循环,这时必须在循环体中设置带条件的非正常出口(如break;)(2)do-while的循环体至少会执行一次,而while和for循环体可能一次也不执行;三种循环各有优越性,也可相互转换。(3)注意“;”和“{}”的使用;(4)循环嵌套时,内层循环应完全包含在外层循环之中,循环间不能交叉。