C程序的流程设计_第1页
C程序的流程设计_第2页
C程序的流程设计_第3页
C程序的流程设计_第4页
C程序的流程设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C语言程序设计电子教案 PAGE 26第三章 C程序的流程设计一、教学的目的与要求掌握顺序、选择、循环三类程序流程控制语句,以及转移语句,能够正确使用它们编程。二、重点与与难点:if语句中中的条件件表达式式,iff语句中中if-elsse的匹匹配关系系,iff语句的的嵌套;swiitchh语句的的控制流流程,sswittch语语句的嵌嵌套;三三种循环环语句的的格式和和功能,循循环嵌套套的使用用;转移移语句的的使用。三、教学内内容第一节 算法1、算法的的概念为解决某一一个问题题而采取取的方法法和步骤骤,就称称为算法法。2、算法的的性质 = 1 * GB3 有穷性:一个算算法应包包含有限限的操作

2、作步骤 = 2 * GB3 一个初始始:此动动作序列列只有一一个初始始动作 = 3 * GB3 确定性:算法中中的每一一个步骤骤都应当当是确定定性的,仅仅有一个个后继动动作。 = 4 * GB3 有一个或或多个输输出:序序列终止止表示问问题得到到解答或或问题没没有解答答,没有有输出的的算法是是没有意意义的。第二节 选择型型程序设设计1、if 语句的的形式 = 1 * GB3 iff(条件件表达式式) 语句句 = 2 * GB3 iff(条件件表达式式) 语句句1 eelsee 语语句 2 注意意: = 1 * GB3 if语句句中的条条件表达达式一般般为逻辑辑表达式式或关系系表达式式,但也也可

3、以是是任意的的数值类类型(包包括整型型、实型型、字符符型、指指针类型型),例例如下列列语句也也是合法法的。 if(aa) pprinntf(“%dd” ,a); = 2 * GB3 在if语语句中,分分号是语语句的结结束标志志。 = 3 * GB3 在if和和elsse后面面可以只只含一个个内嵌的的操作语语句,也也可以有有多个操操作语句句,此时时用花括括号将几几个语句句括起来来成为一一个复合合语句。例1:以下下不正确确的iff语句形形式是( )。A)if(xyy&xx!=yy);B)if(x=y) x+=y;C)if(x!=y) sccanff(“%d”,&x) ellse sscannf(“

4、%d”,&y);D)if(xy)z=x;xx=y;y=zz; 答案案:x,y,zz的值分分别是:20 300 330 详解解:在此此语句中中,条件件xyy为假,所所以只执执行x=y;yy=z;两条语语句。例3、以下下不正确确的语句句是( )A)if(xyy);B)if(x=yy)&(x!=0) xx+=yy;C)if(x!=y) scaanf(“%dd”,&x);D)if(xyy)xx+;y+;答案:D详解:分号号是语句句结束的的标志,y+的末尾无分号,所以y+不是合法的语句。2、if 的嵌套套 iif(条条件1) iif(条条件2) 语句11 eelsee 语句22 eelsee if(条条

5、件3) 语句33 eelsee 语句44例4:以下下程序的的输出结结果是( )main( )int aa=1000,xx=100,y=20,ok11=5,ok22=0;if(xy)if(y!=100)if (!okk1)a=1;else if(ok22) a=110; priintff(“%dnn”,aa); 答案:1000详解:把110、20、5、0分别给给变量xx、y、ook1、ook2赋赋值,执执行条件件语句后后a值没没有改变变,所以以a值仍仍是原值值1000。3、swiitchh结构switcch语句句是多分分支选择择语句,其其形式如如下:switcch(表表达式)case 常量表表达

6、式11:语句句1case 常量表表达式22:语句句2defauult:语句n+1注意:1、swiitchh后面括括弧内的的“表达式式”,可以以是整型型表达式式或字符符型表达达式,也也可以枚枚举型数数据。2、当表达达式的值值与某一一个caase后后面的常常量表达达式的值值相等时时,就执执行此ccasee后面的的语句,若若所有的的casse中的的常量表表达式的的值都没没有与表表达式的的值匹配配的,就就执行ddefaaultt后面的的语句。3、每一个个casse的常常量表达达式的值值必须互互不相同同,否则则就会出出现互相相矛盾的的现象。4、执行完完一个ccasee后面的的语句后后,流程程控制转转移到

