程序和流程控制编程及应用教材

上传人:544dd****4sss 文档编号:253024030 上传时间:2024-11-27 格式:PPTX 页数:98 大小:806.06KB
收藏 版权申诉 举报 下载
程序和流程控制编程及应用教材_第1页
第1页 / 共98页
程序和流程控制编程及应用教材_第2页
第2页 / 共98页
程序和流程控制编程及应用教材_第3页
第3页 / 共98页
资源描述:

《程序和流程控制编程及应用教材》由会员分享,可在线阅读,更多相关《程序和流程控制编程及应用教材(98页珍藏版)》请在装配图网上搜索。

1、华中科技大学信息学院C语言程序设计,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第1、2章回,顾,顾,C程序,结,结构:,C程序,由,由main函,数,数和若,干,干个其,他,他子函,数,数(标,准,准函数,和,和自定,义,义函数,等,等)构,成,成。函,数,数包括,函,函数头,和,和函数,体,体,C,程,程序语,句,句以分,号,号作为,结,结束标,志,志。,语法单,位,位(单,词,词):关键字,、,、标识,符,符、分,隔,隔符、,常,常量、,变,变量、,运,运算符。,数据类,型,型的规,定,定以及,表,表达式,运,运算规,则,则。,输入输,出,出函数g

2、etchar,putchar,scanf,printf的使,用,用。,第3章,程,程序,和,和流程,控,控制,3.1C,语,语言程,序,序的版,式,式及语,句,句,3.2,结,结,构,构化程,序,序设计,和,和流程,控,控制,3.3if语句,3.4switch多,分,分支选,择,择语句,3.5,循,循,环,环控制,3.6,辅,辅,助,助控制,语,语句,3.7,典,典,型,型程序,编,编写方,法,法举例,3.8,小,小,结,结,C语言,流,流程控,制,制语句,3.1C,语,语言程,序,序的版,式,式及语,句,句,3.1.1C,语,语言,程,程序,的,的版,式,式,3.1.2C,语,语言,的,的语

3、,句,句,,例3.1/*,求,求,二,二整,数,数之,和,和的,程,程序*/,#include//,预,预处,理,理,voidmain()//,函,函数,定,定义,{,inta,b;//,变,变量,说,说明,intsum;,scanf("%d%d",//,数,数,据,据输,入,入,,sum=a+b;//,执,执行,部,部分,,printf("sum=%d",sum);//,信,信息,输,输出,},该程,序,序的,运,运行,结,结果,为,为:,78//,输,输入,sum=15,3.1.1C,语,语言,程,程序,的,的版,式,式特,征,征,程序,设,设计,主要,任,任务,输入,处理,输出,编写C语

4、,言,言程,序,序一,般,般应,包,包含,如,如下,几,几个,部,部分,(1,),),注释,部,部分,:格,式,式为"/*注,释,释内,容,容*,/,/",或,或"//,注,注释,内,内容";,在,在函,数,数的,最,最上,端,端,,一,一般,都,都应,有,有一,段,段注,释,释信,息,息,,主,主要,说,说明,函,函数,的,的功,能,能,,输,输入,、,、输,出,出及,其,其限,制,制;,如,如是,商,商品,软,软件,还,还应,包,包含,版,版权,信,信息,,,,在,程,程序,的,的其,他,他部,分,分也,可,可加,注,注释,。,。编,程,程者,要,要养,成,成一,边,边编,程,程序,、,、

5、一,边,边加,注,注释,的,的习,惯,惯。,一,一般,长,长段,的,的注,释,释用"/*注,释,释内,容,容*,/,/形,式,式,,短,短段,的,的注,释,释用"//注,释,释内,容,容",形,形式,。,。,(2,),),预处,理,理块,、,、全,局,局变,量,量说,明,明等,。(,参,参见,后,后面,章,章节,),),(3,),),函数,定,定义,部,部分,,包,括,括函,数,数类,型,型,,函,函数,名,名及,参,参数,表,表,,由,由于,只,只有,一,一个,函,函数,故,故取,名,名main(,),),,由,由于,无,无返,回,回值,故,故类,型,型为void,,,,无,参,参数,输,输

6、入,时,时,main,(,(),内,内参,数,数表,为,为空,。,。,(4,),),变量,说,说明,部,部分,,对,所,所用,的,的变,量,量进,行,行说,明,明;,(5,),),数据,输,输入,部,部分,,对,要,要使,用,用的,变,变量,赋,赋初,值,值,,可,可直,接,接或,间,间接,输,输入,,,,有,些,些是,在,在第,(,(4,),)部,分,分完,成,成(,即,即变,量,量直,接,接初,始,始化,),);,(6,),),执行,部,部分,,它,是,是整,个,个程,序,序的,核,核心,,,,一,般,般是,对,对程,序,序算,法,法用,结,结构,化,化程,序,序设,计,计方,法,法进,行

7、,行描,述,述,,然,然后,将,将其,转,转化,成,成对,应,应的C语,言,言语,句,句;,(7,),),信息,输,输出,部,部分,,根,据,据要,求,求输,出,出所,求,求的,信,信息,或,或返,回,回结,果,果;,有,有些,是,是在,第,第(6),部,部分,一,一边,执,执行,一,一边,输,输出,。,。,如上,述,述程,序,序的,执,执行,部,部分,采,采用,函,函数,调,调用,则,则上,述,述程,序,序应,为,为,例3.2/*,求,求,二,二整,数,数之,和,和的,程,程序*/,#include//,预,预处,理,理,intadd(intx,inty);//,函,函数,声,声明,void

