您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言电子教案第5章 循环结构程序设计
第5章循环结构程序设计5.1while循环5.2do-while循环5.3for循环5.4循环结构的嵌套5.5转向语句5.6循环结构程序设计举例5.1while循环while语句用于构成“当型”循环结构。while语句的一般形式为:while(表达式)循环体语句while循环结构的执行过程是:首先计算表达式(循环条件)的值,若结果为“真”(非零),则执行循环体语句;然后再次计算表达式的值,重复上述过程,直到表达式的值为“假”(零)时结束循环,流程控制转到循环结构的下一语句。5.1while循环【例5.1】从键盘上输入一个整数n,求n!,利用while语句编程实现。main(){intn,i,s;printf(\nEntern:);scanf(%d,&n);i=1;s=1;/*给变量i、s赋初值*/while(i=n)/*循环继续的条件*/{s=s*i;/*进行累乘求积*/i++;/*乘数增值*/}printf(\nn!=%d,s);/*输出计算的结果*/}运行情况如下:Entern:5↙n!=1205.1while循环使用while循环结构应注意以下几点:while循环结构的特点是“先判断,后执行”。如果表达式的值一开始就为“假”,则循环体一次也不执行。循环体中,如果包含一个以上的语句,则应用花括号括起来,以复合语句的形式出现。循环体内一定要有改变循环继续条件的语句,使得循环趋向于结束,否则循环将无休止的进行下去,即形成“死循环”。为使循环能够正确开始运行,还要做好循环前的准备工作,【例5.2】从键盘上输入30个学生的成绩,对其进行处理:如果成绩及格,则输出“Passed”;否则输出“Failed”。5.1while循环n=1当n=30输入成绩scorescore=60真假输出Passed输出Failedn=n+15.1while循环main(){intn=1;/*循环控制变量赋初值*/floatscore;while(n=30)/*/循环继续的条件*/{printf(Enterascore:\n);scanf(%f,&score);if(score=60.0)printf(Passed\n);elseprintf(Failed\n);n++;/*循环控制变量增值*/}}5.2do-while循环do-while语句构成的循环结构类似于“直到型”循环,do-while语句的形式为:do循环体语句while(表达式);do-while循环结构的执行过程:首先执行一次循环体语句,然后计算表达式(循环条件)的值。若结果为“真”(非零),则再次执行循环体,再计算表达式的值,如此重复下去,直到表达式的值为“假”(零)时,循环结束,流程控制转到循环结构的下一语句。5.2do-while循环【例5.3】用do-while循环结构实现例5.1。main(){intn,i,s;printf(\nEntern:);scanf(%d,&n);i=1;s=1;do{s=s*i;i++;}while(i=n);printf(\nn!=%d,s);}5.2do-while循环使用do-while循环结构应注意以下几点:当do-while循环体包含一个以上的语句时应该用花括号括起来,以复合语句形式出现;循环体内也一定要有改变循环条件的语句,使循环趋向于结束。下面的两个程序可以明显的看出while循环和do-while循环的区别。main(){inti,sum=0;scanf(%d,&i);do{sum+=6;i++;}while(i=3);printf(Thesumis%d,i=%d,sum,i);}main(){inti,sum=0;scanf(%d,&i);while(i=3){sum+=6;i++;}printf(Thesumis%d,i=%d,sum,i);}5.2do-while循环当输入1时,两个程序的运行结果是一样的:Thesumis18,i=4当输入5时,第一个程序的运行结果是:Thesumis6,i=6第二个程序的运行结果是:Thesumis0,i=5for语句是功能强大的构成“当型”循环结构的循环语句。它不但可以用于循环次数已知的情况,而且还可以用于循环次数不定的情况。程序形式:for(表达式1;表达式2;表达式3)循环体语句5.3for循环for循环结构的执行过程:首先进行表达式1的运算,然后计算表达式2的值,若结果为真(非零),则执行循环体语句,最后进行表达式3的运算。再次计算表达式2的值,若结果为“真”(非零),再执行循环体语句,最后再进行表达式3的运算。如此循环重复下去,直到计算表达式2的结果为“假”(零)时,循环结束,流程控制转到循环结构的下一语句。【例5.4】用for循环结构实现例5.1。main(){intn,i,s;printf(\nEntern:);scanf(%d,&n);for(i=1,s=1;i=n;i++)s=s*i;printf(\nn!=%d,s);}5.3for循环使用for循环结构应注意以下几点:用for循环结构也具有“先判断,后执行”的特点。for循环结构相当如下形式的while结构:表达式1;while(表达式2)循环体表达式3;从语法上看,for的三个成分都是表达式,它们之间都以分号“;”隔开。表达式1和表达式3常常是赋值表达式或函数调用,有时也可以是逗号表达式,一般用来实现对循环控制变量初始化和循环控制变量增(减)值。表达式2常常是关系表达式或逻辑表达式,但也可以是其它类型的表达式,它是用来表示循环继续的条件,只要其值为非零,就可执行循环体,否则推出循环。例如:for(i=1,sum=0;i=100;i++,i++)sum+=i;5.3for循环关键字for的三个表达式允许部分或全部省略,但其中的两个分号不能省略,否则,系统将报错。需要注意:当省略表达式1时,在进入for循环之前应该有给循环控制变量赋初始值的语句;当省略表达式3时,应该在循环体内有修改循环控制变量的值的语句,以保证循环能够正常结束。例如:for(i=1,s=1;i=n;){s=s*i;;i++;}当表达式2或三个表达式全部省略时,应该在循环体内设置相应的语句来结束循环,否则程序始终认为判断条件成立,循环将无终止地执行下去,即形成了所谓的死循环。如果循环体语句为一语句组,则必须用一对花括号“{}”括起来。5.3for循环由于for循环结构书写形式灵活多样,如果在三个表达式中过多的加入与循环控制无关的内容,容易降低可读性。因此,通常使用一种简单明了的for循环结构形式:for(循环控制变量赋初值;循环条件;循环控制变量增(减)值)循环体语句5.3for循环【例5.5】输入一批非零整数,以0为结束符,输出其中的最大值。#includestdio.hmain(){intx,max;printf(inputnumbers,lastoneis0:\n);/*输出提示信息*/scanf(%d,&x);max=x;/*先将第一个数赋值给变量max*/for(;x!=0;){scanf(%d,&x);if(maxx)max=x;/*输入值比变量max大,用当前值替换变量max的值*/}printf(max=%d\n,max);/*输出最大值*/}5.3for循环程序的运行情况如下:inputnumbers,lastoneis0:3↙6↙5↙2↙9↙7↙0↙max=9例3main(){inta=10,b=5,c=5,d=5;inti=0,j=0,k=0;for(;ab;++b)i++;while(a++c)j++;dok++;while(ad++);printf(%d,%d,%d\n,i,j,k);}运行结果:5,4,65.4循环结构的嵌套下面是几种合法的循环嵌套形式:(1)while()(2)for(;;){{……while()do{{……}}while();……}}(3)while()(4)do{{……for(;;)for(;;){{……}}}}while();5.4循环结构的嵌套【例5.6】编程输出以下形式的乘法九九表。1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=92*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18……9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81main(){inti,j;for(i=1;i=9;i++)/*i作为外循环控制变量控制被乘数变化*/{printf(\n);for(j=1;j=9;j++)/*j作为内循环控制变量控制乘数变化*/printf(%1d*%1d=%2d,i,j,i*j);}}5.4循环结构的嵌套j=1当(j=30)sum=0for(i=1;i=8;i++)输入成绩scoresum=sum+scoreaver=sum/8.0输出averj++【例5.7】全班有30个学生,每个学生考8门课。要求分别统计出每个学生各门课的平均成绩。5.4循环结构的嵌套main(){inti,j,score,sum;floataver;j=1;while(j=30){sum=0;for(i=1;i=8;i++){printf(EnterNO.%dthescore%d:,j,i);scanf(%d,&score);/*输入第j个学生第i门课程的成绩*/sum=sum+score;/*累计第j个学生的总成绩*/}aver=sum/8.0;/*计算第j个学生的平均成绩*/printf(NO.%daver=%5.2f\n,j,aver);/*输出第j个学生的平均成绩*/j++;}}5.4循环结构的嵌套使用循环的嵌套结构要注意以几点:外层循环应“完全包含”内层循环,不能发生交叉。例如下面这种形式是不允许的:do{……for(…){……}while(…);}嵌套的循环控制变量一般不应同名,以免造成混乱。5.4循环结构的嵌套嵌套的循环要注意正确使用缩进式书写格式来明确嵌套循环的层次关系,以增加程序的可读性。break语句break语句的功能是使执行从包含它的最内层循环或开关语句中跳出,转到switch结构或该循环结构外的下一语句执行。这将导致包含它的最内层循环(while、for、do-while)或switch语句的终止。break语句的一般形式:break;5.5转向语句真breaki=100i=300i%17==0输出ii++开始结束假真假【例5.8】找出100~300之间第一个能17整除的数。main(){inti;for(i=100;i=300;i++){if(i%17==0)/*判断是否能被17整除*/{printf(%d\n,i);break;/*找到第一个能被17整除的数,结束整个循环*/}}}5.5转向语句使用break语句应注意以下几点:break语句只能用于switch结构或循环结构中。在循环结构中应用时,通常与if语句配合使用。在嵌套的循环结构中使用时,break语句只能跳出(或终止)包含它的最内层循环。而不能同时跳出(或终止)多层循环。5.5转向语句continue语句continue语句的作用是结束本次循环,使得包含它的循环(while、do-while、for)开始下一次重复continue语句的一般形为:continue;【例5.9】把100~200之间不能被7整除的数输出。main(){intn;for(n=100;n=200;n++){if(n%7==0)continue;printf(%d\t,n);}}真continuen=100n=200n%7==0输出nn++开始结束假真假5.5转向语句使用continue语句时要注意以下几点:continue语句只能用于循环结构中。通常也要有if语句配合使用。co
本文标题:C语言电子教案第5章 循环结构程序设计
链接地址:https://www.777doc.com/doc-3814298 .html