7、下下一个ccasee继续执执行,直直到遇到到breeak语语句或执执行完为为止。5、deffaullt可以以放在ccasee语句的的后面,也也可以放放在caase语语句的前前面。例5:运输输公司对对用户计计算运费费,距离离越远,每每公里运运费越低低。设每每公里每每吨货物物的基本本运费为为p,货物物重为ww,距离离为s,折扣为为d,则总总运费ff计算公公式为ff=p*w*ss(1-d),编编写程序序。公里里数s与与折扣率率d的标标准如下下:(此此程序可可用iffeelsee来完成成,也可可以用sswittch来来完成)。s2500km d=0250ss5000 dd=0.05500ss10000

8、 dd=0.07551000s220000 dd=0.12000s330000 dd=0.153000s d=0.22 mainn()int ss;floatt p,w,dd,f;printtf(“请输入入每公里里每吨货货物的基基本运费费”);scanff(“%f”,&p);printtf(“请输入入货物重重”);scanff(“%f”,&w);printtf(“请输入入公里数数”);scanff(“%f”,&s);switcch(intt)(ss/2550) case 0: d=00; brreakk; casse 11: d=00.055; bbreaak; casee 2: casse

9、33: d=0.0075; breeak; casse 44: casse 55:case 6: casse 77: d=00.1; bbreaak; casse 88: casse 99:case 10: casse 111: d=0.115; breeak; deffaullt: d=0.22; f=pp*w*s(11-d); priintff(“基本运运费是:%f”,f);详解:1、多个ccasee可共用用一组执执行语句句,必须须写成如如下的形形式:case 4: casse 55:case 6: casse 77: d=00.1; bbreaak;case后后面只能能有一个个常量,把把

10、上式改改写成ccasee 4,5,66,7: dd=0.1; bbreaak;的的形式是是错误的的。2、swiitchh后面括括弧内的的“表达式式”必须是是整型表表达式或或字符型型表达式式,也可可以是枚枚举型数数据,对对于swwithh来说,关关键是把把原始数数据转换换为易表表达的形形式。例6:请读读以程序序写出程程序的输输出结果果。#inclludeemain( ) int xx=1,y=00,a=0,bb=0; swwitcch(xx) casse 11: sswittch(y) case 0: aa+;breeak;case 1: bb+;breeak; casse 22: aa+;b+

