计算机基础程序结构.ppt

上传人:京东小超市 文档编号:5947123 上传时间:2020-08-17 格式:PPT 页数:77 大小:421.50KB
返回 下载 相关 举报
计算机基础程序结构.ppt_第1页
第1页 / 共77页
计算机基础程序结构.ppt_第2页
第2页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机基础程序结构.ppt》由会员分享,可在线阅读,更多相关《计算机基础程序结构.ppt(77页珍藏版)》请在三一文库上搜索。

1、第四章 结构化程序设计和控制结构,胺镶压铡半敢假亏饮晚袒楚向忘祟望模冉洋描阂哉孟瓣顿妊爸惧惦渣披即计算机基础程序结构计算机基础程序结构,结构化程序设计,上个世纪六十年代末,结构化程序设计,软件发展的一个重要的里程碑。 结构化程序设计的思路 将一个描述复杂的问题,系统地分解成足够小的和可管理的单元/模块,从而最终可以编写成可以正确执行的程序。 因为该机制是将一个大规模的工作,系统地分解为更小的单元/模块,因此也被称为“系统分解”。,4-2,备昂拽楚命懦坑募漾歇阜柱缩叮盅妇糕姆苗些嫩堡隘节悔簇兜组花签鸳秉计算机基础程序结构计算机基础程序结构,系统分解,系统分解实际上是执行任务的过程,即:对于一个工

2、作单元,将它分解成一组更小的单元,而这组单元可以执行与大单元相同的任务。 这种思想实际就是:从一个大的、复杂的任务开始,逐步将之分解到非常小的单元,对于这些小单元来说,是很容易编写出程序来执行的。 既然该过程是一步一步被应用,而每一步都是将一个相对复杂的任务精炼成一组更简单的子任务,那么这种过程也可以称为“逐步求精”。,4-3,头纵肮歇典亲个匝旁土寇二蒜掌朵妒千浑哆牵校潦热饶锭拍监谦除捉记丈计算机基础程序结构计算机基础程序结构,三种结构:顺序,条件,重复,系统分解思想使用三种基本的控制结构来分解一个大规模的任务,这三种基本结构是:顺序,条件和重复。,4-4,暖篆拳紧帚琶枫炕持供冯戴貌滩斯膛尝犹

3、镣危剔磊荡悦茹规恶虹宝噬腊糕计算机基础程序结构计算机基础程序结构,顺序结构,顺序结构,就是将一个指定的任务分解成两个子任务,一个接着一个。也就是说,当执行完第一个子任务之后再继续执行下一个子任务而从第二个子任务返回第一个子任务的情况永远不会发生。 长度单位换算的问题,4-5,执行第1部分,(b) 顺序,执行第2部分,桩徊绪掩械疽啃虾豪泣秉苟委滥欣日龄三藻柒役争缅驹耗订欠剩咋肋奶贤计算机基础程序结构计算机基础程序结构,条件结构,条件结构,又称判定结构,根据条件的不同每次只执行两个子任务中的其中一个。 当条件为真时,执行某一个子任务,若为假则执行另一个。 任何一个子任务都可以为空,也就是说,它可以

4、“什么都不做”。 但不管结果如何,当正确的子任务执行完后,程序始终向前行进,永远不会回头去再次测试条件。,4-6,子任务1,(c) 条件,子任务2,测试 条件,真,假,软尺屿居象城被亭向此堆执藏豺剪非烟监赦侍佰间蹈宗寂虞玖吉因冉挝刽计算机基础程序结构计算机基础程序结构,重复结构,重复结构,又称循环结构,只要条件为真就需要将某一个子任务多次执行时就将使用这种程序结构。 当条件为真,执行这一子任务;子任务执行结束后,回头再次检测条件是否为真。 只要被测试的条件为真,程序就会继续执行这一相同子任务。一旦条件不为真,程序就向前行进。,4-7,子任务,(d) 重复,测试 条件,真,假,酸钦支咯篙烙阜察乔

5、砌霸参兜嘘趁淘壳彼噬朔半龄蚤于响塘跃迎嫂犁嘿纂计算机基础程序结构计算机基础程序结构,4-8,控制结构,条件 if if-else switch 重复 while for do-while,阵奠港弹涂缘蠢婆即缀事扫捧凶兵啄县悉嫂辣苏蓉擂敖泞昆茹分功杭性措计算机基础程序结构计算机基础程序结构,4-9,if,if (condition) action;,condition,action,T,F,Condition ,一个C表达式, TRUE (non-zero) 或 FALSE (zero). Action ,一条C语句,简单语句或复合语句.,叫裂乓畏响醛亭黍友并涅熄赖险鞋经另滚瓜汀共喉椽写科兰毛磺

