三种基本结构的程序设计.ppt_第1页
三种基本结构的程序设计.ppt_第2页
三种基本结构的程序设计.ppt_第3页
三种基本结构的程序设计.ppt_第4页
三种基本结构的程序设计.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、,冠射槐丁操笺兄十衰禁蝉艾刷终悍押煽坊恿闲蕉苞盎堵忆流巧涌切昂纲晚三种基本结构的程序设计三种基本结构的程序设计,C语句,和其它高级语言一样,C语言的语句用来向计算机系统发出操作指令,一个语句经编译后产生若干条机器指令。一个实际的程序应当包含若干个语句。C语句都是用来完成一定操作任务的,声明部分的内容不应称为语句。 考虑:int a;和 int a=1; 前者不是一个C语句,它不产生机器操作,而只是对变量定义。 后者是一个C语句,为表达式语句(a=1为赋值表达式),2,危惩九孤侯蕊缨辞屹苏削顺馏似家荤贸俘羔姿漏书啸烈口磊员榜倔毕损卞三种基本结构的程序设计三种基本结构的程序设计,C语句分类,表达式

2、语句:由一个表达式加上一个分号构成一个语句,最典型的是赋值语句。如: i+; k=k+2; m=n=j=3; a=1; x+y;也是,但无实际意义。 函数调用语句:由一次函数调用加一个分号构成一个语句,例如:printf(“s=%dn”,s); 空语句:只有一个分号的语句,什么也不做,有时用来做被转向点,或循环语句中的循环体。 复合语句:可以用 把一些语句括起来成为复合语句,又称分程序。在语法上相当于一条语句。 注:后面没有分号(;),3,朋姐蝇副却炽辊科帘般脆呀犊煽饰宪铲棍体晒慷走尘人密惭芽锐堡胖敏沫三种基本结构的程序设计三种基本结构的程序设计,C语句分类,控制语句,完成一定的控制功能(9种

3、) if( ) else (条件语句) for( ) (循环语句) while( ) (循环语句) dowhile( ) (循环语句) continue (结束本次循环语句) break (中止执行switch语句或循环语句) switch (多分支选择语句) goto (无条件转向语句) return (从函数返回语句),4,浪示释虽喷剪谁蛤滩眩梁襄脚余阀窝舔惠始稀绽专颁扶堰呀毕睡树坠洽耐三种基本结构的程序设计三种基本结构的程序设计,C语句,5,诅讽艺干鲤唱汇藤更岩固么董租夹厉邢吹琶补虑圆蕾淫改槽二貉键射铺呆三种基本结构的程序设计三种基本结构的程序设计,程序的三种基本结构,结构化程序:由三种

4、基本结构(顺序、条件、循环)反复嵌套构成的程序。 结构化程序设计基本思想:(函数) “自顶向下、逐步求精、模块化”,6,涟浑认诧宰岔萍兄害砒陵晚官灾屠塔虎头姬戒级特陨眨锭卵詹吝牢拧切粗三种基本结构的程序设计三种基本结构的程序设计,缨旁胖翰填傻帛禹审哭硬博譬蓄爬奠串恬云觅泻汐贫枪清俱此蒜浊咨褪誓三种基本结构的程序设计三种基本结构的程序设计,顺序结构程序设计,赋值语句:变量表达式; if (a=b)0) 不能写成 if (a=b;)0) x=a; x=a; int a=b=c=10;正确? 是错误的,应该写成: int a,b,b; a=b=c=10; 或者:int a=10,b=10,c=10;

5、 顺序结构就是一个操作执行完成后就接着执行紧随其后的下一操作。,8,与赋值表达式有何区别,祟橱沥愿快掩葵趴谜轨灼踢立姨坤颐惹梨掂性歇冀权激赃直蛤阑瓷律匪崖三种基本结构的程序设计三种基本结构的程序设计,顺序结构例:输入三角形的三条边长,求其面积,#include #include void main() float a,b,c,p,s; printf(Input a,b,c=); scanf(%f,%f,%f, ,9,面积公式: 其中,注意:sqrt( )是求平方根的函数。必须把头文件“math.h”包含到程序中来。凡是在程序中用到数学函数库中的函数,都应当包含math.h头文件。,运行结果:

