您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 大学C语言程序设计第二版(电子工业)第5章
大学C/C++语言程序设计第5章循环结构程序设计大学C/C++语言程序设计第4章选择结构程序设计第5章循环结构程序设计5.1while语句5.2do-while语句5.3for语句5.4循环结构的嵌套5.5break语句和continue语句在循环结构中的应用1问题的提出:问题1.从键盘输入10个学生的成绩,求总成绩。问题2.显示1~10的平方。问题3.求100~300之间所有的素数。问题1的一种解决办法:定义一个变量a,每次输入一个学生成绩保存到变量a中,累加到s后再输入下一个学生成绩…….;语句如下:step1:scanf(“%f”,&a);s=s+a;step2:scanf(“%f”,&a);s=s+a;………….这样重复10次,然后输出s的值。是否可用一种语句,使这两条语句能自动的重复执行10次,以简化书写的麻烦呢?这就是循环语句的任务。大学C/C++语言程序设计第5章循环结构程序设计2•循环结构特点:在给定条件(循环条件)成立时,反复执行某程序段(又称循环体),直到条件不成立为止。C语言可实现循环的语句:while语句do~while语句for语句大学C/C++语言程序设计第5章循环结构程序设计35.1while循环结构一般形式:while(表达式)循环体语句;执行流程:大学C/C++语言程序设计第5章循环结构程序设计4特点:先判断表达式,后执行循环体。说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return无限循环:while(1)循环体;大学C/C++语言程序设计第5章循环结构程序设计5例:显示1~10的平方#includestdio.hmain(){inti=1;while(i=10){printf(%d*%d=%d\n,i,i,i*i);i++;}}kj30运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100循环变量初值循环条件改变循环变量值大学C/C++语言程序设计第5章循环结构程序设计6解题步骤描述如下:(1)输入一个成绩,存入score;(2)判断score的值,当score≥0时,做下列工作:(2-1)累计总分;(2-2)人数加一;(2-3)输入下一个成绩,存入score;(3)重复第(2)步,直到score<0为止;(4)用总分除以人数,求出平均分。例:输入某班学生成绩,求全班平均成绩。#includestdio.hmain(){floatscore,sum=0,ave=0;intcount=0;scanf(%f,&score);//输入while(score=0){sum=sum+score;//累加count++;//人数scanf(%f,&score);}if(count!=0)ave=sum/count;printf(ave=%.2f\n,ave);}循环变量初值循环条件改变循环变量值循环体大学C/C++语言程序设计第5章循环结构程序设计应注意:1、计数器和累加器的初值;2、一次循环后,循环控制变量的变化情况。3、跳出循环时循环控制变量的值应为多少。7do循环体语句;while(表达式);执行流程:5.2do…while循环结构一般形式:大学C/C++语言程序设计第5章循环结构程序设计8特点:先执行循环体,后判断表达式说明:至少执行一次循环体do~while可转化成while结构大学C/C++语言程序设计第5章循环结构程序设计9例:用do~while循环求例1?#includestdio.hmain(){inti=1;do{printf(%d*%d=%d\n,i,i,i*i);i++;}while(i=10);}大学C/C++语言程序设计第5章循环结构程序设计10大学C/C++语言程序设计第5章循环结构程序设计1.while结构与do-while循环结构相类似。2.但要注意区别:•前者:先判断表达式,再执行语句。至少要执行0次•后者:先执行语句,再判断表达式。至少要执行1次。3.也就是说用两种循环结构处理同一问题时,若二者的循环体部分是一样的,当while后面表达式的第一次的值为“真(非0)”时,两种循环结构得到的结果相同,否则二者的结果不相同。While与do–while循环结构的比较11例:while和do~while比较scanf(%f,&score);while(score=0){sum=sum+score;scanf(%f,&score);}scanf(%f,&score);do{sum=sum+score;scanf(%f,&score);}while(score=0);比较两段程序在以下输入时输出结果的不同?1、score输入602、score输入-60大学C/C++语言程序设计第5章循环结构程序设计12一般形式:for(循环变量赋初值;终止条件;循环变量增(减)值){循环体语句;}for(表达式1;表达式2;表达式3){循环体语句;}5.3for循环结构大学C/C++语言程序设计第5章循环结构程序设计13执行流程:大学C/C++语言程序设计第5章循环结构程序设计0014例:输入n值,求n!。#includestdio.hmain(){inti,n;longfac;scanf(%d,&n);fac=1;for(i=1;i=n;i++)fac=fac*i;printf(\n%d!=%ld\n,n,fac);}大学C/C++语言程序设计第5章循环结构程序设计15说明:无限循环:for(;;)for语句可以转换成while结构scanf(“%d”,&n);fac=1;i=1;while(i=n){fac=fac*i;i++;}printf(\n%d!=%ld\n,n,fac);大学C/C++语言程序设计第5章循环结构程序设计16大学C/C++语言程序设计第5章循环结构程序设计注意事项:1.表达式1,2,3的省略。在具体应用中,表达式1,2,3都可以省略,但’;’不能省;2.逗号表达式在for语句中应用。for语句中的表达式1和表达式3都可以使用逗号表达式,特别是在两个循环变量控制循环的情况下。17例:利用putchar函数编程输出以下结果:abcdefghijPro1:#includestdio.hmain(){inti;for(i=0;i10;i++)putchar(‘a’+i);}Pro2:#includestdio.hmain(){inti=0;for(;i10;i++)putchar(‘a’+i);}Pro3:#includestdio.hmain(){inti=0;for(;i10;)putchar(‘a’+(i++));}18#includestdio.hmain(){inti,j,sum=0;for(i=1,j=100;ij;i++,j--)sum=sum+i+j;printf(%d\n,sum);}例:双循环变量求#includestdio.hmain(){inti,sum=0;for(i=1;i=100;i++)sum+=i;printf(%d,sum);}19大学C/C++语言程序设计第5章循环结构程序设计循环典型实例解析例:编写程序:输出所有的“水仙花数”。分析:水仙花数是指3位数的各位数字的立方和等于这个数本身。如:153=13+53+33【解析】穷举法:是将100到999所有的3位正整数一一考察,即将每一个3位正整数的个位数、十位数、百位数一一求出,算出三者的立方和,一旦与原数相等就输出。总共考察了900个3位正整数。20大学C/C++语言程序设计第5章循环结构程序设计#includestdio.hmain(){intunit,ten,hundred,n;for(n=100;n1000;n++){hundred=n/100;ten=n/10-hundred*10;unit=n%10;if(n==unit*unit*unit+ten*ten*ten+hundred*hundred*hundred)printf(%6d,n);}}21大学C/C++语言程序设计第5章循环结构程序设计例:计算斐波那契分数序列前n项之和(n为常数,斐波那契分数序列为2/1,3/2,5/3,8/5,13/8,21/13…)。分析:一般处理数列问题,首要的是找出数列的规律。斐波那契分数序列的规律是:后一个分数的分子为前一个分数的分子和分母之和,其分母为前一个分数的分子。...7151311类似题型:求Fibonacci数列:1,1,2,3,5,8,……的前40个数帕多瓦数列:1,1,1,2,2,3,4,5,7,9,12,16……求出这个数列的前20项之和。22大学C/C++语言程序设计第5章循环结构程序设计#includestdio.hmain(){inti=1,n;floatt,m,x=1,y=2,sum=0;printf(inputn:);scanf(%d,&n);while(i=n){m=y/x;//序列中一项;sum=sum+m;//累加;t=y;y=y+x;//求下一项的分子;x=t;//求下一项的分母;i++;}printf(Theresultis:%10.4f\n,sum);}23计算斐波那契分数序列前n项之和(n为常数,斐波那契分数序列为2/1,3/2,5/3,8/5,13/8,21/13…)。大学C/C++语言程序设计第5章循环结构程序设计5.4循环结构的嵌套•在循环体语句中又包含另一个完整的循环结构的形式,称为循环结构的嵌套。•嵌套在循环体内的循环体称为内循环,外面的循环体称为外循环。如果内循环中又有嵌套的循环语句,则构成多重循环。while、do…while、for循环结构既可以自身嵌套又可以相互嵌套。24循环的嵌套三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……}嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环25大学C/C++语言程序设计第5章循环结构程序设计例:打印九九表(矩形)12345678924681012141618…...91827364554637281#includestdio.hmain(){inti,j;for(i=1;i=9;i++)//控制行数{for(j=1;j=9;j++)//控制每一行中*的个数printf(%4d,i*j);printf(\n);}}kj3226大学C/C++语言程序设计第5章循环结构程序设计例:打印九九表(下三角)124…...91827364554637281#includestdio.hmain(){inti,j;for(i=1;i=9;i++)//控制行数{for(j=1;j=i;j++)//控制每一行中*的个数printf(%4d,i*j);printf(\n);}}27大学C/C++语言程序设计第5章循环结构程序设计例:打印九九表(上三角)1234567894681012141618…...81#includestdio.hmain(){inti,j;for(i=1;i=9;i++)//控制行数{for(j=1;j=9;j++)//控制每一行中*的个数if(ji)printf();elseprintf(%4d,i*j);printf(\n);}}28大学C/C++语言程序设计第5章循环结构程序设计例:编写程序输出如下图形。***************#includest
本文标题:大学C语言程序设计第二版(电子工业)第5章
链接地址:https://www.777doc.com/doc-69656 .html