8、main()//,函,函数,定,定义,{,inta,b;//,变,变量,说,说明,intsum;,scanf("%d%d",//,数,数据,输,输入,,sum=add(a,b);//,执,执行,部,部分,,printf("sum=%d",sum);//信息,输,输出,},/*求和,函,函数,输,入,入参数为,二,二整数,,返,返回值为,其,其和*/,intadd(intx, int y)//函数,定,定义,{,intz;// 变,量,量说明,z =x +y;//执行,部,部分,return z;//返回,结,结果,},输入:,7 8,该程序的,运,运行结果,为,为:,sum=15,,语句是C

9、,语,语言程序,的,的基本元,素,素,语句,以,以分号为,结,结束标志,。,。程序中的,各,各函数模,块,块都是由,一,一定含义,的,的语句组,成,成的。,例:,charch=,‘H’,;,/*分号,为,为语句结,束,束标志*/,inty= 7;,c=a+b;,printf(,“,“hello !,”,”),;,;,,语句的分,类,类:,说明语句,用来对程,序,序中所使,用,用的各种,类,类型变量,及,及属性进,行,行说明,,按,按其所起,作,作用有时,也,也称为定,义,义语句。,执行语句,包括,表达式语,句,句、流程,控,控制语句,、,、函数调,用,用语句等,完,完成一定,运,运算操作,功,

10、功能的语,句,句。,,3.1.2 C,语,语言的语,句,句,说明语句,用来对程,序,序中所使,用,用的各种,类,类型变量,进,进行说明,,,,也称为,定,定义语句,。,。,,说明语句,的,的格式:<存储类,型,型> 数,据,据类型,变,变量名,列,列表;,,例:inti,j ;//说,明,明了两个,整,整型变量i和j,,说明语句,同,同时也可,以,以进行初,始,始化赋值,,,,如:,charch=,‘H’,;,unsignedlongy =0x35847412 ;,,执行语句,中,中所使用,的,的每一个,变,变量都必,须,须在此前,说,说明过。,2. 执,行,行语句。,一,一般包含,四,四大

11、类:,表达式语,句,句(包括,空,空语句),复合语句,流程控制,语,语句,辅助控制,语,语句,(1)表,达,达式语句,任何一个,表,表达式加,上,上一个分,号,号就是一,条,条表达式,语,语句;,//表达,式,式语句,,通,通常是赋,值,值表达式,或,或函数调,用,用表达式,。,。,例: c=a+b;,sum= add( a, b),; //,赋,赋值语句,printf(,“,“hello !,”,”),;,; //函数调,用,用语句,;//空语句,(2)复,合,合语句,将若干语,句,句用一对,大,大括号{}括起,来,来就构成,了,了复合语,句,句。复合,语,语句的一,般,般格式为:,{,说

12、明语句;,可执行语,句,句;,},复合语句,在,在程序结,构,构上是以,整,整体出现,,,,相当于,程,程序块(,BLOCK),,当一个功,能,能必须用,多,多条语句,才,才能完成,时,时,就需,要,要使用复,合,合语句。,采,用,用{},可,可,以,以,清,清,晰,晰,地,地,表,表,达,达,程,程,序,序,的,的,层,层,次,次,结,结,构,构,。,。,3.2,结,结,构,构,化,化,程,程,序,序,设,设,计,计,和,和,流,流,程,程,控,控,制,制,3.2.1结,构,构,化,化,程,程,序,序,设,设,计,计,3.2.2C,语,语,言,言,的,的,流,流,程,程,控,控,制,制,语,

13、语,句,句,和,和,辅,辅,助,助,控,控,制,制,语,语,句,句,3.2.1,结,结,构,构,化,化,程,程,序,序,设,设,计,计,结,构,构,化,化,程,程,序,序,设,设,计,计,的,的,基,基,本,本,思,思,想,想,,,,任,何,何,程,程,序,序,都,都,可,可,以,以,用,用,三,三,种,种,基,基,本,本,结,结,构,构,表,表,示,示,:,:,顺,序,序,结,结,构,构,选,择,择,结,结,构,构,循,环,环,结,结,构,构,。,。,采,用,用,这,这,三,三,种,种,基,基,本,本,结,结,构,构,编,编,写,写,程,程,序,序,的,的,设,设,计,计,风,风,格,格,称

14、,称,为,为,结,结,构,构,化,化,程,程,序,序,设,设,计,计,。,。,图,3.1,顺,序,序,结,结,构,构,示,示,意,意,图,图,顺,序,序,结,结,构,构:,按,按,语,语,句,句,顺,顺,序,序,依,依,次,次,执,执,行,行,。,。,//,通,过,过,语,语,句,句,书,书,写,写,顺,顺,序,序,自,自,然,然,实,实,现,现,inta,b;//,变,变,量,量,说,说,明,明,intsum;,scanf(,“,“%d%d,”,”,&a,&b,);//,输,输,入,入,sum=a+b;//,执,执,行,行,运,运,算,算,printf(,“,“sum=%d,”,”,sum)