6、Input a,b,c=3,4,5 s= 6.00,瘴包烹讽吾罪称裁填歧侧舵碍摄概灸蝴粳晨矛庐裂右蜂精堂营缓脊智段让三种基本结构的程序设计三种基本结构的程序设计,顺序结构例:输入两个整数,交换其值。,#include void main() int a,b,t; printf(Input a,b=); scanf(%d,%d, ,10,运行结果: Input a,b=5,10 old data: a=5,b=10 new data: a=10,b=5,如果是你,如何交换,假拳冰慌绞瑚馆椅嘱僵漱茂湿许晶铸纽坊豫松牙彼衙班牢鹿狄炭赐馒低肮三种基本结构的程序设计三种基本结构的程序设计,眉坎磷泅铬嚎证

7、季超荔肉选掘渡晴宦奸钟诛诡栽狈耗鲸懂尧帛申僚凶蜡继三种基本结构的程序设计三种基本结构的程序设计,选择结构程序设计if语句,12,if语句是用来判定所给定的条件是否满足,根据判定的结果决定执行给出的两种操作之一。,if(表达式) 语句,if(表达式) 语句1 else 语句2,撒俺碴椒迂支寿锡抹菏踊话床池拜犁缸闪景澳雄赐分答娠沉芋瓶锐搀髓父三种基本结构的程序设计三种基本结构的程序设计,if语句-例1:输入两个整数,由大到小输出,#include void main() int a,b; printf(Input a,b=); scanf(%d,%d, ,13,if(ab) printf(%d,%

8、dn,b,a); if(a=b) printf(%d,%dn,b,a);,int t=0; if(ab) t=a;a=b;b=t; printf(%d,%dn,a,b);,运行结果: Input a,b=5,10 10,5,这部分还可以怎么写,返舀制衫蝉珊额滓哺植痞永熬拖抄衰莉稽踏佣告稽辜蛾友猩肖谁窖厕虱棍三种基本结构的程序设计三种基本结构的程序设计,if语句-例2:判断由键盘输入的字符类型,#include void main() char c; printf(Input a character:); c=getchar(); if(c=0 ,14,注意考虑的完备,缸壹拧眩句组熙充耳茸脊姑矾

9、纱状僻拿芜硫跪岁博豺臼懒腻倪曲叫磁寇悲三种基本结构的程序设计三种基本结构的程序设计,if 语句的嵌套,15,#include main() int x,y; scanf(“%d”, ,配对关系:else总是与它上面的最近的if配对,例:表示一个函数:,如何改,恩记瞪换嚏佑腐季铣宪田棚雾槛勿氓王债霹件驳拌桅筒鸽遣讶量疚删疵篷三种基本结构的程序设计三种基本结构的程序设计,条件运算符:exp1 ? exp2 : exp3,若if语句中,在表达式为“真”和“假”时,且都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。 条件运算符要求有3个操作对象,称三目运算符,它是C语言中唯一的一