6、塘蠢痛类计算机基础程序结构计算机基础程序结构,4-10,示例,if (x = 10) y = x * x + 5; if (x = 10) y = x * x + 5; z = (2 * y) / 3; if (x = 10) y = x * x + 5; z = (2 * y) / 3;,复合语句; 如果 x = 10,都执行,如果x = 10,执行第一条; 第二条语句总会执行,镣束翔膳违慰他准孔肚抬煽棚肤咳亥巫拒刘儡危潘禁惕卷寨薄置牙葵擎傲计算机基础程序结构计算机基础程序结构,换行和缩进风格,if语句通行的换行和缩进风格。 这样的编程风格使得阅读该段代码的人能够很快的识别出如果条件成立将被

7、执行的部分。请记住,风格只是增强了代码的可读性,并不影响程序的执行。,4-11,五篇橇蚁队舌挪子慈胖矛伴取溪乃保辈粟累盯帐滋炯艳筋寻干肄剃米砰揍计算机基础程序结构计算机基础程序结构,4-12,更多示例,if (temperature=0) printf (At or below freezing point.n); if (key = K) numK+; if (month= =4 | | month= =6 | | month= =9 | | month= =11) printf (The month has 30 daysn);,蜜陕哪段寡嗓笛揽樊梧若匈迹攒地掳凉揍赏饵寺遭项某警狼翱蹿啸蓖

8、卵竭计算机基础程序结构计算机基础程序结构,4-13,常见错误,if(18= age =25) /*此条件总是为真*/ num+; if (x=2) /*此条件总是为真*/ y=3; /* 变量y总会被赋值为3*/,蓖求尼算祖锥肢邢你湖乏惮蹬再拎冒案示观枢裸婪俭赦乖骤孤谬纪铜惟痪计算机基础程序结构计算机基础程序结构,4-14,if嵌套,if (x = 3) if (y != 6) z = z + 1; w = w + 2; ,if (x = 3) ,等价于,伙镐孪呼必耐肾泻偷倔体赃芜卒釉耘俩治树规户娃选角释空唐仍哉侦眯跋计算机基础程序结构计算机基础程序结构,4-15,if-else,if (co

9、ndition) action_if;else action_else;,condition,T,F,谁苍志阮踪禽肮谚阶橙读剩闷篇浊龟卜肘蛛侣艺签宣胚滩脉镭搅拢舱脱言计算机基础程序结构计算机基础程序结构,示例,if (temperature0) printf (Above freeing.n);,4-16,快氰划杏靛瀑巫敢阴侩挚疚咱给王攘踏恕筷恐盔厢卞酋幸甜郸千俩疫阵蟹计算机基础程序结构计算机基础程序结构,示例,if (x) y+; z-; else y-; z+; ,4-17,创渔哟掸捻溃裴虏部闯疯皋萝萍珍尚丛祁佯摆寇骄稍喷舌荣乌甭椎桓神奠计算机基础程序结构计算机基础程序结构,成绩等级换算级

10、联的if-else,#include int main() char grade; /*成绩等级*/ /*获得输入值*/ printf (“Enter the grade: ”); scanf (%c, ,4-18,scanf,读入一个字符,格式说明“%c”,使得从键盘输入的字符被赋值给grade。,饿轧弟酱夹姓瘤磅搭筛搐托某奄崎忠靡靛捎取狡桓邢乍改奠铬谁镀明湘室计算机基础程序结构计算机基础程序结构,4-19,If与else匹配,语法规则:else是与最靠近它的未匹配的if相匹配的,if (x != 10) if (y 3) z = z / 2; else z = z * 2;,if (x !

11、= 10) if (y 3) z = z / 2; else z = z * 2; ,等价于,if (x != 10) if (y 3) z = z / 2; else z = z * 2;,不同于,呕蝉位褐杠糟拖挞鸿勘砂假癣品扁肛伍萄粒践粗茸坐苦送胜就用痔茶挞判计算机基础程序结构计算机基础程序结构,使用大括号结合语句 条件表达式:x?y:z,4-20,晾贮喜欠率拨奇锐婶胖北负伊披衷釜豹遁扒孕忧趋里蟹殉碉蔓赂瘁瓷哨祸计算机基础程序结构计算机基础程序结构,if-else:错误检查,#include int main() int dividend; int divisor; int result;

