《2.4 for循环 电子课件 C语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《2.4 for循环 电子课件 C语言程序设计基础.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.4 for循环 电子课件工信版 C语言程序设计基础程序段一实现的功能是什么?程序段一实现的功能是什么?程序段一、二所实现的功能完全一样,但在形式上有所程序段一、二所实现的功能完全一样,但在形式上有所不同,请将程序段一中循环控制变量不同,请将程序段一中循环控制变量I I的的3 3个工作在程序段个工作在程序段二中找到。二中找到。答:输入答:输入1010个数,并求这个数,并求这1010个数的和。个数的和。任务三 认识for语句 循环控制变量初值循环控制变量初值 i=1 i=1 循环条件循环条件 i=10 i=10 循环控制变量更新循环控制变量更新 i+i+试写出试写出forfor语句的一般形式。
2、语句的一般形式。for(for(表达式;表达式;表达式表达式;表达式;表达式)语句语句任务三 认识for语句 表达式表达式1 1;循环控制变量初值循环控制变量初值 i=1 i=1 表达式表达式2 2;循环条件循环条件 i=10 i=10 表达式表达式3 3 循环控制变量更新循环控制变量更新 i+i+forfor语句()里的语句()里的3 3个表达式分别对应循环变量三个工作的个表达式分别对应循环变量三个工作的哪一个。哪一个。表达式表达式1表达式表达式2语语 句句表达式表达式3真真假假2 2学习学习forfor语句的执行过程语句的执行过程for(for(表达式表达式 表达式表达式 表达式表达式)语
3、句语句;从流程图可以看出:从流程图可以看出:表达式表达式1 1;可以放在循环之前;可以放在循环之前1 1 表达式表达式2 2;位置不变位置不变 表达式表达式3 3 可以放在循环体中可以放在循环体中sum=0;sum=0;i=1;for(for(;i=10i0i0;i-i-)printf(%d,i);printf(%d,i);n=2n=2;for(for(;n18n18;n=n+3n=n+3)printf(%d,n);printf(%d,n);for(for(ch=ach=a;ch=ech=e;)printf(%3c,ch);printf(%3c,ch);ch+;n=1;n=1;for(for(
4、;n*n20;n*n20;)printf(%dn,n*n);printf(%dn,n*n);n+;n+;for(for(i=1,j=5;ij;i+,j-i=1,j=5;ij;i+,j-)printf(“i=%d printf(“i=%d j=%dn,i,j);j=%dn,i,j);for(i=1,s=0;i+)for(i=1,s=0;i+)s=s+i;s=s+i;运行结果:运行结果:运行结果:运行结果:运行结果:运行结果:7.7.#includestdio.hmain()inti,t,sum=0;for(t=i=1;i=10;)sum+=t;+i;if(i%3=0)t=-i;elset=i;p
5、rintf(sum=%d,sum);#includestdio.hmain()inti;for(i=1;i=10;i+)switch(i%3)case0:i+;printf(#);break;case1:i+=2;printf(*);default:printf(n);程序:程序:流程图:流程图:4 4运用运用forfor语句编程语句编程编程求编程求12101210之积。(同时画出该程序的流程图)之积。(同时画出该程序的流程图)1.求2+4+6+100的和2.求1-2+3-4+5-+99-100的值。3.求1001000之间的水仙花数。1.#include”stdio.h”main()int
6、s=0;for(i=2;i=100;i+=2)s+=i;printf(“s=%dn”,s);2.#include”stdio.h”main()int s=0;for(i=1;i=100;i+)if(i%2=0)s-=i;else s+=i;printf(“s=%dn”,s);3.#inculde”stdio.h”main()int g,s,b,sum;for(i=100;i1000;i+)g=i%10;s=i/10%10;b=i/100;sum=g*g*g+s*s*s+b*b*b;if(i=sum)printf(“%d是水仙花数n”,i);()请观察下面两个图,完成问题。()请观察下面两个图,
7、完成问题。(b)图任务四 认识循环嵌套1 1学习循环嵌套的形式学习循环嵌套的形式 while()while()(2 2)阅读信息,完成问题。)阅读信息,完成问题。信息:语言提供的信息:语言提供的3 3种循环结构:种循环结构:while while、do while do while 、for for都可以相互嵌都可以相互嵌套,自由组合。套,自由组合。问题:在已有几种循环嵌套形式后,补充问题:在已有几种循环嵌套形式后,补充3 3种合法的形式。种合法的形式。do do while();while();外层循环外层循环内层循环内层循环while()do while();do while()while
8、();外层循环外层循环内层循环内层循环for(;)while()while()for(;)外层循环外层循环内层循环内层循环for(;)do while();do for(;)while();外层循环外层循环内层循环内层循环 for(;)for(;)外层循环外层循环内层循环内层循环 外层循环条件外层循环条件 外层循环语句外层循环语句1 内层循环条件内层循环条件 内存循环体内存循环体 外层循环语句外层循环语句2 2 2观察二重循环,观察二重循环,完成问题。完成问题。#include#include#define R 5#define R 5#define C 5#define C 5main()m
9、ain()int m,n;int m,n;for(m=1;m=R;m+)for(m=1;m=R;m+)for(n=1;n=C;n+)for(n=1;n=C;n+)printf(%3d,m*n);printf(%3d,m*n);printf(n);printf(n);程序定义了哪些变量?程序定义了哪些变量?程序中采用几重循环嵌套?程序中采用几重循环嵌套?程序中外层循环和程序中外层循环和外层循环外层循环为哪几为哪几行?内、外层循环的循环体中有几条行?内、外层循环的循环体中有几条语句?语句?答:两个变量,答:两个变量,m m和和n n答:二重循环答:二重循环(2 2)请观察循环嵌套部分)请观察循环嵌
10、套部分的流程,完成问题。的流程,完成问题。m=1m=5 n=1n=5输出输出m*n n+输出输出n m+真真真真假假n=5输出输出m*n n+假假#include#include#define R 5#define R 5#define C 5#define C 5main()main()int m,n;int m,n;for(m=1;m=R;m+)for(m=1;m=R;m+)for(n=1;n=C;n+)for(n=1;n=C;n+)printf(%3d,m*n);printf(%3d,m*n);printf(n);printf(n);请思考:为什么会出现这种结请思考:为什么会出现这种结果
11、?与上例程序有什么区别?果?与上例程序有什么区别?(3 3)请阅读程序,完成问题,并记录上机调试结果。)请阅读程序,完成问题,并记录上机调试结果。#include#defineR5main()intm,n;for(m=1;m=R;m+)for(n=1;n=m;n+)printf(%3d,m*n);printf(n);main()inti,j;for(i=0;i6;+i)for(j=i;j6;+j)printf(“*”);printf(“n”);main()inti,j;i=0;j=0;while(i+6)j=0;doprintf(“*”);while(+j5);includemain()int
12、i,j;for(i=4;i=1;i-)printf(“*”);for(j=1;j=4-i;j+)printf(“*”);printf(“n”);#includemain()inti,j,k;for(i=0;i=5;i+)for(j=1;j=i;j+)printf(“”);for(k=0;kn)m=m-n;while(nm)n-=m;printf(m=%dn,m);1编写求20+21+22+25的程序。main()long i=0,s=0,m=1;for(;i=5;i+)s=s+m;for(j=1;j=i;j+)m=m*2;printf(“s=%d”,s):1 1学习学习breakbreak语句
13、语句 (1 1)请阅读程序,完成问题。)请阅读程序,完成问题。任务五 认识循环辅助语句#include#include#define PI 3.14#define PI 3.14main()main()int r;int r;float V,h;float V,h;printf(printf(请输入圆柱体的高请输入圆柱体的高:);:);scanf(%f,&h);scanf(%f,&h);for(r=1;r=10;r+)for(r=1;r100.0)if(V100.0)break break;printf(printf(体积等于体积等于.2fn,V);.2fn,V);printf(printf(
14、此时此时r=%dn,r);r=%dn,r);该程序该程序forfor语句部分的循环体内语句部分的循环体内有几条语句?有几条语句?3 3条语句。条语句。除了当除了当r10r10时,可退出时,可退出forfor循环外,是循环外,是否有其他的方式退出否有其他的方式退出forfor循环?循环?答:可以通过当答:可以通过当V100.0V100.0时,执行时,执行breakbreak语句退出循环。语句退出循环。(2 2)请观察该程序)请观察该程序forfor语句部分的流程,完成问题。语句部分的流程,完成问题。r=1V=PI*r*r*hr100.0输出V r+真假假真break breakbreak语句也可
15、以用于循环结构中,使程序提前跳语句也可以用于循环结构中,使程序提前跳出循环体,结束循环,流程转移到循环体后面的第出循环体,结束循环,流程转移到循环体后面的第1 1条条语句。语句。breakbreak语句不适用于除循环结构和语句不适用于除循环结构和switchswitch结构外结构外的其他地方。的其他地方。breakbreak语句在嵌套循环里,它只影响包含它的最内层循环。语句在嵌套循环里,它只影响包含它的最内层循环。知识盘点:main()intt;t=0;while(printf(*)t+;if(t50)break;while(a=14);printf(“a=%dy=%dn”,a,y);#inc
16、ludemain()intnumb,x,s;s=0;scanf(%d,&numb);for(;)x=numb/10;numb/=10;s+=x;if(numb=0)break;printf(s=%drn,s);运行结果为运行结果为(假定假定n值输入为值输入为2583):#includestdio.hmain()inti;for(i=1;i=5;i+)switch(i%2)case0:i+;printf(#);break;case1:i+=2;printf(*);default:printf(n);2 2学习学习continuecontinue语句语句()请阅读程序,完成问题,并记录上机调试结果
17、。()请阅读程序,完成问题,并记录上机调试结果。该程序for语句部分的循环体内有几条语句?答:有答:有2条语句。条语句。#include#includemain()main()int num;int num;for(num=1;num=10;num+)for(num=1;num=10;num+)if(num%2=0)if(num%2=0)continue;continue;printf(%dn,num);printf(%dn,num);num=50num=100num%7=0输出numnum+真假假真continue continuecontinue语句的作用是:使本次循环体的执行提前结语句的
18、作用是:使本次循环体的执行提前结束(即流程跳过循环体中束(即流程跳过循环体中continuecontinue后的所有语句),提前后的所有语句),提前结束本次循环周期,然后再根据循环条件是否满足决定是结束本次循环周期,然后再根据循环条件是否满足决定是否进入下一次循环周期。否进入下一次循环周期。continuecontinue语句结束本次循环周期,进入下一次周期。语句结束本次循环周期,进入下一次周期。那么,下一次周期究竟在何处开始呢?对于那么,下一次周期究竟在何处开始呢?对于whilewhile语句和语句和dowhiledowhile语句,执行了语句,执行了coutinuecoutinue语句后,
19、它的下一步操语句后,它的下一步操作是计算测试表达式即循环控制条件;对于作是计算测试表达式即循环控制条件;对于forfor语句,下语句,下一步操作是先进行表达式一步操作是先进行表达式3 3的计算即控制变量的更新、调的计算即控制变量的更新、调整,然后再进行表达式整,然后再进行表达式2 2的计算即循环控制条件。的计算即循环控制条件。#includemain()inti=1;while(i=15)if(+i%3!=2)continue;elseprintf(%d,i);printf(n);main()x=3;do y=x-;if(!y)printf(x);continue;printf(#);whil
20、e(1=x=2);#includemain()inti;for(i=1;i=5;+i)if(i%2)printf(“*”);elsecontinue;printf(“#”);printf(“$”);main()inti,j,k=19;while(i=k-1)k-=3;if(k%5=0)i+;continue;elseif(k5)break;i+;printf(“i=%d,k=%dn”,i,k);main()inti=0;while(i10)if(i1)continue;if(i=5)break;i+;main()inti,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j
21、+)if(j%2)continue;x+;x+;printf(x=%dn,x);#include“stdio.h”main()inti,j;for(i=0;i6;i+)for(j=1;j12;j+)if(j)break;if(i3)break;printf(“i=%d“,i)printf(“j=%d“,j)2 2累乘的应用累乘的应用题目:编程求题目:编程求2 21010。(用。(用2 2种方法实现)种方法实现)(1 1)分析:由题意可知,求的是)分析:由题意可知,求的是1010个个2 2相乘。程序需要定义相乘。程序需要定义2 2个变量个变量s s和,和,s s用于存放乘积,用于计算乘以用于存放乘积,用于计算乘以2 2的次数(即的次数(即循环次数)。循环次数)。(2 2)根据分析,编写程序,并记录上机调试结果。)根据分析,编写程序,并记录上机调试结果。方法一:方法一:记录上机调试结果:记录上机调试结果:方法二:方法二:记录上机调试结果:记录上机调试结果:3 3讨论讨论 题目:假设有一张无限大的纸,其厚度为题目:假设有一张无限大的纸,其厚度为0.2mm0.2mm(毫米),现(毫米),现反复地将其对折,编程计算对折多少次后可以达到珠穆朗玛峰的高反复地将其对折,编程计算对折多少次后可以达到珠穆朗玛峰的高度度8848m8848m(米)?(米)?
限制150内