15、;//,输,输,出,出,选,择,择,结,结,构,构,根,据,据,条,条,件,件,选,选,择,择,两,两,支,支,或,或,多,多,支,支,程,程,序,序,中,中,的,的,一,一,支,支,执,执,行,行,。,。,图3.2,选,择,择,结,结,构,构,示,示,意,意,图,图,由,两,两,分,分,支,支,选,选,择,择,结,结,构,构,可,可,以,以,派,派,生,生,出,出,另,另,一,一,种,种,基,基,本,本,结,结,构,构,,,,,多,多,分,分,支,支,选,选,择,择,结,结,构,构,。,。,//if,switch,语,语,句,句,,选,选,择,择,运,运,算,算,符,符,实,实,现,现,if

16、(a>=0),{,printf("comein!");,},else,{,printf("goaway!");,},循,环,环,结,结,构,构,在,判,判,断,断,条,条,件,件,成,成,立,立,的,的,情,情,况,况,下,下,,,,,反,反,复,复,执,执,行,行,某,某,个,个,程,程,序,序,段,段,。,。,图3.3,循,环,环,结,结,构,构,示,示,意,意,图,图,//while,dowhile,以,以,及,及,//for,语,语,句,句,来,来,实,实,现,现,while(i<=100),{,sum=sum+i;,i++;,},3.2.2C,语,语,言,言,的,的,流,流,程,程,

17、控,控,制,制,语,语,句,句,和,和,辅,辅,助,助,控,控,制,制,语,语,句,句,3.3,条,条,件,件,选,选,择,择,语,语,句,句,:,:if,语,语,句,句,if,条,条,件,件,选,选,择,择,语,语,句,句,的,的,三,三,种,种,形,形,式,式,双,路,路,分,分,支,支,选,选,择,择,执,执,行,行,语,语,句,句if,…,…else,…,…,单,路,路,分,分,支,支,选,选,择,择,执,执,行,行,语,语,句,句if,…,…,多,路,路,分,分,支,支,选,选,择,择,执,执,行,行,语,语,句,句if,…,…elseif,…,…else...,1if,语,语,句,

18、句,的,的,标,标,准,准,形,形,式,式if,…,…else,…,…,双,双,路,路,分,分,支,支,例:,if(a==b),{,mark++;,printf(,“,“youareright!");,},else,{,printf(,“,“youarewrong!");,},注,意,意,:,:,对,对,于,于,某,某,分,分,支,支,包,包,含,含,多,多,行,行,语,语,句,句,时,时,,,,,必,必,须,须,采,采,用,用{},括,括,起,起,来,来,构,构,成,成,复,复,合,合,语,语,句,句,形,形,式,式,,初,初,学,学,者,者,书,书,写,写,程,程,序,序,时,时,尤,尤,

