《2.3 循环程序设计 电子课件 C语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《2.3 循环程序设计 电子课件 C语言程序设计基础.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.3 循环程序设计 电子课件工信版 C语言程序设计基础正确认识循环程序的执行特点正确认识循环程序的执行特点运用运用3 3种循环语句进行循环程序设计种循环语句进行循环程序设计运用运用2 2个循环辅助语句更好地控制程序流程个循环辅助语句更好地控制程序流程能力目标:能力目标:任务一任务一 认识认识whilewhile语句语句条件条件ANOYES循环结构循环结构 首先头判断条件的真假,首先头判断条件的真假,条件为真执行语句条件为真执行语句A A(循(循环体语句),环体语句),然后再判断然后再判断条件,如果仍为真,则重条件,如果仍为真,则重复执行循环体语句,以此复执行循环体语句,以此类推,类推,直到直
2、到条件为假条件为假则则结束结束循环循环语句执行。语句执行。1.1.基本程序结构的流程图表示基本程序结构的流程图表示1 1初识初识whilewhile语句语句 (1 1)思考:在程序设计中,用)思考:在程序设计中,用putchar()putchar()一次只能输出一个星号一次只能输出一个星号*,那么输出,那么输出5 5个星号个星号*、1010个星号个星号*,甚至更多的星号,甚至更多的星号*,该如何处理呢?,该如何处理呢?(2 2)观察下面两个程序,完成问题。)观察下面两个程序,完成问题。任务一 认识while语句程序二程序二main()int i=1;while(i=5)putchar(*);i
3、+=1;两个程序实现什么功能?两个程序实现什么功能?(它们都实现输出它们都实现输出5 5个星号个星号*)*)两个程序中,哪一个简便?程序中能否用循环语句来实现重复操作的控制?两个程序中,哪一个简便?程序中能否用循环语句来实现重复操作的控制?答:程序二简便,在程序中能用循环语句来实现对答:程序二简便,在程序中能用循环语句来实现对重复操作重复操作的控制。的控制。任务一 认识while语句程序一程序一main()main()putchar(*);putchar(*);putchar(*);putchar(*);putchar(*);2 2学习学习whilewhile语句的形式语句的形式(1 1)请观
4、察下面)请观察下面whilewhile语句的形式,完成问题。语句的形式,完成问题。(2 2)试写出)试写出whilewhile语句的一般形式。语句的一般形式。while(while(表达式表达式)语句语句语句一while(n+0&i5)scanf(%d,&x);i=i+1;关键字后的括号内是什么表达式?关键字后的括号内是什么表达式?关键字后的语句部分可以是哪些语句?关键字后的语句部分可以是哪些语句?关系表达式、逻辑表达式关系表达式、逻辑表达式简单语句、复合语句简单语句、复合语句.如果是多条语句,应该用如果是多条语句,应该用 括起括起来。来。条件条件ANOYES循环结构循环结构3.While3.
5、While语句的执行过程语句的执行过程while(表达式表达式)语句语句;(2 2)画出以下程序的流程图,并指出循环条件、循环体及循环控制变量的三个)画出以下程序的流程图,并指出循环条件、循环体及循环控制变量的三个工作。工作。#includestdio.h#includestdio.hmain()main()int i;int i;char ch;char ch;ch=#;ch=#;i=1;i=1;while(i3)while(i3)printf(%ct,ch);printf(%ct,ch);i+;i+;#循环条件是循环条件是循环体是循环体是循环控制变量是循环控制变量是 ,3 3个工作分别个工
6、作分别是是 、。i3i3printf();i+;printf();i+;i ii=1i=1i3i3i+i+注意:注意:循环三要素循环三要素1.1.循环条件循环条件 2.2.循环体循环体3.3.循环控制变量循环控制变量(3 3)请观察下面)请观察下面2 2个程序段,完成问题。个程序段,完成问题。语句一语句一i=1;i=1;while(i+=5)while(i+=5)printf(“hello!n”);printf(“hello!n”);语句二语句二i=1;i=1;while(-i=5)while(-i=5)printf(“world!n”);printf(“world!n”);判断下面哪一个程序
7、段是正确的?判断下面哪一个程序段是正确的?循环控制变量更新的趋势是什么?循环控制变量更新的趋势是什么?程序在什么时候才能判断循环是否终止?程序在什么时候才能判断循环是否终止?(语句一语句一)(让循环条件为假让循环条件为假)(判断循环条件时判断循环条件时)讨论讨论用用whilewhile语句编程求语句编程求1+2+1+2+10+10之和之和main()int i=1,s=0;while(i=10)s=s+i;i+;printf(“s=%dn”,s);思路:寻找思路:寻找加数加数与与求和求和的规律的规律加数加数i i从从1变到变到10,i i的的初值初值初值初值设设为为1,即,即i=1。每循环一次
8、,使每循环一次,使i增增1,即,即i+.直到直到i的值超过的值超过10。求和求和设变量设变量ss存放和存放和,循环求,循环求s=s+is=s+i,直至,直至i超过超过10。结果为:结果为:55循环条件循环条件 在循环结构中的表达式被称为循环条件。在循环结构中的表达式被称为循环条件。循环体循环体 在每次循环周期均要执行一次的语句,称为循在每次循环周期均要执行一次的语句,称为循环体。它可以是简单语句、复合语句,也可以是空语句。环体。它可以是简单语句、复合语句,也可以是空语句。循环控制变量循环控制变量 在循环条件中控制条件真假的变量,称在循环条件中控制条件真假的变量,称为循环控制变量。它通常决定循环
9、体的执行次数。为循环控制变量。它通常决定循环体的执行次数。正确写一个正确写一个whilewhile循环结构,对循环控制变量做循环结构,对循环控制变量做3 3个工作:个工作:一是给控制变量赋初值;一是给控制变量赋初值;二是写出正确的循环条件;二是写出正确的循环条件;三是控制变量的更新。三是控制变量的更新。在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。思考程序段的输出?思考程序段的输出?i=1;while(i=10)i+;sum=sum+i;运行后,输出:运行后,输出:运行后,输出:运行后,输出:sum=66sum=
10、66原因是什么?原因是什么?原因是什么?原因是什么?1下面程序的输出结果是。main()intn=0;while(n+=1);printf(%d,n);printf(%dn,n);0,1,3.#include“stdio.h”main()intn=4;while(n-)printf(“%d“,-n);程序的运行结果为:202设有以下程序,若输入52341,则输出结果是。main()intn1,n2;scanf(%d,&n2);while(n2!=0)n1=n2%10;n2=n2/10;printf(“%d,,n1);1,4,3,2,5,1.求2+4+6+100的和2.求1-2+3-4+5-+9
11、9-100的值。3.求1001000之间的水仙花数。4.求输入任意几个数中的最大值。输入-1结束。1.#include”stdio.h”main()inti=2,s=0;while(i=100)s+=i;i=i+2;i+;printf(“s=%dn”,s);2.#include”stdio.h”main()inti=2,s=0;while(i=100)if(i%2=0)s+=i;elses-=i;i+;printf(“s=%dn”,s);3.#inculde”stdio.h”main()inti=100,g,s,b,sum;while(i=max)max=c;printf(“max=%fn”,
12、max);#inculde”stdio.h”main()floatc,max,min,i=1,s=0,ave;scanf(“%d”,&c);max=min=s=c;while(i=max)max=c;if(minc)min=c;ave=s/62;printf(“s=%fn”,s);printf(“max=%fn”,max);printf(“min=%fn”,min);printf(“ave=%fn”,ave);5.求全班C语言的最大值和最小值和平均值,平均分和总分。5现有一等差数列,已知第一项a=1,公差b=4,下面程序的功能是输出满足前n项之和小于100的n最大值#includemain()
13、inta=1,b=4,sum=1,n=1;while(sum0);(1 1)该语句的关键字是什么?)该语句的关键字是什么?dowhile(2 2)在程序中标出循环体。)在程序中标出循环体。括起的部分括起的部分(3 3)在程序中标出循环条件。)在程序中标出循环条件。(4 4)写出该循环语句的一般形式。)写出该循环语句的一般形式。do语句;语句;while(条件);(条件);循环条件循环条件任务二 认识dowhile语句(1 1)请观察下面程序,完成问题。)请观察下面程序,完成问题。#include”stdio.h”#include”stdio.h”main()main()int sum,I;in
14、t sum,I;sum=0;sum=0;i=1;i=1;do do sum=sum+i;sum=sum+i;i=i+1;i=i+1;while(i=10)while(i=10);printf(“sum=%dn”,sum)printf(“sum=%dn”,sum);语句部分即循环体部分在哪里?语句部分即循环体部分在哪里?表达式即循环条件部分在哪里?表达式即循环条件部分在哪里?循环控制变量是:循环控制变量是:它的三个方面的工作分它的三个方面的工作分别是别是(sum=sum+i;i=i+1;)(sum=sum+i;i=i+1;)i=10i=10i ii=1 i=1 循环控制变量初值循环控制变量初值i
15、=10 i=10 循环条件循环条件i=i+1 i=i+1 循环控制变量更新循环控制变量更新2 2学习学习dodowhilewhile语句的执行过程语句的执行过程请观察请观察dodowhilewhile语句的流程,完成问题。语句的流程,完成问题。语句语句表达式表达式真真假假do语句;语句;while(条件);(条件);(1 1)比较下面)比较下面2 2个程序,写出运行结果。个程序,写出运行结果。#includestdio.h#includestdio.h#includestdio.h#includestdio.hmain()main()main()main()char ch;char ch;ch
16、ar ch;char ch;ch=getchar();ch=getchar();ch=getchar();ch=getchar();do while(ch!=*)do while(ch!=*)putchar(ch);putchar(ch);putchar(ch);putchar(ch);ch=getchar();ch=getchar();ch=getchar();ch=getchar();while(ch!=*);while(ch!=*);运行结果运行结果 运行结果运行结果若输入:若输入:ABC*ABC*若输入:若输入:ABC*ABC*则输出:则输出:则输出:则输出:若输入:若输入:*AB*A
17、B*若输入:若输入:*AB*AB*则输出:则输出:则输出:则输出:3 3dowhiledowhile语句与语句与whilewhile语句的区别语句的区别ABCABC*AB*ABABCABC无结果无结果(2 2)由上述运行结果看出,)由上述运行结果看出,dodowhilewhile语句与语句与whilewhile语句的区语句的区别是什么?别是什么?答:当第次执行循环体时,因为表达式为答:当第次执行循环体时,因为表达式为“真真”,两种循环得到的结果相同;否则,二者结果就不同。两种循环得到的结果相同;否则,二者结果就不同。(前提:二者循环体中的语句相同)(前提:二者循环体中的语句相同)main()i
18、ntx=3;doprintf(“%d”,x-=2);while(!(-x);#includestdio.hmain()intk=0,n;doscanf(%d,&n);k+=n;while(n!=-1);printf(k=%d,n=%d,k,n);main()inti,x,y;i=x=y=0;do+i;if(i%2!=0)x=x+i;i+;y=y+i+;while(i=7);printf(x=%d,y=%d,x,y);#includestdio.hmain()inta,b,i;a=1;b=3;i=1;doprintf(%d,%d,a,b);a=(b-a)*2+b;b=(a-b)*2+a;if(i
19、+%2=0)printf(n);while(b100);1.求1001000中能被2和3整除的数,每行输出5个数2.编写程序,从键盘输入一个整数n;若n为正数,则计算n到2n之间的整数和;若n为负数,则求2n到n之间的整数和。(1 1)观察下面的程序段,完成问题。)观察下面的程序段,完成问题。程序段一程序段一 程序段二程序段二sum=0;sum=0;sum=0;sum=0;I=1;for(I=1;I=10;I+)I=1;for(I=1;I=10;I+)while(I=10)while(I=10)scanf(%f,&num);scanf(%f,&num);scanf(%f,&num);sum=s
20、um+num;scanf(%f,&num);sum=sum+num;sum=sum+num;sum=sum+num;I+;I+;任务三 认识for语句1 1学习学习forfor语句的形式语句的形式程序段一实现的功能是什么?程序段一实现的功能是什么?程序段一、二所实现的功能完全一样,但在形式上有所程序段一、二所实现的功能完全一样,但在形式上有所不同,请将程序段一中循环控制变量不同,请将程序段一中循环控制变量I I的的3 3个工作在程序段个工作在程序段二中找到。二中找到。答:输入答:输入1010个数,并求这个数,并求这1010个数的和。个数的和。任务三 认识for语句 循环控制变量初值循环控制变量
21、初值 i=1 i=1 循环条件循环条件 i=10 i=10 循环控制变量更新循环控制变量更新 i+i+试写出试写出forfor语句的一般形式。语句的一般形式。for(for(表达式;表达式;表达式表达式;表达式;表达式)语句语句任务三 认识for语句 表达式表达式1 1;循环控制变量初值循环控制变量初值 i=1 i=1 表达式表达式2 2;循环条件循环条件 i=10 i=10 表达式表达式3 3 循环控制变量更新循环控制变量更新 i+i+forfor语句()里的语句()里的3 3个表达式分别对应循环变量三个工作的个表达式分别对应循环变量三个工作的哪一个。哪一个。表达式表达式1表达式表达式2语语
22、 句句表达式表达式3真真假假2 2学习学习forfor语句的执行过程语句的执行过程for(for(表达式表达式 表达式表达式 表达式表达式)语句语句;从流程图可以看出:从流程图可以看出:表达式表达式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(fo
23、r(ch=ach=a;ch=ech=e;)printf(%3c,ch);printf(%3c,ch);ch+;n=1;n=1;for(for(;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;printf(sum=%d,sum);#includestdio.hmain()inti;for(i=1;i=5;i+)switch(i%2)case0:i+;printf(#);break;case1:i+=2;printf(*);default:printf(n);程序:程序:流程图:流程图:4 4运用运用forfor语句编程语句编程编程求编程求12101210之积。(同时画出该程序的流程图)之积。(同时画出该程序的流程图)
限制150内