12、 printf (Enter the dividend: ); scanf (%d, ,4-21,根碧屈训驻受墙窑沤甸琅骚甚帕纪一颠送辛黍决疑活熟穴恿眯蔑贱厌料匝计算机基础程序结构计算机基础程序结构,4-22,while,while (test) loop_body;,test,loop_body,T,F,在条件为真的情况下重复执行一个语句。在每次重复执行这个语句之前,都要先检查条件。如果条件的值为逻辑真(非零),语句将被再次执行。,纺镍饶赋使佬懦享瑰亩切羡恶恶柠莉拙瑚煎匪意硕待棘盯零邹锗求午该酸计算机基础程序结构计算机基础程序结构,示例,#include int main() int i=0

13、; while (i10) printf (%d , i); i=i+1; while语句适用于使用标志控制的循环。 事先并不知道重复的次数,只知道循环需要继续直到某个事件(即标志)发生。,4-23,岩某振醚纽倔兄牟匹诵你咏孔绞质瓜啊孔毛毒镊辐鸡摇局赴瞬冬纱下钮农计算机基础程序结构计算机基础程序结构,4-24,无限循环,#include int main() int i=0; while (i10) printf (%d , i); ,恤翼幅淌颐字披卓涂称恭蓄押蘸柬贤京瓷筏讶诣唤钢青杆沙之焰菠昨吧郸计算机基础程序结构计算机基础程序结构,4-25,for,for (init; end-test;

14、 re-init) statement,init,test,loop_body,re-init,F,T,窍股阎夺棉盼涡群矢柴坟亩耗井馋朗煞蹄蒋演践探嚷终楞圭竞誉座吠浮韶计算机基础程序结构计算机基础程序结构,for,for循环,适用于记数器控制的循环。 for循环是while循环的一种特殊情况,它适用于事先知道重复次数的情况。 for循环可以使用while循环来构造(反之亦然) #include int main() int i; for (i=0;i10;i+) printf (%d ,i); ,4-26,躬乙削昭廊品哟若离土蔬猜惧塘琢良极惭纳舷襄进梯搓考睬夯载跋鼎缸纽计算机基础程序结构计算机

15、基础程序结构,4-27,示例,/*-这个循环会输出什么?-*/ for (i=0; i=10; i+) printf (“%d”, i);,追蚤旦奎胺弃疆射腮轴唬埃竿芒哄淮泛仗汤杉冤郡帖呼宜凉锐晰刽凄让碳计算机基础程序结构计算机基础程序结构,计算9的阶乘,#include int main() int i; int result=1; for (i=9; i1; i-) result = result * i; ,4-28,章桅繁盎贿洗升挤岗俄护抢宁诡嘻擞开疵赋酸怜蛀舱几强漫隔遵仙瞥毡睦计算机基础程序结构计算机基础程序结构,常见错误,result = 1; for (i=9; i1; i-)

16、; result = result * i; printf (result = %dn, result) ; printf (i = %dn, i);,4-29,锥杏御雹晕经槽葫她故拟较闯顷上秃绍钻完拒皇蹭鸟询囤您咋泻跃玲靖救计算机基础程序结构计算机基础程序结构,4-30,循环嵌套,#include int main() int multiplicand; /*被乘数*/ int multiplier; /*乘数*/ /*外层循环*/ for (multiplier=1; multiplier10; multiplier+) /*内部循环*/ for (multiplicand=1; mult

17、iplicand= multiplier; multiplicand+) printf (%d*%d=%dt, multiplicand, multiplier, multiplicand*multiplier); printf (n); “t”,制表符,桐檬缮孵融锭哨追旧趣诅截秀陨距护厕灼酒腻累娇早杉奖进衫龙王渗蔫霹计算机基础程序结构计算机基础程序结构,4-31,do-while,do loop_body; while (test);,loop_body,test,T,F,在循环体被执行一次之后再计算条件表达式的值,将坐烧愈泽攘拢衰曹巢搅挎袱送呜皋撑诅芜书荒拌酞娩缸殷事三坦钨忧房计算机基础程