19、其,其,要,要,注,注,意,意,此,此,问,问,题,题,。,。,例a:,if(a==b),n++;,printf("youareright!");,else,mark--;,printf("youarewrong!");,,易,犯,犯,错,错,误,误,!,!,①,Sample-3-1.c,对,于,于,分,分,支,支,只,只,有,有,单,单,行,行,语,语,句,句,则,则,可,可,以,以,不,不,用,用{}.,如:,if(a>=90&&a<=100),printf(,“,“GradeA!");,else,printf(,“,“GradeB!");,,还,可,可,以,以,写,写,成,成:,if(a

20、>=90&&a<=100)printf(,“,“A!");,elseprintf(,“,“b!");,2if单路,分,分支形式(,选,选择性执行,语,语该分支),scanf(“%f”,,if (i<60),{,printf(“不,及格,”);,},printf(“%f,”,”,i);,在C语言程,序,序中,还常,用,用如下书写,形,形式:,if(x)等价于 if(x!=0),if(!x)等价于 if(x==0),,如变量x为float,或,或double实型变,量,量,则与0,比,比较的if,语,语句建议如,下,下:,if (fabs(x)<= 1e-6 ),图3.7,多,多路分支if语句,i

21、f (,表,表达式1),语句1;,elseif(表达式2),语句2,elseif (表,达,达式n),语句n,else,语,语句n+1,算法1:,……;,floati;//定义i表,示,示学生成绩,,,,,chargrade;//grade表示等,级,级,。,scanf(“%f”,//,输,输入学生成,绩,绩,if (i>=90),grade= 'A';,elseif (i>=70),grade='B';,elseif (i>=60),grade='C';,elseif (i>=0),grade='D';,putchar(grade);//输出,该,该生成绩等,级,级 也,可,可用 pr

22、intf(,“,“%c/n,”,”,grade);,90~100分,A,70~90分,B,60~70分,C,0~60分,D,例3.3,给,给某班学,生,生的一次考,试,试成绩分等,级,级. 90,分,分以上的为A,70分,到,到90分之,间,间的为B,60分到70分之间的,为,为C,60,分,分以下的得D。,②Sample-3-3-1.c,算法2:,……;,floati;//定义i表,示,示学生成绩,,,,,chargrade;//grade表示等,级,级,。,scanf(“%f”,//,输,输入学生成,绩,绩,if (i<60),grade= ‘D';,elseif (i<70),grade

23、=‘C';,elseif (i<90),grade=‘B';,else,grade=‘A';,putchar(grade);//输出该,生,生成绩等级,也,也可,以,以用 printf(,“,“%c/n,”,”,grade);,0~60分,D,60~70分,C,70~90分,B,90~100分,A,例3.3,给,给某班学,生,生的一次考,试,试成绩分等,级,级. 90,分,分以上的为A,70分,到,到90分之,间,间的为B,60分到70分之间的,为,为C,60,分,分以下的得D。,例:小灵通,服,服务语音提,示,示内部程序,处,处理流程:,话费查询请,按,按1,小灵,通,通充值请按,2,2,挂

24、失请,按,按3。,……;,printf(“话费,查,查询请按1,,,,小灵通充,值,值请按2,,挂,挂失请按3,”,”);,scanf(“%d”,,if (i==1),{  ..,.,.//话费,查,查询处理,},elseif (i==2),{,.,...,/,//小灵通,充,充值处理,},elseif (i==3),{,.,.../,/,/挂失处理,},else,{,.,.../,/,/输入错误,提,提示及处理,},多分支语句,的,的应用:,小灵通充值,服,服务内部处,理,理流程,printf(“话费,查,查询请按1,,,,小灵通充,值,值请按2,,挂,挂失请按3,”,”);,scanf(“

25、%d”,,if (i==2),/,//小灵,通,通充值处理,{,printf(“,为本机充值,按,按1,为其,他,他小灵通充,值,值按2,回,到,到上级指令,”);,scanf(“%d”,a);,if(a==1),{,.,...//,为,为本机充值,操,操作,},elseif(a==2),{,.,...//,为,为其他小灵,通,通充值操作,处,处理,},else,{,.,.../,/,/回到上一,级,级指令,},},...,,条件语句嵌,套,套的应用:,VC6 调,试,试程序方法,程序编写时,静,静态测试;,直接运行检,查,查结果是否,正,正确;,单步调试功,能,能 F10;,调试程序F5 ,

26、,退,退出调,试,试状态shift+F5;,设置断点(,取,取消断点)F9;,调试过程中,通过variable窗口查,看变量值,,3.3,条,条件选择语,句,句:if语,句,句,if条件选,择,择语句的三,种,种形式,双路分支,选,选择执行语,句,句 if,…,…else,…,…,单路分支选,择,择执行语句if,…,…,多路分支,选,选择执行语,句,句 if,…,… else if…else...,图3.7,多,多路分支if语句,if (,表,表达式1),语句1;,elseif(表达式2),语句2,elseif (表,达,达式n),语句n,else,语,语句n+1,算法1:,……;,fl

27、oati;//定义i表,示,示学生成绩,,,,,chargrade;//grade表示等,级,级,。,scanf(“%f”,//,输,输入学生成,绩,绩,if (i>=90),grade= 'A';,elseif (i>=70),grade='B';,elseif (i>=60),grade='C';,elseif (i>=0),grade='D';,putchar(grade);//输出,该,该生成绩等,级,级 也,可,可用 printf(,“,“%c/n,”,”,grade);,90~100分,A,70~90分,B,60~70分,C,0~60分,D,例3.3,给,给某班学,生,生的一次

28、考,试,试成绩分等,级,级. 90,分,分以上的为A,70分,到,到90分之,间,间的为B,60分到70分之间的,为,为C,60,分,分以下的得D。,②Sample-3-3-1.c,例3.4,求,求一元二次,方,方程 ax,2,+bx+c=0的根,,实,实系数a,b,c从终,端,端输入。,算法分析:,先判断输入,的,的系数是否,满,满足方程是,二,二次方程,,判,判断a是否,为,为0。接着,应,应考虑两个,不,不同实根,,相,相同实根,,和,和复根三种,情,情况讨论:,当b,2,-4ac>0时,有两,个,个不同的实,根,根,其中x1,x2为,其,其两个根;,当b,2,-4ac=0时,有两,个,

29、个相同的实,根,根,其中x1,x2为,其,其两个等根,;,;,当b,2,-4ac<0时,有两,个,个共轭的虚,根,根;我们把,虚,虚根的实部x3和虚部x4分成两,部,部份分开计,算,算,后来再,组,组合在一起,。,。,程序如下,:,#include ,#include ,voidmain(),{,floata,b,c;floatx1,x2;float x3,x4;,printf("input numbers: a,b ,c:");,scanf("%f%f%f",,if (a ==0),{,if (b==0),printf("error input\n");,else,printf(“x=%.2

30、f\n",-c/b);,//return;,},elseif(b*b>4*a*c),,{,x1=(-b+sqrt(b*b-4*a*c))/(2*a);,x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("x1=%.2f,x2=%.2f\n",x1,x2);,},elseif,(b*b==4*a*c),{,x1=x2=(-b+sqrt(b*b-4*a*c))/(2*a);,printf("x1=x2=%.2f\n",x1);,},else,{,x3=-b/(2*a);,x4=sqrt(4*a*c-b*b)/(2*a);,printf("x1=%.2f+%.2fi\n",x

31、3,x4);,printf("x2=%.2f-%.2fi\n",x3,x4);,},},,③,Sample-3-4.c,该程,序,序的,运,运行,结,结果,(,(分5种,情,情况,),)为,:,:,(1,),)014//输入,x=-4//输出,(2,),)004//输入,theinputiserror//输出,(3,),)143//输入,x1=-1.00,x2=-3.00//输出,(4,),)144//输入,x1=x2=-2.00//输出,(5,),)124//输入,x1=-1+1.73i//输出,x2=-1-1.73i,if,多,多条,件,件分,支,支下,的,的流,程,程控,制,制,if,语

