您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 8第5章 循环结构程序设计
第5章循环结构程序设计5.1为什么需要循环控制5.2用while语句实现循环5.3用do---while语句实现循环5.4用for语句实现循环5.5循环的嵌套5.6几种循环的比较5.7改变循环执行的状态5.8循环程序举例5.1为什么需要循环控制在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题要向计算机输入全班50个学生的成绩分别统计全班50个学生的平均成绩求30个整数之和教师检查30个学生的成绩是否及格5.1为什么需要循环控制例如:全班有50个学生,统计各学生三门课的平均成绩。scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver);输入学生1的三门课成绩,并计算平均值后输出scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver);输入学生2的三门课成绩,并计算平均值后输出要对50个学生进行相同操作重复50次循环50次循环结构和顺序结构、选择结构是结构化程序设计的三种基本结构,它们是各种复杂程序的基本构造单元回顾:三种基本结构改进的流程图(1)顺序结构AB回顾:三种基本结构改进的流程图(2)选择结构ABYpNAYpN回顾:三种基本结构改进的流程图(3)循环结构①当型循环结构AYp1NYx5N0x输出x的值x+1x回顾:三种基本结构改进的流程图(3)循环结构②直到型循环结构AYp2NYx≧5N0x输出x的值x+1x回顾:三种基本结构N-S流程图ABABYNpA当p1成立A直到p2成立顺序结构选择结构循环结构(当型)循环结构(直到型)5.2用while语句实现循环例如:全班有50个学生,统计各学生三门课的平均成绩。i=1i≤50输入一个学生成绩求一个学生平均成绩输出一个学生平均成绩i增1YN用while循环结构实现while(i=50){scanf……;aver=……;printf……;i++;}while语句的一般形式如下:while(表达式)语句循环体(重复进行的操作)while语句的一般形式如下:while(表达式)语句“真”时执行循环体语句“假”时不执行循环条件表达式while循环的特点是:先判断条件表达式,后执行循环体语句例5.1求1+2+3+…+100,即1001nn回顾S1:s=1S2:i=2S3:s=s+1/i*(-1)i+1S4:i=i+1S5:若i=100则返回S3,否则进入S6S6:输出s的值10019919814131211例:求所求值的初始值循环次数控制变量的初始值循环次数控制变量的结束值所求值和每一项的关系循环次数控制变量和相邻项的关系例5.1求1+2+3+…+100,即解题思路:要重复100次加法运算,可用循环实现S1:sum=1S2:i=2S3:sum=sum+iS4:i=i+1S5:若i=100则返回S3,否则进入S6S6:输出sum的值1001nn#includestdio.hintmain(){inti=2,sum=1;while(i=100){smu=sum+ii++;}printf(sum=%d\n,sum);return0;}#includestdio.hintmain(){inti=2,sum=1;while(i=100){sum=sum+i;i++;}printf(sum=%d\n,sum);return0;}循环步长为1,不能丢,否则循环永不结束循环控制变量用于控制循环条件且要有初始值、循环步长和结束值初始值不能少结束值不能少例5.1求1+2+3+…+100,即解题思路:这是累加问题,需要先后将100个数相加要重复100次加法运算,可用循环实现后一个数是前一个数加1而得加完上一个数i后,使i加1可得到下一个数1001nn#includestdio.hintmain(){inti=1,sum=0;while(i=100){sum=sum+i;i++;}printf(sum=%d\n,sum);return0;}练习110019919814131211求#includestdio.h#includemath.hintmain(){doublei=2,sum=1;while(i=100){sum=sum+1/(i*pow(-1,i+1));i++;}printf(sum=%lf\n,sum);return0;}练习2)100001()161(91)41(1求#includestdio.h#includemath.hintmain(){doublei=2,sum=1;while(i=100){sum=sum+1/(i*i*pow(-1,i+1));i++;}printf(sum=%lf\n,sum);return0;}5.3用do---while语句实现循环do---while语句的特点:先无条件地执行循环体,然后判断循环条件是否成立do---while语句的一般形式为:do语句while(表达式);表达式YN循环体语句5.3用do---while语句实现循环例5.2用do…while语句求:1+2+3+…+100,即1001nn5.3用do---while语句实现循环解题思路:i≤100YNsum=sum+ii=i+1sum=0i=1i=1;sum=0;do{sum=sum+i;i++;}while(i=100);#includestdio.hintmain(){inti=1,sum=0;do{sum=sum+i;i++;}while(i=100);printf(sum=%d\n,sum);return0;}例5.3while和do---while循环的比较。inti,sum=0;printf(“i=?”);scanf(“%d”,&i);while(i=10){sum=sum+i;i++;}printf(“sum=%d\n,sum);inti,sum=0;printf(“i=?”);scanf(“%d”,&i);do{sum=sum+i;i++;}while(i=10);printf(“sum=%d\n,sum);do…while至少执行1次循环。while至少执行0次循环。练习310099984321求#includestdio.h#includemath.hintmain(){doublei=2,sum=1;do{sum=sum+i*pow(-1,i+1);i++;}while(i=100);printf(sum=%lf\n,sum);return0;}练习410016941求#includestdio.h#includemath.hintmain(){longdoublei=2,sum=1;do{sum=sum*i*i;i++;}while(i=10);printf(sum=%llf\n,sum);return0;}第11次课结束!复习试打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。While解法1.#includestdio.h2.intmain()3.{4.inti,j,k,n;5.printf(“‘水仙花’数:);6.n=100;7.while(n1000)8.{9.i=n/100;/*分解出百位*/10.j=n/10%10;/*分解出十位*/11.k=n%10;/*分解出个位*/12.if(n==i*i*i+j*j*j+k*k*k)13.{14.printf(%-5d,n);15.}16.n++;17.}18.printf(\n);19.return0;20.}while结构dowhile解法1.#includestdio.h2.intmain()3.{4.inti,j,k,n;5.printf(“‘水仙花’数:);6.n=100;7.do8.{9.i=n/100;/*分解出百位*/10.j=n/10%10;/*分解出十位*/11.k=n%10;/*分解出个位*/12.if(n==i*i*i+j*j*j+k*k*k)13.{14.printf(%-5d,n);15.}16.n++;17.}while(n1000);18.printf(\n);19.return0;20.}dowhile结构While解法1.#includestdio.h2.intmain()3.{4.inti,j,k,n;5.printf(“‘水仙花’数:);6.for(n=100;n1000;n++)7.{8.i=n/100;/*分解出百位*/9.j=n/10%10;/*分解出十位*/10.k=n%10;/*分解出个位*/11.if(n==i*i*i+j*j*j+k*k*k)12.{13.printf(%-5d,n);14.}15.}16.printf(\n);17.return0;18.}for结构1.#includestdio.h2.intmain()3.{4.inti,j,k,n;5.printf(“‘水仙花’数:);6.n=100;7.while(n1000)8.{9.i=n/100;10.j=n/10%10;11.k=n%10;12.if(n==i*i*i+j*j*j+k*k*k)13.{14.printf(%-5d,n);15.}16.n++;17.}18.printf(\n);19.return0;20.}1.#includestdio.h2.intmain()3.{4.inti,j,k,n;5.printf(“‘水仙花’数:);6.for(n=100;n1000;n++)7.{8.i=n/100;9.j=n/10%10;10.k=n%10;11.if(n==i*i*i+j*j*j+k*k*k)12.{13.printf(%-5d,n);14.}15.}16.printf(\n);17.return0;18.}5.4用for语句实现循环for语句不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况for语句完全可以代替while语句printf(%d,i);i++i=100i=15.4用for语句实现循环for(i=1;i=100;i++){printf(%d,i);}i≤100YNi=i+1i=1输出i5.4用for语句实现循环for语句的一般形式为for(表达式1;表达式2;表达式3)语句设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值执行5.4用for语句实现循环for语句的一般形式为for(表达式1;表达式2;表达式3)语句循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环5.4用for语句实现循环for语句的一般形式为for(表达式1;表达式2;表达式3)语句作为循环的调整器,例如使循环变量增值,它是在执行完循环体后才进行的5.4用for语句实现循环for语句的执行过程:(1)先求解表达式1(2)求解表达式2,若其值为真,执行循环体,然后执行下面第(3)步。若为假,则结束循环,转到第(5)步(3)求解表达式3(4)转回上面步骤(2)继续执行(5)循环结束,执行for语句下面的一个语句5.4用for语句实现循环for(i=1;i=100;i++)sum=sum+i;等价于i=1;while(i=100){sum=sum+i;i++;}用for语句更简单、方便5.4用for语句实现循环for(表达式1;表达式2;表达式3)语句一个或两个或三个表达式均可以省略5.4用for语句实现循环fo
本文标题:8第5章 循环结构程序设计
链接地址:https://www.777doc.com/doc-4026148 .html