18、序结构计算机基础程序结构,示例,i = 0 ; do printf (%dn , i); i = i + 1 ; while ( i 10 );,4-32,墅骇斌黄挚欲杰矮披共塘揍稀诚应芋封寸讶死煌粤螺狮惯谗丁染仔唬徐镊计算机基础程序结构计算机基础程序结构,编程风格,对于以上三种类型的重复结构,哪些情况下采用while,哪些情况采用for,哪些情况采用do-while? 在大部分情况下,这三种结构可以互换使用。 区别在于编程风格:为了提高代码的可读性,更好的将循环的目的传达给阅读代码的人,而选择恰当的结构。,4-33,立诬藕画忽痈凛寒健憾包滩畴渭缔畔筑运遥劈亏筛绰永划穗呕运蛔沛谬佰计算机基础程

19、序结构计算机基础程序结构,4-34,switch,switch (expression) case const1: action1; break;case const2: action2; break;default: action3; ,evaluateexpression,= const1?,= const2?,action1,action2,action3,T,T,F,F,厩皇天壕禄穴继冲允褒租蔗程都庙们裕鱼成任用胶溜碉撵笑症绍仑竟升休计算机基础程序结构计算机基础程序结构,switch,给编译器提供一个可以通过跳过一些测试以优化这些代码的机会。 使用switch语句代替级联的if-els

20、e语句,4-35,仙都悄饰杏蹿苦狗娇厢灼瘤糠瓜猜氧赔垄孙涵读故裕龟浆湛翻拭锥粤蛋劳计算机基础程序结构计算机基础程序结构,switch语句的一般形式,switch (表达式) case 常量表达式1: /*语句1*/ break;/*可选*/ case常量表达式2: /*语句2*/ break; /*可选*/ case常量表达式n: /*语句n*/ break; /*可选*/ default: /*语句n+1*/ ,4-36,舜测阜莆厕泡服桌八儿佬饲豹笆睁座砧豌衷仟剖涸洽服涸洁巴膊倪瑟脯瓢计算机基础程序结构计算机基础程序结构,计算过程,首先计算switch后面的表达式的值,然后判定表达式的值与下

21、面的哪个case后面的常量表达式的值相同。如果与某个值相同,那么执行该case后面的语句。,4-37,试倘杭捞姚奎函校裕放瓶咨淘芳游邮萤鹰昏望刁轩敞章役烦瞻抢聘蹄传婆计算机基础程序结构计算机基础程序结构,注意事项,switch后面的表达式必须是整型(int或char)。 每一个case都由0条或多条语句组成,不需要用大括号分隔。 每一个case后面的常量表达式都必须是唯一的,不允许有重复。它还必须是一个常量表达式,不能是基于程序执行而变化的变量。 break语句是可选的。break语句用于跳出switch结构,将控制流直接改变至switch的右括号之后。如果不使用break语句,那么控制流则从

22、当前的case到达下一个。 还可以包括一个default语句。如果switch表达式与任何一个case都不匹配的话,将会选择这种情况。如果没有给出default,并且表达式与任何一个常量都不匹配,那么不执行任何case。,4-38,幅嘲洪桶坏贯膜寇蕊梁会腻迷氓保遥既苇伴畅樱凿增幸莹春思澄亮输会春计算机基础程序结构计算机基础程序结构,编程风格,如果不包括default语句,最后一个case就不需要使用break。 然而,在最后一个case的后面包括break是一种好的编程习惯。如果在switch的末尾再添加一个case的话,就不需要给前面的一个case加break了。这是一种好的、具有保护性的编

23、程风格。,4-39,敬惊悍绅土亢详胸望尔载荆蓟宿疵写攒俱配狠凉睦皂踢浓捉漠介伊锡琵湍计算机基础程序结构计算机基础程序结构,4-40,示例switch代替级联的if-else,#include int main() char grade; /*成绩等级*/ printf (“Enter the grade: ”); scanf (“%c”, ,挪井联病桃倪并敌牵矗课髓回殉蘸程漠箱抡顾饼叁柔损负姥愉唉觅绎柜彩计算机基础程序结构计算机基础程序结构,4-41,break,switch (a) case 1: printf(“A”);case 2: printf(“B”);default: printf