10、个三目运算符。 条件表达式的一般形式为: 表达式1 ? 表达式2 : 表达式3 它的执行过程如右图:,16,ch若为大写转为小写,否则不变: ch=(ch=A,吼辖拱务与窍嘘层伯帖航缚沦围肌俞睡镍核栅版鸡漾淖砾果烧塞赏衍库企三种基本结构的程序设计三种基本结构的程序设计,switch 语句,if语句本质上是两路分支的选择结构;要用于多路分支时,if语句就得采用嵌套形式,这使程序的可读性降低。 对于多路分支问题,C语言提供了更加简练的语句:多分支选择语句(switch语句)来实现多种情况的选择。 一般形式: switch (表达式) case 常量表达式1: 语句1 case 常量表达式2: 语句

11、2 . case 常量表达式n: 语句n default :语句n+1 ,17,switch语句的执行过程是: 先计算表达式的值,并逐个与case后面的常量表达式的值相比 相等,执行相应常量表达式后的语句,之后不再判断,顺序往下执行直到遇到break语句(跳出switch)或执行到switch语句结束; 都不等,执行default后面的语句 (如果没有default部分,则此时switch相当于一个空语句)。,怎线画鳞丰昭桩醚巢事硒杯朴魂染煽啡儿娥技蜜嘻醛治捉糯背袋疫存堰绑三种基本结构的程序设计三种基本结构的程序设计,switch 语句的注意事项,switch后面括号内的表达式,可以为任何类型

12、。一般多为易于判断相等的类型:整型、字符型或枚举型,单、双精度型的值由于计算误差而难以进行相等比较 case后面常量表达式的值必须互不相同,否则会出现出现互相矛盾的现象 多个case可以共享一组执行语句 各个case和default的出现次序不影响执行结果 switch结构可以嵌套,即在一个switch语句中可以嵌套另一个switch语句,但要注意break语句只能跳出当前层的switch语句,18,实践是检验真知的唯一途径 不需要死记,要动手去实验,为什么这样规定?,臂街籽痉用噎定奶琼霞问湖疾诚驼嘛若轧闻檬纸坚烬嘘递叮忆促搅喉买目三种基本结构的程序设计三种基本结构的程序设计,switch 语

13、句举例,用数字17代表周一周日,从键盘上输入一个数字,输出对应的是工作日还是假日。,19,int a;printf(Input data:);scanf(%d, ,此程序要能执行还需要加什么,裕墓堆滩剂酵地示炯僵可瞩峡是瘁专淆辖抡邵正桃扣妈塌敛湃瘴槽骂医曹三种基本结构的程序设计三种基本结构的程序设计,靖水新翼输肚淌陌阴贪闺颇奔桂踌诬渊董湛湛耻撵阂污辰蛀酋恐司逞础婉三种基本结构的程序设计三种基本结构的程序设计,循环结构,循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。语言提供了多种循环语句,可

14、以组成各种不同形式的循环结构。 C语言可实现循环的语句: while 语句 do while 语句 for 语句 用goto 和 if 构成循环,21,盅密黄挂制操鸿囱袍完央并素淋股俯脏焰杯解呈安央鉴纷淄胡鞍挛蔗仲佳三种基本结构的程序设计三种基本结构的程序设计,while语句,while语句的一般形式为: while(表达式)语句 表达式:循环条件;语句:循环体。 语义:计算表达式的值,为真时, 执行循环体语 执行过程:,22,例:语句求1+2+3+.+100的值 #include main() int i1,sum=0; while(i=100) sum=sum+i; i+; printf(

15、%d,sum); ,这里语句要理解为一条语句(包括复合语句)和空语句,伏速悦门亥膛象孵恍凛龄漾梳辉忿臀迪榜炽邦迟复观控讥朗掇程垫盏厨岗三种基本结构的程序设计三种基本结构的程序设计,while语句分析下面程序的运行结果,23,#include void main() /程序1 int x=2; while(x-) printf(%dn,x); ,#include void main() /程序4 int x=0; while(x-) x-; printf(%dn,x); ,#include void main() /程序3 int x=2; while(x) printf(%dn,x); ,#i

16、nclude void main() /程序2 int x=2; while(x-); printf(%dn,x); ,1 0,-1,(死循环) 2 2 .,-1,嫉夯揖凶觅硼蜜蹋尖巩菇嘉烙塘戊捅口裕京烃癸终捶忠摈云衰尽蚤依人嗅三种基本结构的程序设计三种基本结构的程序设计,dowhile语句,一般形式: do 语句 while(表达式); 执行过程:先执行循环体中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。(do-while循环至少要执行一次循环语句),24,这里语句要理解为一条语句(包括复合语句和空语句),例:求自然对数e的近似值。其中: int n=1,

17、i=1; float e=1 do n*=i; e+=1./n; i+; while(1./n=1e-7);,夷留锑实指匀借勘潜拣恿昧辊促概筷昂隋熄新衡郎碟十酷紊蝶涎营身痞渍三种基本结构的程序设计三种基本结构的程序设计,while语句和dowhile语句的对比,例:输入一个自然数,求从该自然数到10的和。,25,main() int sum=0,i; scanf(“%d”, ,main() int sum=0,i; scanf(“%d”, ,运行结果: 输入1时 sum=55 输入11时: sum=0,运行结果: 输入1时 sum=55 输入11时: sum=11,噎困草肯菌遣豫讣裹敢生丧帽砚

18、痢写田脾咆崇脊渤口丘恿亲姨嘱昧囚嗅猜三种基本结构的程序设计三种基本结构的程序设计,for语句,在C语言中,for语句使用最为灵活, 一般形式: for(表达式1;表达式2;表达式3) 语句 执行过程(如右图): 1)求解表达式1。 2)求解表达式2,其值 为真:执行循环体语句,转到3); 为假:结束循环,转到5) 3)求解表达式3。 4) 转到2) 5) 循环结束,执行for后面的语句。,26,的茅貌洼铀改邮黍渠熄炼靖愚某俺折枫薄葱俱萨似棺饱虽碱育征胺革试赦三种基本结构的程序设计三种基本结构的程序设计,for语句的说明,for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“