11、;brreakk; prrinttf(“aa=%dd,b=%d”,a,bb);答案:a=2,bb=1详解:此程程序是sswittch的的嵌套结结构,在在此程序序中brreakk跳出内内层swwitcch结构构,接着着执行外外层swwitcch的casse 22后的语语句。例7:写出出下面程程序的运运行结果果是( )main()int ii;for(ii=1;i=5;ii+) swiitchh(i%5) case 0: priintff(“*”); brreakk; caase 1: priintff(“#”); brreakk; deefauult: prrinttf(“n”); caase

12、2: priintff(“&”); 答案:#& & &*详解:deefauult可可放在ccasee语句的的前面,也也可以放放在caase语语句的后后面,当当i%55不等于于0,11,2时时,将执执行deefauult后后的语句句priintff(“n”);执执行完成成后没有有breeak,将将继续执执行caase 2后的的语句pprinntf(“&”);第三节 循环型型程序设设计1、whiile语语句whilee语句用用来实现现”当型”循环结结构,其其一般形形式如下下:whilee(条件件表达式式) 循循环体语语句例8:设有有程序段段: innt kk=100; whhilee(k=0) k

13、=k-11; 循循环体执执行( )次。 答案案:0答案解析:在此程程序的wwhille结构构中,条条件表达达式k=0的结结果永远远为0即即为假,所所以循环环执行的的次数为为0。例9:下面面程序段段的运行行结果是是( )x=y=00; whhilee(x3) breeak; 循环执执行( )次次答案:4答案解析:whiile结结构中的的条件表表达式pprinntf(“*”)的值为为输出数数据的个个数,在在此例中中,prrinttf(“*”)的的结果为为1,即为为真。2、do-whiile语语句do-whhilee语句的的特点是是先执行行循环体体,然后后判断循循环条件件是否成成立,其其一般形形式为

14、:do循环体语句句whille(条条件表达达式); 例11、若若有如下下语句 innt xx=3; doo prrinttf(“%dnn”,xx-=22); whilee(x);则上面程序序段输出出结果是是( )。答案:1 例12、以以下程序序段循环环执行几几次。x=-1;do x=xx*x; whhilee(!xx);答案:1例13、下下面程序序的运行行结果是是( )main( )int yy=100;doy; wwhille(y);printtf(“%dnn”,yy-);答案:0 3、forr语句C语言中的的forr语句使使用最为为灵活,不不仅可以以用于循循环次数数已经确确定的情情况,而而

15、且可以以用于循循环次数数不确定定而只给给出循环环结束条条件的情情况,它它完全可可以代替替whiile语语句,其其一般形形式为:for(表表达式11;表达达式2;表达式式2) 语句句说明: = 1 * GB3 for语语句一般般形式中中的“表达式式1”可以省省略,此此时应ffor语语句之前前给循环环变量赋赋初值。注注意省略略表达式式1时,其其后的分分号不能能省略。 = 2 * GB3 如果表达达式2省省略,即即不判断断循环条条件,循循环无终终止地进进行下去去。 = 3 * GB3 表达式33也可以以省略,但但此时程程序设计计者应另另外设法法保证循循环正常常结束。 = 4 * GB3 可以省略略表

16、达式式1和表表达式33,只有有表达式式2,即即只给循循环条件件,在这这种情况况下,完完全等同同于whhilee语句。 = 5 * GB3 3个表达达式都可可省略,如如:foor( ; ; ) 语句,相相当于wwhille(11) 语语句,即即不设初初值,不不判断条条件(认认为表达达式2为为真值),循循环变量量不增值值。无终终止地执执行循环环体。 = 6 * GB3 表达式11可以是是设置循循环变量量初值的的赋值表表达式,也也可以是是与循环环变量无无关的其其他表达达式。ffor(summ=0;i=1000;i+) ssum=summ+i; = 7 * GB3 表达式一一般是关关系表达达式(如如i

17、=1100)或或逻辑表表达式(如如abb & x+y;x=ii+) i=x;B)forr(;x+=i)C)whiile(1)x+;D)forr(i=10;i) summ+=ii;答案:A例16、执执行语句句forr( i=11 ; i+4 ; ); 后变变量i的的值是( )答案:4例17、下下面程序序段的功功能是计计算10000!的末尾尾含有多多少个零零。请填填空。for(kk=0,i=55;i=10000;i+=5)m=i;whilee( )k+;m=mm/5;答案:m%5!=04、breeak与与conntinnue在breaak语句句可以使使流程跳跳出swwitcch结构构,继续续执行s

18、swittch语语句下面面的一个个语句。实实际上,bbreaak语句句还可以以用来从从循环体体内跳出出循环体体,即提提高结束束循环,接接着执行行循环下下面的语语句。bbreaak语句句的一般般形式为为:brreakk;contiinuee语句只只结束本本次循环环,而不不是终止止整个循循环的执执行。cconttinuue语句句的一般般形式为为:coontiinuee;例18、下下列程序序的运行行结果是是( )。 maiin( ) iint i,jj,x=0; foor(ii=0;i22;i+) x+; forr(j=0;jj=33;j+) iif(jj%2) coontiinuee; xx+;

19、x+; prinntf(“x=%dn”,x);答案:例19、下下面程序序的运行行结果是是( )main( ) intt k=0;ccharr c=A; do swiitchh(c+) caase A:k+;bbreaak; caase B:k; caase C:k+=2;breeak; caase D:kk=k%2;cconttinuue; caase E:k=k*110;bbreaak; deefauult:k=kk/3; k+;whille(cc=11e-66;i+) t=(-1)*t*ii; ss=s+1/tt;printtf(“%lf”,s);例24、有有一分数数序列:2/11,3/2