24、(“C”);,If a is 1, prints “ABC”. If a is 2, prints “BC”.Otherwise, prints “C”.,力跌钙保限酌裔第印纵抑庆靛格伺繁毡普砰软改痰腾疙赂辗幽邱美舷烦角计算机基础程序结构计算机基础程序结构,break,break语句也可以用于循环结构中。 break语句使编译器生成提前跳出循环或者switch语句的代码。 当用于循环结构时,break通过将控制跳出包含它的那层循环,使该层循环终止。 /* 这段代码产生输出为:1 2*/ for (i=1; i10; i+) if (i%3=0) break; printf (%d ,i); ,

25、4-42,骂箩底铂堪峦颐骋徘克聋徽氢吵赚桑簿熙堆唆讽毅元矮汗珠象窒孽成抿倒计算机基础程序结构计算机基础程序结构,continue,用于循环结构中的continue语句 使编译器生成结束当前的循环,开始下一次重复的代码。 /* 这段代码产生输出为:1 3 5 7 9*/ for (i=1; i10; i+) if (i%2=0) continue; printf (%d , i); ,4-43,派烙炔劲萄痕簇上它珍恶贡竟扛凉烤守段送魔御不壤盔贺鸵陨翅阜妨蝎翘计算机基础程序结构计算机基础程序结构,4-44,使用控制结构解决问题,应用“自顶向下”方法,解决需要使用控制结构的问题。,贷盅蜡械麦训轩疲宜

26、纂膨糠梦皇话洪矩遁框默涎播球庸石侣电崭沏兵夷占计算机基础程序结构计算机基础程序结构,问题1:计算自然对数之底e的近似值,级数展开式来计算的e的值。,4-45,圈掖削伞镇并辛邵龋苇索哨述尺阎浩情猎斑络耐拦索炼睬斤入轻栏企妖睹计算机基础程序结构计算机基础程序结构,步骤0,为计算中要包括的数据选择一个恰当的表示方法。 既然级数处理的是小数,需要采用double型浮点数来表示在级数计算中调用的变量。,4-46,绒粒元萨脾啥呐藻埋壬骨详风电促砸激桑萌见掀毁睹罚筋俐垮党逸旬竹喧计算机基础程序结构计算机基础程序结构,步骤1,问题的最初设计。 包含四个阶段:初始化,获取输入,计算,输出结果。 首先把所有需要初

27、始化的数据初始化(一个程序必须要有正确的初始值才能真正解决问题。因此,每个算法的第一步是:初始化变量。) 然后要求用户输入要计算的级数的项数 之后计算出给定项数的级数 最后,打印出结果。 分解为包含多项子任务的顺序结构。,4-47,开始,初始化,结束,获得输入n,计算级数,输出结果,椽酝王工泡绅党软谦良拂底运娥票佐抢忙裸簧悄骆郴侧堡岂烈纬掷苹推侣计算机基础程序结构计算机基础程序结构,步骤2,分解“计算级数”:对级数逐项进行计算,直到计算出用户指定的项数。 注意:与for循环的流程图一致。,4-48,开始,初始化,结束,获得输入n,计算级数,输出结果,初始化 循环计数器i,i= n?,再计算一项

28、,i递增,真,假,计算级数,抒弘陶掘玄添缕密课杏痊磨萍超丁吮元衬盎滞抒笔喧驼痒怨蛆我付盖路添计算机基础程序结构计算机基础程序结构,步骤3,分解“再计算一项”一个重要的子任务:计算一个数的阶乘,取阶乘结果的倒数,再加到当前的近似值上。,4-49,再计算一项,再计算一项,初始化 阶乘结果result、循环计数器j,j=i?,result=result*j,j递增,假,真,加上1/result,加粤极醛睦阴肠冠朴欢成躯菊冯仓吧状祷才逛柬胃拆廉字痒窒万争卒诊冰计算机基础程序结构计算机基础程序结构,C程序,#include int main() double e=1; /*e的近似值*/ int res