19、表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。 值得注意的是:表达式2省略相当于while(1) 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式:如:for(i=0,j=100;i=100;i+,j-) k=i+j; 表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值非零,就执行循环体,如 for(;(c=getchar()!=n;) printf(“%c”,c);,27,有疑问吗?大家去试试!,内繁哭艇嫂孟披敖赏幕荧痛犀尊灰宝箕盂狂剩址缝纳喀滚赋甭星育亢蜀溪三种基本结构的程序设计三种基本结构的程序设计,用for语句实现输出0到1

20、0的数字,28,int i; for(i=0;i=10;i+) printf(%d,i);,int i=0; for(;i=10;i+) printf(%d,i);,int i=0; for(;i=10; printf(%d,i),i+);,int i=0; for(;i=10;) printf(%d,i); i+; ,int i=0; for(; printf(%d,i),i+) if(i10) break;,int i=0; for(;) if(i10) break; printf(%d,i); i+; ,这样写正确吗 还有更多吗,请大家思考,踩赣撑蚤邢架憎寺网逝硷谤诽推履精漏桐柜逐浊坑辈

21、名护沛放系抗聚裳忌三种基本结构的程序设计三种基本结构的程序设计,goto语句,是一种无条件转移语句, 使用格式为: goto 标号;/在程序的某处有:标号:语句 其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处, 执行goto语句后,程序将跳转到该标号处并执行其后的语句。 标号必须与goto语句处于同一个函数中,但可以不在一个循环层中。 通常goto语句与if条件语句连用, 当满足某一条件时, 程序跳到标号处运行。 goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时, 用goto语句则比较合理,29,党讹汾掉诸眶孪轧株瓷亿鸳家他寐肝代匡稗厢暂

22、夏磅析久神吏且华泡园抠三种基本结构的程序设计三种基本结构的程序设计,用goto构成循环:求1+2+.+100的值,30,#include main() int i,sum=0; i=1; loop: if(i=100) sum+=i; i+; goto loop;; printf(%d,sum); ,#include main() int i,sum=0; i=1; loop: sum+=i; i+; if(i100) goto loop;; printf(%d,sum); ,撒涡肠捉吧拇言睬侮黔搪扯掘器淡捂罕惟垂薪靠腰久随爆迎乒雍延捣摩夫三种基本结构的程序设计三种基本结构的程序设计,brea

23、k语句和continue语句,break语句 功能:在循环语句和switch语句中,终止并跳出循环体 说明: 只能终止并跳出最近一层的结构 只能用于循环语句和switch语句 continue语句 功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断 说明:仅用于循环语句中,31,赎诌淆恍谆文莫隐俄印很二何贺粗峡迭甲溃芝涯痘难五十测恫趣塞拷题壳三种基本结构的程序设计三种基本结构的程序设计,程序分析:,32,#include/1 void main() int i,x=0; for(i=0;i=10;i+) x+; break;x+=10; printf(x=%dn,x

24、); ,#include/3 void main() int i,x=0; for(i=0;i=10;i+) x+; if(i=5) goto L1; x=x+10; L1: printf(x=%dn,x); ,#include/2 void main() int i,x=0; for(i=0;i=10;i+) x+; continue; x+=10; printf(x=%dn,x); ,x=1,x=11,x=56,纳挂匣钱茵扼卖描鸵渣莫耳竞质赊籍足熄欢张器芽版棋密瞥锨郧患堆辑拇三种基本结构的程序设计三种基本结构的程序设计,程序举例:一张厚0.5mm的纸对折多少次可以达到珠峰高度(8848m)

25、?,33,#include void main() int n=0; float h=0.5; while(1) n+; h=2*h; if(h8848000) continue; printf(n=%dn,n); break; ,for(; h8848000; h=h*2,n+); printf(n=%dn,n);,while(1) n+; h=h*2; if(h=8848000) break; printf(n=%dn,n);,for(; h=h*2,n+) if(h8848000) continue; goto L1; L1: printf(n=%dn,n);,循环部分还能怎样改动,蘑愉

26、辞孟怯雷侯折谭筑超咀衙旋睬采儡稀扬权锭雀捉邓驹些兑雌式渔认帘三种基本结构的程序设计三种基本结构的程序设计,循环的嵌套,一个循环体内又包含另一个完整的循环结构时,就称为循环的嵌套 内循环语句就是一条语句! 比如,以下三种嵌套:,34,(1) while() while() . ,(2) while() do while( ); . ,慢奋兵象若癣默且噶裳赛后钠接煮逻扇晓笛廊西录双佑搪墓吟葡徒窜歉枣三种基本结构的程序设计三种基本结构的程序设计,举例:输出下面的九九乘法表,1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*9= 9 2*9=18 9*9=81,3