20、,55/3,88/5,113/66,211/133,.求出这个数数列的前前20项项之和main() intt s=0, f1=1,ff2=22; forr(I=1;II=220;II+) s=s+ff2/ff1; f22=f11+f22; f11=f22-f11; priintff(“%d”,s);例25、打打印九九九表main( )int i,jj; for(ii=1;i=9;ii+) for(jj=1;j=9;jj+) priintff(“%2dd*%22d=%2d”,i,j,ii*j); prrinttf(“n”);例26、打打印出下下列图形形 main( )int ii,j;for(i

21、i=1;i=5;ii+) for(jj=1;j=5+ffabss(i-3);j+) priintff(“ ”);for(jj=1;j=5-22*faabs(i-33);jj+) pprinntf(“”);printtf(“n”); 例27、打打印出下下列图形形 例28、兔兔子繁殖殖问题main( ) int i,ff1,ff2,ff3; for(i=33;i=122;i+) f3=f11+f22;f1=f22;f2=f33;printtf(“%d”,f3);例29、求求最大公公约数、最最小公倍倍数。main( )int r,uu,v,m,nn;scanff(“%d,%d”,&m,&n);m=u

22、;nn=v;if(uv) r=u;uu=v;v=rr;whilee(u!=0)r=u%v;uu=v;v=rr;printtf(“最大公约数是:%d,最小公倍数是”,v,m*n/v);例30、ssn=a+aa+aaaa+aaaa,从从键盘输输入a及n后,求求sn方法一:main()int n,aa;long s;scnaff(“%d%dd”,&n,&a);for(ii=1;i=n;ii+) s=s*110+ii*a; priintff(“%ld”,s); 方法二:main()int n,aa;long s,tt=0;scnaff(“%d%dd”,&n,&a);for(ii=1;i=n;ii+)

23、t=t*110+aas=s+tt; priintff(“%ld”,s); 例31、给给出一个个不多于于5位的的正整数数,要求求求出它它是几位位数分别打打印出每每一位数数逆序打打印此数数据。main( )longg a; int i=00;s=0;printtf(“它的每一位数:”);Whilee(a!=0) ii=i+1; x=a%10; a=a/10; s=s*10+x; prinntf(“%dd ”,x);printtf(“n”);printtf(“它是%d位数n”,i);printtf(“它的逆序是%dn”,s); 例32、输输出11000之间每每位数的的乘积大大于每位位数的和和的数 m

24、aain() iint n,kk=1,s=00,m; foor(nn=1;ns) priintff(“%d”,n);例33、猴猴子吃桃桃问题,猴猴子第一一天摘下下若干桃桃子,当当即吃了了一半,还还不过瘾瘾又多吃吃了一个个,第二二天又将将剩下的的桃子吃吃掉一半半,又多多吃了一一个,以以后每天天都吃前前一天剩剩下的半半多一个个,到第第10天天,再吃吃桃时只只剩下一一个桃子子,求第第一天共共摘下多多少了桃桃。 maain() iint i,ss=1; ffor(i=99;i=1;i) s=2*ss+1;printtf(“第一天共摘下%d个桃子”,s);例34、准准备客票票:某铁铁路线上上共有110个

25、车车站,问问需要准准备几种种车票。main()int i,jj,s=0; for(I=11;I=9;I+) forr(j=I+11;j=100;j+) ss=s+1; prinntf(“需要要准备%d”,2*ss); 例例35、有10220个西西瓜,第第一天卖卖一半多多两个,以以后每天天卖剩下下的一半半多两个个,问几几天以后后能卖完完。 mmainn( ) innt dday=0,ss=10020; whiile(s=0) ss=s/2-22; dday+; priintff(“%d”,dayy);例36、从从三个红红球、五五个白球球、六个个黑球中中任意取取出八个个球,且且其中必必须有白白球,输输出所有有可能的的方案。main()int redd,whhitee,bllackk; for(whiite=1;wwhitte=5;wwhitte+) forr(reed=00;reed=3;rred+) ffor(blaack=0;bblacck=11e-66) x3=(x11+x22)/22; if(ff(x33)*ff(x22)00) x22=x33;else x11=x33;例38、牛牛

温馨提示

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

评论

0/150

提交评论