32、,语,句,句的,不,不足,条件,表,表达,式,式的,结,结果,只,只有,真,真或,假,假两,种,种结,果,果,由,一,一个,条,条件,语,语句,只,只能,提,提供,两,两个,分,分支,供,供选,择,择。,多重if,语,语句,可,可以,实,实现,多,多重,分,分支,,,,但程序,结,结构,显,显得,繁,繁琐,欠,清,清晰,执,行,行效,率,率也,比,比较,低,低。,图3.8switch语,句,句的,流,流程,控,控制,3.4switch多,分,分支,选,选择,语,语句,switch,分,分支,选,选择,语,语句,,,,它,可,可以,结,结构,清,清晰,地,地直,接,接表,达,达多,分,分支,选,

33、选择,,执,执行,效,效率,更,更高,。,switch(表,达,达式),{,case判断,值,值1:,语句,组,组1;,break;,case判断,值,值2:,语句,组,组2;,break;,case判断,值,值n:,语句,组,组n;,default:,语句,组,组n+1;,break;,},printf(“theend”);,使用switch,语,语句,注,注意,事,事项,,1.switch(),后,后面,圆,圆括,号,号中,的,的表,达,达式,要,要求,结,结果,是,是整,数,数,,各,各个case,判,判断,值,值要,求,求是,整,整形,常,常量;switch,语,语句,比,比较,表,表

34、达,式,式的,值,值与,某,某个case,后,后常,量,量值,相,相等,,,,则,从,从该case,后,后面,的,的第,一,一个,语,语句,开,开始,依,依次,执,执行,,2.,各,各个case,和,和及,其,其下,面,面的,语,语句,组,组的,顺,顺序,是,是任,意,意的,,,,但,各,各个case,后,后面,的,的判,断,断值,必,必须,是,是不,同,同值,default,后,后无,判,判断,值,值,,其,其功,能,能相,当,当与if,语,语句,中,中的else,。,。,,,switch,语,语句,形,形式,switch(表,达,达式),{case,判,判断,值,值1:,语句,组,组1;,

35、break;,case,判,判,断,断值2:,语句,组,组2;,break;,……,case,判,判,断,断值n-1:,case,判,判,断,断值n:,语句,组,组n;,default:,语句,组,组n+1;,break;,},printf(“theend”);,switch语句,使,使用注意,事,事项,,3. break,语,语句起着,退,退出switch-case结构的,作,作用,若,无,无此语句,,,,程序将,顺,顺序执行,下,下一个case语,句,句组。,,当表达式,的,的结果值,与,与所有的case,的,的判断值,都,都不一致,时,时,程序,才,才执行default部分,的,的语句组

36、,。,。default,部,部分不是,必,必须的。,,5.对于,表,表达式的,多,多个结果,值,值执行相,同,同语句组,时,时,程序,的,的形式是,多,多个case重叠,。,。,switch语句,形,形式,#include,voidmain( ),{floata,b,c;,intn;,printf(“,请,请输入两,数,数据:”);,scanf(“%f%f”,,printf(“,请,请选择运,算,算种类:1 加法,;,;2 减,法,法;3,乘,乘法;4,除,除法”);,scanf(“%d”,,switch (n),{,case1:c=a+b;break;,,case2:c=a-b;break;

37、,case3:c=a*b;break;,case4:if(b!=0) c=a/b;,elseprintf(,“,“data error”);,break;,default:printf(“,选,选择无效,”,”);,},printf(“,结,结果为:%.2f,”,”,c);,,},,例3.5.0,编,编程实现,:,:用户输,入,入两个数,据,据,选择,执,执行某种,四,四则运算,,,,输出结,果,果。,④,Sample 3-5-0.c,,#defineESC0x11b;,#defineF10x3b00//F1键的键,值,值为0x3b00,#defineF20x3c00,#defineF30x3

38、d00,#defineF40x3e00,#defineF50x3f00,#defineF60x4000,#include,#include,voidmain( ),{,unsignedint key_value;,key_value =bioskey(0);,switch (key_value),{,caseF1:F1功能处,理,理程序;,break;,,caseF2:F2功能处,理,理程序;,break;,caseF3:,caseF4:F3,F4,相,相同功能,处,处理程序;,break;,caseF5:F5功能处,理,理程序;,break;,caseF6:F6功能处,理,理程序;,bre

39、ak;,……,default:,默,默认处,理,理程序;,break;,},},,例3.5,编,编一,示,示意性的,菜,菜单处理,程,程序,,按,按下一功,能,能键,,执,执行响应,的,的功能处,理,理。,例3.6,分,分段函,数,数计算,,输,输入变量,数,数值x,,计,计算结果,。,。,注意:,面对问题,应按计,算,算机程序,设,设计的方,式,式来思考,对,对问题的,描,描述和解,决,决方案:,考,考虑变,量,量的定义(几个变,量,量,数据,类,类型),,流,流程,控,控制语句,的,的选用,,再,再编,程,程实现.,#include,void main( ),{,floatx,y;,pri

40、ntf("input thenumberx=");,scanf("%f",,if(x>=0 && x<2),y =x+1;,else if (x>=2&&x<4),y =2*x +2;,else if (x>=4&&x <6),y =3*x +3;,else if (x>=6 && x<8),y=4*x+4;,elseprintf("error in input data\n");,printf("y=,%.2f",y);,},该程序,的,的运行,结,结果为,:,:,1.00//输,入,入,2.00//,输,输出,,分析:,利,利用多,分,分支的if,语,语句形,式,式来编,写,写:,#inc