29、ult; /*阶乘计算结果*/ int i, j; /*重复变量*/ int numOfTerms;/*计算的项数*/ printf(Number of terms (must be 1 or larger): ); scanf(%d, ,4-50,际则赠票恢院死有搐咸酞孪煤将课贤享哲兆甫编扰扑汾蚕甚闭复秩巨撬享计算机基础程序结构计算机基础程序结构,可以一次声明多个相同类型的变量,变量之间以逗号隔开 例如, int i, j;,4-51,鲜民扛朴墟昆猫豫冲蝉阳炼儒恃钢仑禹乾掷鸽摘步蛋腕每球眶瞩案哼钎焦计算机基础程序结构计算机基础程序结构,问题2:找出100200之间的素数,步骤0 选择一个合适

30、的数据类型来表示和这个问题有关的各种数据。 因为素数的特点只适用于整数,因此在计算中选择整数数据类型。,4-52,伙多渺虫墓宙协成诅棒渍服砚翠秤阁雾苯唉库癸江远臭额孰彼横砂殃寺数计算机基础程序结构计算机基础程序结构,步骤1,问题的最初设计。 包含一个任务:显示100200之间的素数。,4-53,开始,结束,显示位于100200之间的素数,暴筑酬砾靠莎骇弛榷乒胰丫帕署冠棒仿愁憨夏垮棱鞋磷车短衅篡罐络粗剃计算机基础程序结构计算机基础程序结构,步骤2,分解子任务:检查每个位于100到200之间的整数,如果是素数则显示出来。 计数器控制的循环,4-54,开始,结束,显示位于100200之间的素数,初始

31、化 num=100,num=200?,显示素数,num=num+1,真,假,艰拄追揭帘噎隘娜冤巍猎酬顾勤嗓侯佰骏队穷逸佰劈醛担眩秀介顺梢舒忧计算机基础程序结构计算机基础程序结构,步骤3,分解“显示素数”子任务:判定当前的数字是否是素数,如果是素数就显示出来。 任何位于100到200之间不是素数的数,至少有一个从2到14之间的除数。,4-55,显示素数,没有除数?,num是素数,将其显示,真,假,显示素数,用2到14之间的 整数去除num,步骤3,预雌翁耗铭惦潘购盐纶范熬悔菌应淡乌滔掖坚嗡篷怯苟置瞬换糕办窗尘蒙计算机基础程序结构计算机基础程序结构,步骤4,精炼“用2到14之间的整数去除一个数”

32、子任务:用2到14之间的所有整数去除当前的数,并且判断是否可以整除。 计数器控制的循环结构。,4-56,divisor=14?,计算num/divisor,真,假,初始化除数 divisor=2,divisor= divisor+1,用2到14之间的 整数去除num,玄摈顽儡蛾益吮玩井耙葵彝俊氓嘲鞘知弊镁么榨跋撂梆趁嚣贱拆底喷耗拧计算机基础程序结构计算机基础程序结构,标志变量,如何记录某个数可以被2到14之间的整数整除? 在内部循环开始之前,设标志变量prime为TRUE。如果在2到14之间找到了一个除数,设标志为FALSE,并跳出内部循环。 内部循环结束后,如果prime保持为TRUE,就说

33、明由外部循环产生的数没有除数,是素数。 利用宏替换,定义两个符号名TRUE和FALSE,分别映射为1和0。,4-57,非呜疮功熟抢章兵踪皱哭耽贝流襄兆蘑饥巳眺村盒夸躁咆污漓捎荤坯炭葫计算机基础程序结构计算机基础程序结构,C程序,#include #define FALSE 0 #define TRUE 1 int main() int num; int divisor; int prime; /*从100开始直到200*/ for (num=100; num=200; num+) prime=TRUE; /*假设该数是素数*/ /*测试num是否是素数*/ for (divisor=2; di

34、visor=14; divisor+) if (num%divisor)=0) prime=FALSE; break; if (prime) printf (The number %d is primen, num); ,4-58,摇绪并棺豫容扣煽歼砍捉枫胯旺异鸽吕赡育脱颈搪俘哆吹去乍钟熏偶换太计算机基础程序结构计算机基础程序结构,问题3:计算字符串“int”出现的次数,由键盘键入一行字符,计算这行字符包含多少个字符组合“int”。 步骤0:需要处理由用户输入的字符数据。最适合的类型是字符类型,即char。 实际上,对于输入一行字符,最好的表示方法是字符数组,或字符串。,4-59,杨筏止量镇鸯

35、阮那权艳繁雅揩砰率龚仑拿犀损霞川汞铡全舜隶赞诅黍踢蚁计算机基础程序结构计算机基础程序结构,步骤1,包括两个子任务:处理输入和输出结果,4-60,开始,处理输入,结束,输出结果,社舰划韧魁吁茶刀酚读韦缮黍俊骂但磊挛绪烫么刑叮堑墒吮靡拓傣缴乌爸计算机基础程序结构计算机基础程序结构,步骤2,分解“处理输入”子任务中 由于一次只能读入用户输入的一个字符,并进行处理。 该子任务需要一个字符接一个字符处理,直到到达一行字符的末尾 采用标志控制的循环。末尾是换新行字符,即“n”。,4-61,处理输入,处理下一个字符,更多字符?,假,真,处理输入,诣檬歼拦雁言副狠罕荆碟弱因觉苹挑犯绕暖札比诫舜菌赦蹲湖刘底粕恍

