资源描述
华中科技大学信息学院C语言程序设计,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第1、2章回顾,C程序结构:,C程序由main函数和若干个其他子函数(标准函数和自定义函数等)构成。函数包括函数头和函数体,C程序语句以分号作为结束标志。,语法单位(单词):,关键字、标识符、分隔符、常量、变量、运算符,。,数据类型的规定以及表达式运算规则。,输入输出函数getchar,putchar,scanf,printf的使用。,第3章 程序,和,和流程控制,3.1 C,语,语言程序的版,式,式及语句,3.2 结,构,构化程序设计,和,和流程控制,3.3 if语句,3.4 switch多,分,分支选择语句,3.5 循,环,环控制,3.6 辅,助,助控制语句,3.7 典,型,型程序编写方,法,法举例,3.8 小,结,结,C语言流程控,制,制语句,3.1 C,语,语言程序的版,式,式及语句,3.1.1C语言程序,的,的版式,3.1.2C语言的语,句,句,例3.1/* 求二整,数,数之和的程序*/,#include /预处理,void main( )/函数定义,int a,b;/变量说明,int sum;,scanf(%d%d,/ 数据输,入,入,sum =a + b;/执行部分,printf(sum=%d,sum);/信息输出,该程序的运行,结,结果为:,78/输入,sum=15,3.1.1C语言程序,的,的版式特征,程序设计,主要任务,输入,处理,输出,编写C语言程,序,序一般应包含,如,如下几个部分,(1),注释部分,:格式为*注释内容*,或/,注,注释内容;,在,在函数的最上,端,端,一般都应,有,有一段注释信,息,息,主要说明,函,函数的功能,,输,输入、输出及,其,其限制;如是,商,商品软件还应,包,包含版权信息,,,,在程序的其,他,他部分也可加,注,注释。编程者,要,要养成一边编,程,程序、一边加,注,注释的习惯。,一,一般长段的注,释,释用*注,释,释内容*形,式,式,短段的注,释,释用/注,释,释内容形式,。,。,(2),预处理块、,全,全局变量说,明,明等,。(参见后,面,面章节),(3),函数定义部,分,分,,包括函数,类,类型,函数,名,名及参数表,,,,由于只有,一,一个函数故,取,取名main(),由,于,于无返回值,故,故类型为void,无,参,参数输入时,,,,main,(,()内参数,表,表为空。,(4),变量说明部,分,分,,对所用的,变,变量进行说,明,明;,(5),数据输入部,分,分,,对要使用,的,的变量赋初,值,值,可直接,或,或间接输入,,,,有些是在,第,第(4)部,分,分完成(即,变,变量直接初,始,始化);,(6),执行部分,,它是整个,程,程序的核心,,,,一般是对,程,程序算法用,结,结构化程序,设,设计方法进,行,行描述,然,后,后将其转化,成,成对应的C,语,语言语句;,(7),信息输出部,分,分,,根据要求,输,输出所求的,信,信息或返回,结,结果;有些,是,是在第(6,),)部分一边,执,执行一边输,出,出。,如上述程序,的,的执行部分,采,采用函数调,用,用则上述程,序,序应为,例3.2/* 求,二,二整数之和,的,的程序 */,#include /预处理,int add(int x,int y);/函数声,明,明,voidmain()/函数定,义,义,int a,b;/变量说,明,明,int sum;,scanf(%d%d,/数据输,入,入,sum =add(a, b);/执行部,分,分,printf(sum=%d,sum);/信息输,出,出,/*求和函,数,数,输入参,数,数为二整数,,,,返回值为,其,其和*/,int add(int x,int y)/函数定,义,义,int z;/ 变量,说,说明,z = x+ y;/执行部,分,分,return z;/返回结,果,果,输入:,7 8,该程序的运,行,行结果为:,sum=15,语句是C语,言,言程序的基,本,本元素,语,句,句以分号为,结,结束标志。程序中的各,函,函数模块都,是,是由一定含,义,义的语句组,成,成的。,例:,charch =,H,;,/*分号为,语,语句结束标,志,志*/,int y= 7;,c=a+b;,printf( “hello!”),;,;,语句的分类,:,:,说明语句,用来对程序,中,中所使用的,各,各种类型变,量,量及属性进,行,行说明,按,其,其所起作用,有,有时也称为,定,定义语句。,执行语句,包括,表达式语句,、,、流程控制,语,语句、函数,调,调用语句等,完,完成一定运,算,算操作功能,的,的语句。,3.1.2C语言,的,的语句,说明语句,用来对程序,中,中所使用的,各,各种类型变,量,量进行说明,,,,也称为定,义,义语句。,说明语句的,格,格式: 数据类,型,型 变量,名,名列表;,例:inti, j;/说明了,两,两个整型变,量,量i和j,说明语句同,时,时也可以进,行,行初始化赋,值,值,如:,charch =,H,;,unsignedlongy =0x35847412,;,;,执行语句中,所,所使用的每,一,一个变量都,必,必须在此前,说,说明过。,2. 执行,语,语句。一般,包,包含四大类,:,:,表达式语句,(,(包括空语,句,句),复合语句,流程控制语,句,句,辅助控制语,句,句,(1)表达,式,式语句,任何一个表,达,达式加上一,个,个分号就是,一,一条表达式,语,语句;,/表达式,语,语句,通常,是,是赋值表达,式,式或函数调,用,用表达式。,例: c=a+b;,sum =add(a ,b),; /赋,值,值语句,printf( “hello!”),;,; /,函,函数调用语,句,句,;/空语,句,句,(2),复,复,合,合,语,语,句,句,将,若,若,干,干,语,语,句,句,用,用,一,一,对,对,大,大,括,括,号,号,括,括,起,起,来,来,就,就,构,构,成,成,了,了,复,复,合,合,语,语,句,句,。,。,复,复,合,合,语,语,句,句,的,的,一,一,般,般,格,格,式,式,为,为:,说,明,明,语,语,句,句;,可,执,执,行,行,语,语,句,句;,复,合,合,语,语,句,句,在,在,程,程,序,序,结,结,构,构,上,上,是,是,以,以,整,整,体,体,出,出,现,现,,,,,相,相,当,当,于,于,程,程,序,序,块,块,(,(,BLOCK,),),,,,,当,一,一,个,个,功,功,能,能,必,必,须,须,用,用,多,多,条,条,语,语,句,句,才,才,能,能,完,完,成,成,时,时,,,,,就,就,需,需,要,要,使,使,用,用,复,复,合,合,语,语,句,句,。,。,采,用,用,可,可,以,以,清,清,晰,晰,地,地,表,表,达,达,程,程,序,序,的,的,层,层,次,次,结,结,构,构,。,。,3.2,结,结,构,构,化,化,程,程,序,序,设,设,计,计,和,和,流,流,程,程,控,控,制,制,3.2.1结,构,构,化,化,程,程,序,序,设,设,计,计,3.2.2C,语,语,言,言,的,的,流,流,程,程,控,控,制,制,语,语,句,句,和,和,辅,辅,助,助,控,控,制,制,语,语,句,句,3.2.1,结,结,构,构,化,化,程,程,序,序,设,设,计,计,结,构,构,化,化,程,程,序,序,设,设,计,计,的,的,基,基,本,本,思,思,想,想,,,,任,何,何,程,程,序,序,都,都,可,可,以,以,用,用,三,三,种,种,基,基,本,本,结,结,构,构,表,表,示,示,:,:,顺,序,序,结,结,构,构,选,择,择,结,结,构,构,循,环,环,结,结,构,构,。,。,采,用,用,这,这,三,三,种,种,基,基,本,本,结,结,构,构,编,编,写,写,程,程,序,序,的,的,设,设,计,计,风,风,格,格,称,称,为,为,结,结,构,构,化,化,程,程,序,序,设,设,计,计,。,。,图,3.1,顺,序,序,结,结,构,构,示,示,意,意,图,图,顺,序,序,结,结,构,构:,按,按,语,语,句,句,顺,顺,序,序,依,依,次,次,执,执,行,行,。,。,/,通,过,过,语,语,句,句,书,书,写,写,顺,顺,序,序,自,自,然,然,实,实,现,现,inta,b;/,变,变,量,量,说,说,明,明,intsum;,scanf(,“,“%d%d,”,”,&a,&b,);/,输,输,入,入,sum=a+b;/,执,执,行,行,运,运,算,算,printf(,“,“sum=%d,”,”,sum);/,输,输出,选择,结,结构,根据,条,条件,选,选择,两,两支,或,或多,支,支程,序,序中,的,的一,支,支执,行,行。,图3.2,选择,结,结构,示,示意,图,图,由两,分,分支,选,选择,结,结构,可,可以,派,派生,出,出另,一,一种,基,基本,结,结构,,,,多,分,分支,选,选择,结,结构,。,。,/if,switch语,句,句,选,选择,运,运算,符,符实,现,现,if(a=0),printf(comein!);,else,printf(goaway!);,循环,结,结构,在判,断,断条,件,件成,立,立的,情,情况,下,下,,反,反复,执,执行,某,某个,程,程序,段,段。,图3.3,循环,结,结构,示,示意,图,图,/while,do while,以,以及,/ for语句,来,来实现,while (i =90&a=90&a=100)printf(,“,“A !);,elseprintf(“b!);,2if,单,单路分支,形,形式(选,择,择性执行,语,语该分支),scanf(“%f”,if (i60),printf(“,不,不,及格,”);,printf(“%f”,i);,在C语言,程,程序中,,还,还常用如,下,下书写形,式,式:,if(x)等价于if(x!=0),if(!x)等价于if(x=0),如变量x,为,为float或double实型变,量,量,则与0比较的if语句,建,建议如下,:,:,if (fabs(x)=90),grade=A ;,else if(i=70),grade=B ;,else if(i=60),grade=C ;,else if(i=0),grade=D ;,putchar(grade); /输出该,生,生成绩等级,也,也可用 printf(“%c/n”,grade);,90100分,A,7090分,B,6070分,C,060分,D,例3.3 给,某,某班学生的一次,考,考试成绩分等级. 90分以上,的,的为A,70分,到,到90分之间的,为,为B,60分到70分之间的为C,60分以下,的,的得D。,Sample-3-3-1.c,算法2:,;,floati;/,定,定义i表示学生,成,成绩,,char grade;/grade表示等级,。,scanf(“%f”, /输,入,入学生成绩,if (i60),grade=,D ;,else if(i70),grade=C ;,else if(i=90),grade=A ;,else if(i=70),grade=B ;,else if(i=60),grade=C ;,else if(i=0),grade=D ;,putchar(grade); /输出该,生,生成绩等级,也,也可用 printf(“%c/n”,grade);,90100分,A,7090分,B,6070分,C,060分,D,例3.3 给,某,某班学生的一次,考,考试成绩分等级. 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,-4ac0时,,,,有两个不同的,实,实根,其中x1,,,,x2为其两个,根,根;,当b,2,-4ac0时,,,,有两个相同的,实,实根,其中x1,,,,x2为其两个,等,等根;,当b,2,-4ac 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=%.2fn,x1,x2);,else if,( b*b = 4*a*c),x1 = x2= (-b+sqrt(b*b-4*a*c)/(2*a);,printf(x1=x2=%.2fn,x1);,else,x3 = -b/(2*a);,x4 = sqrt(4*a*c- b*b)/(2*a);,printf(x1=%.2f+%.2fin,x3,x4);,printf(x2=%.2f-%.2fin,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,语,语,句,句,的,的,不,不,足,足,条,件,件,表,表,达,达,式,式,的,的,结,结,果,果,只,只,有,有,真,真,或,或,假,假,两,两,种,种,结,结,果,果,,由,由,一,一,个,个,条,条,件,件,语,语,句,句,只,只,能,能,提,提,供,供,两,两,个,个,分,分,支,支,供,供,选,选,择,择,。,。,多,重,重if,语,语,句,句,可,可,以,以,实,实,现,现,多,多,重,重,分,分,支,支,,,,,但,但程,序,序,结,结,构,构,显,显,得,得,繁,繁,琐,琐,,欠,欠,清,清,晰,晰,执,执,行,行,效,效,率,率,也,也,比,比,较,较,低,低,。,。,图3.8switch,语,语,句,句,的,的,流,流,程,程,控,控,制,制,3.4switch,多,多,分,分,支,支,选,选,择,择,语,语,句,句,switch,分,分,支,支,选,选,择,择,语,语,句,句,,,,,它,它,可,可,以,以,结,结,构,构,清,清,晰,晰,地,地,直,直,接,接,表,表,达,达,多,多,分,分,支,支,选,选,择,择,执,执,行,行,效,效,率,率,更,更,高,高,。,switch(,表,表,达,达,式,式),case判,断,断,值,值1:,语,句,句,组,组1;,break;,case判,断,断,值,值2:,语,句,句,组,组2;,break;,case判,断,断,值,值n:,语,句,句,组,组n;,default:,语,句,句,组,组n+1;,break;,printf(,“,“theend,”,”);,使,用,用switch,语,语,句,句,注,注,意,意,事,事,项,项,1.switch(),后,后,面,面,圆,圆,括,括,号,号,中,中,的,的,表,表,达,达,式,式,要,要,求,求,结,结,果,果,是,是,整,整,数,数,,,,,各,各,个,个case,判,判,断,断,值,值,要,要,求,求,是,是,整,整,形,形,常,常,量,量;switch,语,语,句,句,比,比,较,较,表,表,达,达,式,式,的,的,值,值,与,与,某,某,个,个case,后,后,常,常,量,量,值,值,相,相,等,等,,,,,则,则,从,从,该,该case,后,后,面,面,的,的,第,第,一,一,个,个,语,语,句,句,开,开,始,始,依,依,次,次,执,执,行,行,2. 各个case和及其下,面,面的语句组的顺,序,序是任意的,但,各,各个case后,面,面的判断值必须,是,是不同值,default后无,判,判断值,其功能,相,相当与if语句,中,中的else,。,。,switch语,句,句形式,switch(,表,表达式), case,判,判断值1:,语句组1;,break;,case 判断,值,值2:,语句组2;,break;,case 判断,值,值 n-1:,case 判断,值,值 n:,语句组n;,default:,语句组n+1;,break;,printf(,“,“the end”);,switch语,句,句使用注意事项,3. break语句起着退出switch-case结构的,作,作用,若无此语,句,句,程序将顺序,执,执行下一个case语句组。,当表达式的结果,值,值与所有的case的判断值都,不,不一致时,程序,才,才执行default部分的语,句,句组。default部分不是,必,必须的。,5.对于表达式,的,的多个结果值执,行,行相同语句组时,程序的形式是,多,多个case重,叠,叠。,switch语,句,句形式,#include ,void main( ), float a,b,c;,int n;,printf(,“,“请输入两数据:”);,scanf(“%f%f”,printf(,“,“请选择运算种,类,类:1 加法;2 减法;3,乘,乘法;4 除法,”,”);,scanf(“%d”,switch(n),case 1:c=a+b; break;,case 2:c=a-b; break;,case 3:c=a*b;break;,case 4:if(b!=0) c=a/b;,else printf(“data error”);,break;,default:printf(,“,“选择无效”);,printf(“结,果,果为:%.2f”,c);,例3.5.0,编,编,程,程实现,:,:用户,输,输入两,个,个数据,,,,选择,执,执行某,种,种四则,运,运算,,输,输出结,果,果。,Sample3-5-0.c,#define ESC0x11b;,#defineF10x3b00/F1键的,键,键值为0x3b00,#defineF20x3c00,#defineF30x3d00,#defineF40x3e00,#defineF50x3f00,#defineF60x4000,#include,#include,void main( ),unsignedintkey_value;,key_value=bioskey(0);,switch(key_value),case F1:F1功能,处,处理程,序,序;,break;,case F2:F2功能,处,处理程,序,序;,break;,case F3:,case F4:F3,F4相同,功,功能处,理,理程序;,break;,case F5:F5功能,处,处理程,序,序;,break;,case F6:F6功能,处,处理程,序,序;,break;,default:,默,默认,处,处理程,序,序;,break;,例3.5,编,编一示,意,意性的,菜,菜单处,理,理程序,,,, 按,下,下一功,能,能键,,执,执行,响,响应的,功,功能处,理,理。,例3.6 分,段,段函数,计,计算,,输,输入变,量,量数值x,计,算,算结果,。,。,注意:,面对问,题,题,应,按,按计算,机,机程序,设,设计的,方,方式来,思,思考对,问,问题的,描,描述和,解,解决方,案,案:,考,考虑变,量,量的定,义,义(几,个,个变量,数据,类,类型),流,流程控,制,制语句,的,的选用,再,再编程,实,实现.,#include,void main( ),floatx,y;,printf(input thenumberx=);,scanf(%f,if(x=0 & x=2&x=4&x =6 &x8),y= 4*x +4;,elseprintf(error in input datan);,printf(y=,.2f,y);,该程序的运,行,行结果为:,1.00/输入,2.00/输,出,出,分析:利用,多,多分支的if 语句形,式,式来编写:,#include,voidmain(),floatx, y;,printf(inputthenumber x=);,scanf(%f, ,switch(int) x),case0:,case1:,y = x+ 1;,break;,case2:,case3:,y = 2* x+ 2;,break;,case4:,case5:,y = 3* x+ 3;,break;,case6:,case7:,y = 4* x+ 4;,break;,default:,printf(errorinput datan);,printf(y= %.2f ,y);,Sample3-6-2.cpp,利用switch语句,同,同样可以实,现,现上述功能:,/输入学生成,绩,绩,判别所,属,属等级Sample-3-3-2.c,#include,voidmain(),floatx, y;,printf(inputthenumber x=);,scanf(%f, ,switch,( (int) x/ 2 ),case0:,y = x+ 1;,break;,case1:,y = 2* x+ 2;,break;,case2:,y = 3* x+ 3;,break;,case3:,y = 4* x+ 4;,break;,default:,printf(errorinput datan);,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值),时,时,,则反复执行,循,循环体内的,程,程序段.,图3.9while,语,语句的流程,及,及语句形式,while,循,循环的表达,式,式是循环进,行,行的条件。,当,当条件表达,式,式值为真(,非,非零)时,,执,执行循环体,,,,为假(等,于,于0)则循,环,环结束;,while(x)等价,于,于while(x!=0);while(!x)等价于while(x = 0);,条件表达式,中,中一般包括,一,一个能够改,变,变表达式的,变,变量,这个,变,变量称为循,环,环变量。对,于,于循环变量,的,的初始化应,在,在while( )语,句,句之前进行,。,。,3. 当循,环,环体不需要,实,实现任何功,能,能时,可用,空,空语句作为,循,循环体。while(ch=getchar( )!=A) ;,4. 循环,语,语句应有出,口,口。(通过,循,循环语句的,条,条件判断或,循,循环体中break语,句,句退出循环)。,6. while语句,中,中条件表达,式,式与if语,句,句中条件表,达,达式都可以,为,为各种表达,式,式。,inti , sum;,sum =0;i = 1;,while( i= 100),sum =sum+ i ;,i +;,While,语,语句使用注,意,意事项,例3.7,用,用 while循,环,环语句编,写,写一求和,程,程序,#include,voidmain(),inti ,sum;,sum= 0;i= 1;,while (i =100),sum= sum +i ;,i +;,printf(sum= %dn, sum);,该程序的,运,运行结果,为,为:,sum=5050,要求1.n之和?,奇数之和?,十位数为3的数之,和,和?,并输出这,些,些数?,Sample-3-7,3.5.3 do-while语,句,句,图3.11 do-while语,句,句的流程,与,与语句形,式,式,先执行一,次,次循环体,再,再判断是,否,否循环下,一,一次!,例: inti=0;,do,printf(%3d, i+);,while(i5);,输出:012 34,while语句:,inti=0;,while(i5);,printf(%3d, i+);,输出:012 34,当inti=6; while语,句,句do.while语句,分,分别输出:?,(1)do-while循,环,环类似于while循环,,区,区别在于循环条件,判,判断位置,不,不同。do-while是在执,行,行一次循,环,环体结束,时,时判断是,否,否继续循,环,环。,(2)能,用,用while循环,和,和for,循,循环描述,的,的程序大多数情,况,况下都能用do-while循,环,环描述,比,比如上,节,节中的例,子,子也可用do-while,来,来编写。,(3)能,用,用do-while循环描,述,述的程序,一,一定能用while和for循环描,述,述。,do-while,语,语句与while,的,的比较,例3.9,利,利用dowhile,循,循环编写,求,求和程序,#include,voidmain(),inti=1, sum =0;,do,sum= sum +i ;,i +;, while( i=100);,printf(sum= %dn, sum);,该程序的,运,运行结果,为,为:,sum=5050,3.5.2 for语句,图3.10 for语句,的,的流程和,语,语句形式,使用说明:,for( i=0 ;i100; i+=5),printf(%dn,i);,等价于:,i=0;,for(; i100;),printf(%dn,i);,i+=5;,for循,环,环通常用,于,于描述循,环,环范围比,较,较明确。,循,循环变量,变,变化满足,“,“初值,、,、终值、,步,步长”型,变,变化规律.,如:for( i=0 ;i100;i+=5),printf(%dn,i);,for循,环,环中表达,式,式1和表,达,达式3还,可,可包含逗,号,号运算表,达,达式。,如:for (a=0,b=10; a100;a+=b),printf(%dn,a);,for(,表,表达式1; 表达,式,式2;,表,表达式3) 语句,注,注意事项:,表达式1,,,,表达式2和表达,式,式3可以,全,全部或部,分,分省掉,,但,但是分号,不,不能省,当省略,表,表达式2,时,时相当于,永,永真条件,(,(条件永,远,远成立),,,,即for(;)等同于for( ;1 ;),此种情,况,况下,只,有,有通过循,环,环体中使,用,用break或return语句来,控,控制循环,的,的结束。,当for,语,语句省略,了,了表达式1和3时,等效于while(表达,式,式2)循,环,环.,(2),循,循环体也,可,可以为空,语,语句,起,延,延迟一段,时,时间的作,用,用;如:,for(inti=0; i10000 ;i+);或for(int i=0 ;i10000; i+) ,(3)在for,循,循环体,内,内一般不,要,要操作循,环,环变量,以防for 循,环,环失控。,(4)注意for语句循,环,环量取值,区,区间以及条件,表,表达式2,的,的终止循,环,环条件。,Sample-3-7,如下2种,写,写法功能,是,是相同的,,,,都是循,环,环N次,。,for (x=0,a=0 ; xN ; x+),a+=x;,for (x=0,a=0 ; x=N-1 ;x+),a+=x;,示例(a) 循环,变,变量属于,半,半开半闭,区,区间示例(b) 循环,变,变量属于,闭,闭区间,for(x=1,a=0; x=N ;x+),a+=x;,循环语句,编,编程注意,:,:条件表,达,达式的初,始,始状态和,终,终止条件,,,,,在编写程,序,序时应仔,细,细推敲,验,验算程,序,序执行到,此,此处时各,有,有关参数,取,取值情况.,例3.8,我,我们,还,还是用上,一,一节的例,子,子,利用for循,环,环语句编,写,写程序求1到100 的和;,#include,voidmain(),inti ;,intsum;,for(i=1,sum=0;i=100;i+),sum+=i;,printf(sum=%dn,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(,条,条件,表,表达,式,式),循环,体,体部,分,分;,多重,循,循环:,while(,条,条件,表,表达,式,式1),while(,条,条件,表,表达,式,式2),循环,体,体部,分,分2;,3.5.4,循,循,环,环语,句,句的,嵌,嵌套-多,重,重循,环,环,循环,语,语句,组,组合,形,形成,二,二重,循,循环,的,的几,种,种形,式,式:,(1)while(,)(2)while(),while(,)for(,;,;,),(3)for(,;,;,)(4)for(,;,;,),for(;,;,)while(,),编写,多,多重,循,循环,时,时应,注,注意,以,以下,问,问题:,(1),对,对于,多,多重,循,循环,,,,特,别,别要注意,循,循环,有,有关,的,的变,量,量赋,初,初值,的,的位,置,置:只需,执,执行,一,一次,的,的赋,初,初值,操,操作,应,应放,在,在最,外,外层,循,循环,开,开始,执,执行,之,之前,。,。,(2)内外,循,循环,变,变量,不,不应,该,该同,名,名,否,则,则将,造,造成,循,循环,控,控制,混,混乱,,,,导,致,致死,循,循环,或,或计,算,算结,果,果错,误,误。,(3)正确,地,地区,分,分内,外,外循,环,环体,在,内,内循,环,环执,行,行的,所,所有,语,语句,必,必须,用,用,括,括起,来,来组,成,成复,合,合语,句,句作,为,为内,层,层循,环,环体;属,于,于外,循,循环,的,的语,句,句应,放,放在,内,内层,循,循环,体,体之,外,外,,外,外循,环,环之,中,中。,(4),不,不应,该,该在,循,循环,中,中执,行,行的,操,操作,应,应放,在,在最,外,外层,循,循环,进,进入,之,之前,或,或最,外,外层,循,循环,结,结束,后,后。,例:,输,输出,下,下列,由,由*,组,组,成,成的,图,图案,*,*,*,*,*,Sample3-10-0,例3.10编,程,程显,示,示输,出,出如,下,下所,示,示的,三,三角,形,形的,程,程序,*,*,*,*,*,*,算法,分,分析:,输出6行,*,循,循环i=16,逐,行,行,输,输,出,出,字,字,符,符,个,个,数,数2*i-1,字,符,符,前,前,空,空,格,格,数,数6-i,#include,voidmain(),inti,j;,for(i=0;i6;i+)/,共,共,输,输,出,出n,行,行*,字,字,符,符,printf(,“,“n,”,”);/,回,回,车,车,换,换,行,行,for(j=0;j5-i;j+)/,每,每,行,行,先,先,输,输,出,出n-i,个,个,空,空,格,格,printf();,for(j=0;j2*i+1;j+)/,输,输,出,出2i+1,个,个,字,字,符,符*,printf(*);,Sample3-10,例3.11,打,打,印,印,九,九,九,九,乘,乘,法,法,表,表,page77,Sample3-11,3.6,辅,辅,助,助,控,控,制,制,语,语,句,句,3.6.1break,语,语,句,句,3.6.2continue,语,语,句,句,goto,语,语,句,句,和,和,标,标,号,号,return,语,语,句,句,3.6.1break,语,语,句,句,break,语,语,句,句,用,用,于,于,循,循,环,环,语,语,句,句,和,和switch,语,语,句,句,。,。可,使,使,流,流,程,程,跳,跳,出,出switch,结,结,构,构,或,或,循,循,环,环,体,体,,执,执,行,行,后,后,面,面,的,的,语,语,句,句,。,。,break,语,语,句,句只,能,能,跳,跳,出,出,一,一,层,层,循,循,环,环。,break,语,语,句,句,不,不,能,能,用,用,于,于,循,循,环,环,体,体,语,语,句,句,和,和switch,语,语,句,句,之,之,外,外,的,的,任,任,何,何,其,其,它,它,语,语,句,句,。,。,for(inti=1;i=5;i+),sum2=0,for(intj=i;j32767),break;,sum1+=sum2;,if(sum232767|sum132767),break;,3.6.2continue,语,语句,结束本,次,次循环,,,,即跳,过,过循环,体,体后续,的,的语句,,,,进行,下,下一次,的,的循环,判,判定。,continue语,句,句和break语句,的,的区别,是,是:,continue语,句,句只结,束,束本次,循,循环体,后,后续语,句,句的执,行,行,而,不,不是跳,出,出循环,。,。break,语,语句则,是,是结束,整,整个循,环,环语句,,,,执行,程,程序中,后,后续语,句,句。,for(int i=1;i32767),break;,printf( “End”);,for(int i=1;i32767),sum2=0;continue;,printf( “End”);,例3.13,把,把0100,之,之间能,被,被5整,除,除的数,输,输出。,void main( ),intn;,for(n=0;n=100;n+)/n,从,从数字0到100逐,个,个进行,测,测试,if(n%5!=0)/是,否,否能整,除,除,continue;/不,能,能整除,则,则执行,下,下一次,循,循环,printf(%dt,n);,printf(“n theend);,if(n%5=0),printf(%dt,n);,Sample 3-13,例3.14.,输,输入一,个,个圆的,半,半径,,输,输出圆,的,的面积,。,。,要求:,(1).允许,反,反复的,输,输入半,径,径,计,算,算并显,示,示圆的,面,面积,,直,直到输,入,入的半,径,径是0,时,时为止;,(2).对输,入,入的半,径,径进行,检,检查,,若,若发现,是,是负数,将,将提示,操,操作者,重,重新输,入,入。,#include,#include,#definePI3.1415926,voidmain(),doubler,area;,while(1),printf(inputtheradius:);,scanf(%lf,if(fabs(r)1e-5),break;,elseif(r0),printf(theinputiserrorn);,continue;,area=PI*r*r;,printf(theareais:%lfn,area);,该程,序,序的,运,运行,结,结果,为,为:,inputtheradius:-1/输入,theinputiserror,inputtheradius:1,3.1415926,inputtheradius:0/,退出,整,整个do-while,循,循环。,Sample3-14.cpp,goto,语,语,句,句和,标,标号,page81,程序,中,中使,用,用goto语,句,句时,要,要求,和,和标,号,号配,合,合,,一,一般,形,形式,:,:,goto,标,标,号,号;,标号:,语,语句;,goto,语,语,句,句的,功,功能,是,是,,把,把程,序,序控,制,制转,移,移到,标,标号,指,指定,的,的语,句,句处,。,。既,执,执行goto,语,语句,之,之后,,,,程,序,序从,指,指定,标,标号,处,处的,语,语句,继,继续,执,执行,。,。,注意:goto,语,语句,常,常用,的,的用,法,法是,用,用它,退,退出,多,多重,循,循环。,用goto语,句,句设,计,计程,序,序存,在,在的,问,问题,:,:,1.,破,破,坏,坏结,构,构化,设,设计,风,风格,。,。,2.goto语,句,句经,常,常带,来,来错,误,误或,隐,隐患,。,。,所以,不,不提,倡,倡使,用,用goto语,句,句,3.7,典,典,型,型问,题,题程,序,序设,计,计举,例,例,程序,设,设计,宗,宗旨,:,:结,构,构化,程,程序,设,设计,是,是通,过,过三,种,种流,程,程控,制,制语,句,句的,组,组合,来,来解,决,决将,各,各种,问,问题.,算,算法,设,设计,灵,灵活,多,多样,,,,要,熟,熟练,掌,掌握,和,和应,用,用C,语,语言,规,规则,。,。,具体,编,编程,思,思路,:,:分析,问,问题,中,中涉,及,及的,数,数据,信,信息,设,计,计数,据,据输,入,入接,口,口定,义,义所,需,需变,量,量;再设,计,计数,据,据处,理,理程,序,序流,程,程,选,选,择,择合,适,适的,语,语句,书,书写,程,程序,;,;最,后,后输出,处,处理,结,结果,定义,变,变量,时,时注,意,意数,据,据类,型,型取,值,值范,围,围,,运,运算,处,处理,过,过程,也,也要,注,注意,数,数据,类,类型,的,的自,动,动转,换,换等,规,规则,,,,算法,设,设计,要,要灵,活,活运,用,用三,种,种流,程,程结,构,构的,组,组合,、,、嵌,套,套。,一典型,问,问题1-(求数,列,列和),例3.15,1,3,5,7,9.前,二,二十,项,项之,和,和。,算法,分,分析:,循环,求,求和,运,运算,规律:第1,项,项已,知,知,,第,第i+1,项,项=第i项+2,循环,条,条件:前20,项,项,适,适合,用,用for,语,语句,实,实现.,#include,voidmain(),inti , sum, t;,/sum代表,和,和, t代,表,表某项,sum= 0;,t= 1;,for (i=1 ;i=20 ; i+),sum += t;/累加,t +=2;/求下一,项,项,printf( sum =%d,sum);,该程序的运,行,行结果为:,sum =400,Sample 3-15,例3.16,求,求序列:,1!,2!,3!,4!,.,的,的前八项之,和,和.,算法分析:,循环求和运,算,算,数列项变化,规,规律:,第,第i+1,项,项 =第i,项,项 * (i+1);,循环条件:,适,适合采用for语句,8项,#include,voidmain(),inti;,longsum, t ;,/sum代表,和,和, t代,表,表某项,注,意,意数据类型,sum =0 ;t= 1 ;,for (i=1 ;i=8; i+),sum += t;/求,和,和,t *=(i+1);/求下一,项,项t=(i+1)!,printf( sum
展开阅读全文