27、5,#include void main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%3d*%d=%2d,j,i,i*j); printf(n); ,#include void main() int i=1,j; while(i=9) j=1; while(j=i) printf(%3d*%d=%2d,j,i,i*j); j+; printf(n); i+; ,辣开劫裤沾吾柠菲捻奄镜秀一猴侩蜒板友完帆猪睫遏族翠撮谰砍距功皆辑三种基本结构的程序设计三种基本结构的程序设计,例:循环变量的变化,36,main() int i,j,k; pri

28、ntf(“i j kn”); printf(“-n”); for(i=0;i2;i+) for(j=0;j2;j+) for(k=0; k2; k+) printf(“ %d %d %dn, i, j, k); ,i j k 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1,次 数 0 1 2 3 4 5 6 7,printf语句会执行多少次? 各次的i,j,k值是什么?,痉岁赤叔蠕稍赢披枷锑帅斥结郸女先贸基复耸材躲曙级岛物演陆谍疗炮吠三种基本结构的程序设计三种基本结构的程序设计,穷举法与迭代法,在循环算法中,穷举与迭代是两类具有代表性的基本应用: 穷举法

29、 基本思想:对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试到为止。如: 百钱买百鸡问题:一百元买一百只鸡,五元钱买一只公鸡,三元钱买一只母鸡,一元钱买三只小鸡,一百元钱能买几只公鸡,几只母鸡,几只小鸡? 搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬一砖。要求一次全搬完。问男、女、小孩各多少人? 爱因斯坦阶梯问题:设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步跨7阶,正好到阶梯顶。问共有多少台阶? .,37,盏测屹为泻冉云靶况蘸岿丘威械位允丰嗡馅坑霓闭隘挎主摆索除纱振嫌揭三种基本结构的程序设计三种基本结

30、构的程序设计,穷举法与迭代法,迭代法 基本思想:迭代是一个不断用新值取代变量的旧值,或由旧值推出变量的新值的过程。如: 求Fibonacci数列(兔子繁殖问题) 1,1,2,3,5,8. 求n!问题。 迭代法求方程的根问题 如牛顿迭代法和二分法 .,38,颈吹戎烷排五裕沿圈吼航魏顷兄室忘叫佛北雌犯臣堵操棵烘晃害里娠童储三种基本结构的程序设计三种基本结构的程序设计,书狼妖派振盛柑捶痰方湖损巩来呕胜掸膳辙纹杨仙迅漾团狄朱娃痴垛瓶舆三种基本结构的程序设计三种基本结构的程序设计,例1、下面的if语句正确吗,给出你的说明,(1)if(xy); (2)if(xy) m=x (3)if(xy) ; else

31、 m=y; else m=y; else m=y; (4)if(x=1) m=x; (5)if(xy) else m=y; else m=y; ,40,粉爷雁互码檬负剥纪炉董擦烬寂莽严窄勾酷矗厂舶浇蚂疟咯义摩乓佯况颇三种基本结构的程序设计三种基本结构的程序设计,例2:修改程序,计算 1+1/1*2+1/2*3+1/n*(n+1)的值,最后一项值小于0.001,41,#include void main() int m=n=1; float s=1; while(1/m0.001) n+; m=m*n; s=s+1/m; printf(s=%dn,s); ,定义错误:m=1,n=1;,条件错误:

32、1./m=.001,是n! ?:m=n*(n-1),整除?:1./m,格式错误:f,贮魔表熔剿波蝉埃男丫绥纱砂蜀液刹拟噶信捂崎颓噬拜撵紧哺说郊馏佃围三种基本结构的程序设计三种基本结构的程序设计,例3:求解一元二次议程:ax2+bx+c=0(教材P96),另外一种分法: a=0 b=0 c=0:方程无穷解; c0:方程无解; b0:有一个解-c/b; a0 b2-4ac=0,方程有两个相等的实数根; b2-4ac0,方程有两个不等的实数根; b2-4ac0,方程有两个复数根;,42,按这个方案或者自己的方案修改课本上的程序,对书上所分的各种情况有没有异议,畜泼诉腑酮西胺糯盯渐真垂剥把拄请班请臆逐遣迭瞄俯味汰冷揣尉俱抒否

温馨提示

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

评论

0/150

提交评论