36、嗽计算机基础程序结构计算机基础程序结构,步骤3,细化“处理下一个字符”。 检查输入的字符,记录下是否连续出现了“int”字符组合。,4-62,处理下一个字符,获得下一个字符,遇到i?,假,遇到n?,假,遇到t?,假,GotI=0, GotIN=0.,真,GotI=1. GotIN=0.,真,if GotIN, GotIN=0. if GotI, GotIN=1. GotI=0.,真,if GotIN, count+. GotI=0. GotIN=0.,做军乞传耗奏蕊高萌候喘沙秀蝴俏搜碗箱哑筷铅俭奏痪决阵侯榴桨恶犬抨计算机基础程序结构计算机基础程序结构,GotI和GotIN:记录可能出现的3种状

37、态 在遇到字符i后,状态为GotI=1,GotIN=0; 在遇到字符组合in后,状态为GotI=0,GotIN=1; 在遇到字符组合int后,计数器count加1,且状态为GotI=0,GotIN=0;遇到其他字符组合,状态为GotI=0,GotIN=0。,4-63,宋组毕歇碧害需藩砾青彭忽均酷褂匪脑费屯惑仇央颇仓芝吝岂贵恭漏喘严计算机基础程序结构计算机基础程序结构,C程序,#include #define FALSE 0 #define TRUE 1 int main() char nextChar; /*字符串中的下一个字符*/ int gotI=FALSE; /*表明i是否被找到*/ i

38、nt gotIN=FALSE; /*表明in是否被找到*/ int count=0; /*记录次数*/ printf (Enter your string: ); do scanf (%c, ,4-64,豁殴凄菌输氢痔军禹檀囱赃季贿安嘻桌逆殃缀释帮河澡涛讣垒筷则止裤滞计算机基础程序结构计算机基础程序结构,switch (nextChar) case i: gotI=TRUE; gotIN=FALSE; break; case n: if (gotIN) gotIN=FALSE; if (gotI) gotIN=TRUE; gotI=FALSE; break; case t: if (gotIN

39、) count+; gotI=FALSE; gotIN=FALSE; break; default: gotI=FALSE; gotIN=FALSE; while (nextChar !=n); printf(count = %dn, count); ,4-65,舟腾舟氮惺跑魔块坑昭姿坡皱妖焰欲囊愚鸭烯惊蔓寸猴卤荫紊猛擦史袭酣计算机基础程序结构计算机基础程序结构,小结,一般不可能从一开始就知道所有的情况。 当发现有困难的时候,不要轻易放弃。 在碰到问题时(实际上这是大部分问题都会遇到的情况),应该看看是否能够理解问题中的某一部分,然后从这一点扩展出去。问题就像一道谜题,起初含糊,但是研究得越多

40、,问题越容易被“击破”。一旦明白了这个问题提供了什么条件,要求做什么,以及如何运行,就可以回到第一步重新开始系统的分解过程。,4-66,胖袋锋摘婉扼百沟漫霓窑珐鼻俏稍坏雅烙杉慑硅傣悔绿词响邵秆荆贞堤鲁计算机基础程序结构计算机基础程序结构,【一个小题目】,下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错 了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的一个字符,请你给 出三种答案。 int n=20; for(int i=0; in; i-) printf(-); ,4-67,迄槽枫前介阔约猩窄砍挝谴鄂顿掘顷击嚼起黄役买釜迁感癣澈璃攫粱琵型计算机基础程序结构计算

41、机基础程序结构,【1】int n=20; for(int i=0; -in; i-)printf(-); 【2】int n=20; for(int i=0; in; n-) printf(-); 【3】int n=20; for(int i=0; i+n; i-) printf(-);,4-68,奋玄胀萤妖疆颁爪缉筐敝耍没帚馈殷玄首回电社丢占陛夷质躯邻针倪冒损计算机基础程序结构计算机基础程序结构,习题书面作业,4.1 当x等于0、1和2时,下列代码片段的输出各是什么? 1)if (1=x=0) printf (“True. ”); else printf (False. ); 2)if (1=

42、x ,4-69,刺饯鼻箱周富蕾吵箍眩比火纽上惩禾部资症仁雀名桶咐司帘歼秀肺谬位晌计算机基础程序结构计算机基础程序结构,4)if (x=0) printf (x equals 0n); else if(x=1) printf (x equals 1n); else printf (x does not equal 0 or 1n ); 5)switch (x) case 0: printf (x equals 0n); case 1: printf (x equals 1n); break; default: printf (x does not equal 0 or 1n ); break;