41、lude,voidmain(),{,floatx,y;,printf("inputthenumber x=");,scanf("%f",,switch((int)x),{,case 0:,case 1:,y =x+ 1;,break;,case 2:,case 3:,y =2* x+2;,break;,,case 4:,case 5:,y =3* x+3;,break;,case 6:,case 7:,y =4* x+4;,break;,default:,printf("errorinputdata\n");,},printf("y=%.2f ", y);,},,Sample3-6-2.cpp

42、,利用switch语,句,句同样,可,可以实,现,现上述,功,功能:,//输入学,生,生成绩,,,,判别,所,所属等,级,级Sample-3-3-2.c,#include,voidmain(),{,floatx,y;,printf("inputthenumber x=");,scanf("%f",,switch,( (int) x/2 ),{,case 0:,y =x+ 1;,break;,case 1:,y =2* x+2;,break;,,case 2:,y =3* x+3;,break;,case 3:,y =4* x+4;,break;,default:,printf("errorin

43、putdata\n");,break;,},printf("y=%.2f ", y);,},,更精巧,的,的程序:,3.5,循,循,环,环语句,3.5.1while,语,语句,3.5.2for语句,3.5.3do-while,语,语句,3.5.4循环语,句,句的嵌,套,套(多重循,环,环),循环控,制,制结构,是,是在条,件,件成立,时,时,反,复,复执行,循,循环体,内,内的程,序,序段.,C语言,中,中三种,循,循环流,程,程控制,语,语句:,3.5.1while,语,语句,while循,环,环语句,是,是首先,判,判断循,环,环执行,条,条件,,当,当其成,立,立(非0值),时,时,,则

44、反复,执,执行循,环,环体内,的,的程序,段,段.,图3.9 while语句,的,的流程,及,及语句,形,形式,while循,环,环的表,达,达式是,循,循环进,行,行的条,件,件。当,条,条件表,达,达式值,为,为真(,非,非零),时,时,执,行,行循环,体,体,为,假,假(等,于,于0),则,则循环,结,结束;,while(x),等,等价于while(x!=0);while(!x),等,等价于while(x == 0);,条件表达,式,式中一般,包,包括一个,能,能够改变,表,表达式的,变,变量,这,个,个变量称,为,为循环变,量,量。对于,循,循环变量,的,的初始化,应,应在while(

45、)语句,之,之前进行,。,。,3. 当,循,循环体不,需,需要实现,任,任何功能,时,时,可用,空,空语句作,为,为循环体,。,。while((ch=getchar())!=,’,’A’);,4. 循,环,环语句应,有,有出口。(通过循,环,环语句的,条,条件判断,或,或循环体,中,中break语句,退,退出循环)。,6. while,语,语句中条,件,件表达式,与,与if语,句,句中条件,表,表达式都,可,可以为各,种,种表达式,。,。,inti ,sum;,sum= 0;i= 1;,while (i <=100),{,sum= sum +i ;,i ++;,},While语句使,用,用注意

46、事,项,项,例3.7,用,用 while循,环,环语句编,写,写一求和,程,程序,#include,voidmain(),{,inti ,sum;,sum= 0;i= 1;,while (i <=100),{,sum= sum +i ;,i ++;,},printf("sum= %d\n", sum);,},该程序的,运,运行结果,为,为:,sum=5050,要求1..n之和?,奇数之和?,十位数为3的数之,和,和?,并输出这,些,些数?,⑤,Sample-3-7,3.5.3 do-while语,句,句,图3.11 do-while语,句,句的流程,与,与语句形,式,式,先执行一,次,次循

47、环体,再,再判断是,否,否循环下,一,一次!,例: inti=0;,do,{,printf("%3d", i++);,}while(i<5);,,输出:012 34,while语句:,inti=0;,while(i<5);,{,printf("%3d", i++);,},输出:012 34,当inti=6; while语,句,句do..while语句,分,分别输出:?,(1)do-while循,环,环类似于while循环,,区,区别在于循环条件,判,判断位置,不,不同。do-while是在执,行,行一次循,环,环体结束,时,时判断是,否,否继续循,环,环。,(2)能,用,用while循环,

48、和,和for,循,循环描述,的,的程序大多数情,况,况下都能用do-while循,环,环描述,,比,比如上,节,节中的例,子,子也可用do-while,来,来编写。,(3)能,用,用do-while循环描,述,述的程序,一,一定能用while和for循环描,述,述。,do-while,语,语句与while,的,的比较,例3.9,利,利用do-while,循,循环编写,求,求和程序,#include,voidmain(),{,inti=1, sum =0;,do,{,sum= sum +i ;,i ++;,} while( i<=100);,printf("sum= %d\n", sum);,}

49、,该程序的,运,运行结果,为,为:,sum=5050,3.5.2 for语句,图3.10 for语句,的,的流程和,语,语句形式,使用说明:,for( i=0 ;i<100; i+=5),{,printf("%d\n",i);,},等价于:,i=0;,for(; i<100;),{,printf("%d\n",i);,i+=5;,},for循,环,环通常用,于,于描述循,环,环范围比,较,较明确。,循,循环变量,变,变化满足,“,“初值,、,、终值、,步,步长”型,变,变化规律.,如:for( i=0 ;i<100;i+=5),printf("%d\n",i);,,for循,环,环中表达,

50、式,式1和表,达,达式3还,可,可包含逗,号,号运算表,达,达式。,如:for (a=0,b=10; a<100;a+=b),printf("%d\n",a);,,for(,表,表达式1; 表达,式,式2;,表,表达式3) 语句,注,注意事项:,表达式1,,,,表达式2和表达,式,式3可以,全,全部或部,分,分省掉,,但,但是分号,不,不能省,当省略,表,表达式2,时,时相当于,永,永真条件,(,(条件永,远,远成立),,,,即for(;;)等同于for( ;1 ;),此种情,况,况下,只,有,有通过循,环,环体中使,用,用break或return语句来,控,控制循环,的,的结束。,当for,

51、语,语句省略,了,了表达式1和3时,等效于while(表达,式,式2)循,环,环.,(2),循,循环体也,可,可以为空,语,语句,起,延,延迟一段,时,时间的作,用,用;如:,for(inti=0; i<10000 ;i++);或for(int i=0 ;i<10000; i++){ },(3)在for,循,循环体,内,内一般不,要,要操作循,环,环变量,以防for 循,环,环失控。,(4)注意for语句循,环,环量取值,区,区间以及条件,表,表达式2,的,的终止循,环,环条件。,⑤Sample-3-7,如下2种写,法,法功能是相,同,同的,都是,循,循环N次,,。,for (x=0,a=0

52、; x

53、idmain( ),{,inti ;,int sum ;,,for (i = 1, sum = 0; i<= 100; i++),{,sum += i ;,},printf("sum = %d \n", sum);,},i=1,sum=0;,for (; i<= 100; ),{,sum += i ;,i++;,},i=1,sum=0;,while( i<= 100 ),{,sum += i ;,i++;,},⑤ Sample-3-7.cpp修改得,循环体部分,又,又包含循环,结,结构时,就,形,形成了多重,循,循环.,例如while循环语,句,句如下:,while(条件表达,式,式),{,

54、循环体部分;,},多重循环:,while(条件表达,式,式1),{……,while(条件表达,式,式2),{,循环体部分2;,},},3.5.4,循,循环语,句,句的嵌套-,多,多重循环,循环语句组,合,合形成二重,循,循环的几种,形,形式:,(1) while(,…,…)(2) while(),{{,…,…,…,while(… )for( …; …;,…,…),{{,…,…,…,}},…,…,…,}},,(3) for( …; …;,…,…)(4)for(,…,… ; …; …),{{,…,…,…,for (,…,… ; …; …)while(…),{{,…,…,…,}},…,…,…,}},

55、编写多重循,环,环时应注意,以,以下问题:,(1) 对,于,于多重循环,,,,特别要注意循环有,关,关的变量赋,初,初值的位置:只需执行一,次,次的赋初值,操,操作应放在,最,最外层循环,开,开始执行之,前,前。,(2)内外循环变,量,量不应该同,名,名,否则将造,成,成循环控制,混,混乱,导致,死,死循环或计,算,算结果错误,。,。,(3)正确地区分,内,内外循环体,在内循环,执,执行的所有,语,语句必须用{ }括起,来,来组成复合,语,语句作为内,层,层循环体;,属,属于外循环,的,的语句应放,在,在内层循环,体,体之外,外,循,循环之中。,(4) 不,应,应该在循环,中,中执行的操,作,

56、作应放在最,外,外层循环进,入,入之前或最,外,外层循环结,束,束后。,例:输出下,列,列由 *,组,组成的图,案,案,*******************,*******************,*******************,*******************,*******************,⑥Sample 3-10-0,例3.10,编,编程显示输,出,出如下所示,的,的三角形的,程,程序,*,***,*****,*******,*********,***********,算法分析:,输出6行’*’,循环i=1~6,逐行输出字,符,符个数2*i-1,字符前空格,数,

57、数6-i,#include ,voidmain(),{,int i,j;,for (i =0 ; i< 6; i ++)//共输出n行*字符,{,printf(“\n,”,”);//回车,换,换行,for(j= 0; j <5-i; j ++)//每行先,输,输出n-i,个,个空格,{ printf(" ");,},for(j=0 ;j<2*i+1 ;j++)//输出2i+1个字,符,符*,{ printf("*");,},},},⑦,Sample3-10,例3.11,打,打印九九乘,法,法表,page77,⑧Sample3-11,3.6,辅,辅助控制语,句,句,3.6.1break语句

58、,3.6.2continue,语,语句,goto,语,语句和标号,return语句,,3.6.1break语句,break,语,语句用于循,环,环语句和switch,语,语句。可使流程跳,出,出switch结构或,循,循环体,执行后面,的,的语句。,,break,语,语句只能跳出一,层,层循环。,break,语,语句不能用,于,于循环体语,句,句和switch 语,句,句之外的任,何,何其它语句,。,。,,,for(int i=1;i<=5;i++),{,sum2=0,for(int j=i;j32767),break;,},sum

59、1+=sum2;,if(sum2>32767||sum1>32767),break;,},3.6.2continue,语,语句,结束本次循,环,环,即跳过,循,循环体后续,的,的语句,进,行,行下一次的,循,循环判定。,continue语句,和,和break语句的区,别,别是:,continue语句,只,只结束本次,循,循环体后续,语,语句的执行,,,,而不是跳,出,出循环。break语,句,句则是结束,整,整个循环语,句,句,执行程,序,序中后续语,句,句。,for(inti=1;i<=5;i++),{sum2++;,sum1+=sum2;,if(sum2>32767),break;,},p

60、rintf(,“,“End”);,,for(inti=1;i<=5;i++),{sum2++;,sum1+=sum2;,if(sum2>32767),{sum2=0;continue;},},printf(,“,“End”);,例3.13,把,把0,-,-100,之,之间,能,能被5整,除,除的,数,数输,出,出。,,voidmain(),{,intn;,for(n=0;n<=100;n++)//n从,数,数字0到100逐,个,个进,行,行测,试,试,{,if(n%5!=0)//,是,是否,能,能整,除,除,continue;//,不,不能,整,整除,则,则执,行,行下,一,一次,循,循环,p

61、rintf("%d\t",n);,},printf(“\ntheend");,},if(n%5==0),printf("%d\t",n);,⑨Sample3-13,例3.14.,输,输入,一,一个,圆,圆的,半,半径,,,,输,出,出圆,的,的面,积,积。,要求:,(1).,允,允许,反,反复,的,的输,入,入半,径,径,,计,计算,并,并显,示,示圆,的,的面,积,积,,直,直到,输,输入,的,的半,径,径是0时,为,为止;,(2).,对,对输,入,入的,半,半径,进,进行,检,检查,,,,若,发,发现,是,是负,数,数将,提,提示,操,操作,者,者重,新,新输,入,入。,#include,

62、#include,#definePI3.1415926,voidmain(),{,doubler,area;,while(1),{,printf("inputtheradius:");,scanf("%lf",,if(fabs(r)<1e-5),break;,elseif(r<0),{printf("theinputiserror\n");,continue;,},,area=PI*r*r;,printf("theareais:%lf\n",area);,},},该程,序,序的,运,运行,结,结果,为,为:,inputtheradius:-1//输入,theinputiserror,input

63、theradius:1,3.1415926,inputtheradius:0//,退出,整,整个do-while,循,循环。,,,Sample3-14.cpp,goto,语,语,句,句和,标,标号,page81,程序,中,中使,用,用goto语,句,句时,要,要求,和,和标,号,号配,合,合,,一,一般,形,形式,:,:,goto,标,标,号,号;,……,…,……,标号:,语,语句;,goto,语,语,句,句的,功,功能,是,是,,把,把程,序,序控,制,制转,移,移到,标,标号,指,指定,的,的语,句,句处,。,。既,执,执行goto,语,语句,之,之后,,,,程,序,序从,指,指定,标,标

64、号,处,处的,语,语句,继,继续,执,执行,。,。,,注,意,意:goto,语,语,句,句,常,常,用,用,的,的,用,用,法,法,是,是,用,用,它,它,退,退,出,出,多,多,重,重,循,循,环,环。,用goto,语,语,句,句,设,设,计,计,程,程,序,序,存,存,在,在,的,的,问,问,题,题,:,:,1.,破,破,坏,坏,结,结,构,构,化,化,设,设,计,计,风,风,格,格,。,。,2.goto,语,语,句,句,经,经,常,常,带,带,来,来,错,错,误,误,或,或,隐,隐,患,患,。,。,所,以,以,不,不,提,提,倡,倡,使,使,用,用goto,语,语,句,句,3.7,典,典

65、,型,型,问,问,题,题,程,程,序,序,设,设,计,计,举,举,例,例,程,序,序,设,设,计,计,宗,宗,旨,旨,:,:,结,结,构,构,化,化,程,程,序,序,设,设,计,计,是,是,通,通,过,过,三,三,种,种,流,流,程,程,控,控,制,制,语,语,句,句,的,的,组,组,合,合,来,来,解,解,决,决,将,将,各,各,种,种,问,问,题,题.,算,算,法,法,设,设,计,计,灵,灵,活,活,多,多,样,样,,,,,要,要,熟,熟,练,练,掌,掌,握,握,和,和,应,应,用,用C,语,语,言,言,规,规,则,则,。,。,具,体,体,编,编,程,程,思,思,路,路,:,:分,析,析,

66、问,问,题,题,中,中,涉,涉,及,及,的,的,数,数,据,据,信,信,息,息,,设,设,计,计,数,数,据,据,输,输,入,入,接,接,口,口,定,定,义,义,所,所,需,需,变,变,量,量,;,;再,设,设,计,计,数,数,据,据,处,处,理,理,程,程,序,序,流,流,程,程,,选,选,择,择,合,合,适,适,的,的,语,语,句,句,书,书,写,写,程,程,序,序,;,;,最,最,后,后输,出,出,处,处,理,理,结,结,果,果,.,.,定,义,义,变,变,量,量,时,时,注,注,意,意,数,数,据,据,类,类,型,型,取,取,值,值,范,范,围,围,,,,,运,运,算,算,处,处,理,理,过,过,程,程,也,也,要,要,注,注,意,意,数,数,据,据,类,类,型,型,的,的,自,自,动,动,转,转,换,换,等,等,规,规,则,则,,,,算,法,法,设,设,计,计,要,要,灵,灵,活,活,运,运,用,用,三,三,种,种,流,流,程,程,结,结,构,构,的,的,组,组,合,合,、,、,嵌,嵌,套,套,。,。,[一]典型问,题,题1-(求数列,和,和),例3.15,1,3,5,7,9

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!