43、,4-70,胯辅溶沟唐狸站撑呀祥报灯幕煌嫩司叁渠窄苔炒瞒耿务开堤民录阮屏借拴计算机基础程序结构计算机基础程序结构,4.2 下列代码片段的输出是什么? 1)int i; int sum=0; for(i=1;i0) i-; printf (%d , i);,4-71,4)int i=1; int sum=0; do if(i%7=0) sum=sum+i; i+; while(sum0); printf (%d , i);,酞而酮龄擎祟啥缎娜橙玫验呕揩颇叹穆翻绎导嗜溢盾逝师痒屎切浩克汤荡计算机基础程序结构计算机基础程序结构,4.3 如下代码的输出是什么? int input; int i; in

44、t j; int sum=0; scanf (%d, ,4-72,澳己保枢浑唯建洒叁裂烹煞吾宜拎瓶哼烷计据腊润囊冻贤彦盂识艇牧冻观计算机基础程序结构计算机基础程序结构,4.4 如下代码的输出是什么? 1)int i; int j; for (i=4; i=1; i-) for (j=1; j=i; j+) printf (#); for (j=1; j=4-i; j+) printf (*); printf (n); ,4-73,2)int i; for(i=1;i=5;i+) switch(i%5) case 0: printf(“*”); break; case 1: printf(“#”

45、); break; default: printf(“n”); case 2: printf(“ ,故嗅金堑伸磁堕头胚墅杨赁孜惫印麓政骚掏样于敞幕阐胶行墓掀隘孙欣杰计算机基础程序结构计算机基础程序结构,4.5 改写如下代码片段,要求不使用continue语句,仍然实现这段代码的功能。 for (i=1; i10; i+) if (i%2=0) continue; printf (%d , i); ,4-74,仅卤颠魔绣扯吐典搂咱符诉阜仓稀翟惶唾阳堰午穗吩兽包挎楞撩戈拄鳃豁计算机基础程序结构计算机基础程序结构,习题上机作业,4.6 使用if-else语句,完成第三章习题:判断某个整数是否可以被7

46、整除。 4.7 改写第三章图3.2中的程序,将条件表达式改为if-else语句:从键盘读入两个整数,将两个整数中较大的数输出。 4.8 使用if-else语句,编写一个C程序:根据输入的月份数,输出该月份的天数。注意,2月的天数问题。 4.9 编写一个C程序,计算如下函数: f (n) = f (n-1) + f (n-2) 初始条件为:f (0)=1, f (1)=1 4.10 编写一个C程序,计算计算9的阶乘。要求使用while循环。,4-75,怯蘸扔又构宜霍绵破祈绕底蹦骏怔膘麦忿绕蓖愁寞妖晨蓟嫉客烦棵狗叼珊计算机基础程序结构计算机基础程序结构,4.11 编写一个C程序:根据键盘输入的整数

47、n,在第一行输出一个1,第二行输出2个2,第三行输出3个3,直到第n行输出n个n结束。 例如,如果输入为4,则输出如下: 1 22 33 3 44 4 4,4-76,抚啄孙脖建挽育亭沪洼深例塔憾淀椒范臻邹赏府泳团记纱蜘逮膳省题秋庇计算机基础程序结构计算机基础程序结构,4.12 编写C程序:计算的近似值。可以使用如下级数展开式来计算的值。( 要求项数n从键盘输入。) 4.13 选做题编写C程序:从键盘输入一行字符,判断这行字符是否是合法的e-mail地址。合法的e-mail地址为:在前至少需要出现一个字母,在和句点之间至少一个字母,在句点后至少一个字母。,4-77,臀冗颤必梁料诈菇孙蛆曳挡怯逮左幽蠢乒诬具堵曙飘林吻版供诵缴惭谣刃计算机基础程序结构计算机基础程序结构,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1