ImageVerifierCode 换一换
格式:PPTX , 页数:53 ,大小:379.52KB ,
资源ID:4163454      下载积分:14 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4163454.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(第5章结构化程序设计.pptx)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第5章结构化程序设计.pptx

1、第第5 5章结构化程序设计章结构化程序设计5.1 结构化程序设计思想结构化程序设计思想5.3 函数函数5.4 一个结构化程序设计的例子一个结构化程序设计的例子5.2 结构化程序设计方法结构化程序设计方法第第5 5章结构化程序设计章结构化程序设计5.1 5.1 结构化程序结构化程序设计思想设计思想第第5 5章结构化程序设计章结构化程序设计主要观点:主要观点:采用自顶向下、逐步求精的程序设计方法采用自顶向下、逐步求精的程序设计方法通过分解降低问题的复杂性。分解后,如果问题还通过分解降低问题的复杂性。分解后,如果问题还是比较复杂,可以对问题进一步分解,一直分解到是比较复杂,可以对问题进一步分解,一直

2、分解到问题足够简单,可以很容易解决为止。问题足够简单,可以很容易解决为止。将问题分解后,每个子问题最终都变成独立的程序将问题分解后,每个子问题最终都变成独立的程序模块,每个模块完成一个单独的功能,所有模块组模块,每个模块完成一个单独的功能,所有模块组合在一起就可以构成一个完整的系统。合在一起就可以构成一个完整的系统。第第5 5章结构化程序设计章结构化程序设计强调使用顺序、选择、循环三种基本结构构造强调使用顺序、选择、循环三种基本结构构造程序,利用三种基本结构的组合嵌套形成更复程序,利用三种基本结构的组合嵌套形成更复杂的杂的“结构化程序结构化程序”,严格控制,严格控制GOTOGOTO语句的使语句

3、的使用用特点:特点:(1)(1)结构化程序中的任意基本结构都具有单入结构化程序中的任意基本结构都具有单入口和单出口。口和单出口。(2)(2)程序不会出现死循环,都能在有限的时间程序不会出现死循环,都能在有限的时间内结束。内结束。(3)(3)程序中任何语句都能够被执行到。程序中任何语句都能够被执行到。第第5 5章结构化程序设计章结构化程序设计5.2 5.2 结构化程序结构化程序设计方法设计方法第第5 5章结构化程序设计章结构化程序设计结构化程序设计强调过程设计,以功能为中心结构化程序设计强调过程设计,以功能为中心5.2.1 5.2.1 功能分解与功能复合功能分解与功能复合功能分解是指在程序设计过

4、程中,不断对功能进行功能分解是指在程序设计过程中,不断对功能进行分解,分解成若干个子功能。每个子功能又可以分分解,分解成若干个子功能。每个子功能又可以分解为若干个子功能,直至最终分解出来的子功能足解为若干个子功能,直至最终分解出来的子功能足够简单,可以很容易解决为止。够简单,可以很容易解决为止。功能复合是指将已实现的底层子功能经过适当组装形功能复合是指将已实现的底层子功能经过适当组装形成上层更大的功能,从而实现自底向上的设计思想。成上层更大的功能,从而实现自底向上的设计思想。第第5 5章结构化程序设计章结构化程序设计第第5 5章结构化程序设计章结构化程序设计在结构化程序设计中,每个子功能最终都

5、变成独立在结构化程序设计中,每个子功能最终都变成独立的程序模块。系统由一些小的功能模块组合而成,的程序模块。系统由一些小的功能模块组合而成,每个功能模块又可以由一些更小的子模块构成。模每个功能模块又可以由一些更小的子模块构成。模块之间就会形成上下层的关系,上层模块所实现的块之间就会形成上下层的关系,上层模块所实现的功能需要调用下层模块来实现。功能需要调用下层模块来实现。5.2.2 5.2.2 模块划分模块划分合理的模块划分:强内聚,低耦合。合理的模块划分:强内聚,低耦合。模块内部联系强,外部联系少,并且功能单一,使模块内部联系强,外部联系少,并且功能单一,使系统中的每个模块只涉及某个具体的子功

6、能,与其系统中的每个模块只涉及某个具体的子功能,与其它模块之间的联系尽可能少。它模块之间的联系尽可能少。第第5 5章结构化程序设计章结构化程序设计耦合性是指模块间相互联系的紧密程度。耦合性是指模块间相互联系的紧密程度。耦合性越小,模块间的联系越少,模块的相对耦合性越小,模块间的联系越少,模块的相对独立性越大,一个模块中的错误就不容易传播独立性越大,一个模块中的错误就不容易传播到其它模块。到其它模块。1.1.耦合性耦合性一般分为:内容耦合、公共耦合、控制耦合、一般分为:内容耦合、公共耦合、控制耦合、复合耦合和数据耦合。复合耦合和数据耦合。耦合性由高到低。耦合性由高到低。第第5 5章结构化程序设计

7、章结构化程序设计内聚性用来衡量一个模块内部各个元素之间结合的紧内聚性用来衡量一个模块内部各个元素之间结合的紧密程度。密程度。内聚性越强,模块内部元素之间联系得越紧密,模块内聚性越强,模块内部元素之间联系得越紧密,模块独立性越好。独立性越好。2.2.内聚性内聚性一般分为:偶然内聚、逻辑内聚、时间内聚、过程一般分为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。内聚、通信内聚、顺序内聚和功能内聚。内聚性由弱到强。内聚性由弱到强。第第5 5章结构化程序设计章结构化程序设计5.3 5.3 函数函数第第5 5章结构化程序设计章结构化程序设计模块模块5.3.1 5.3.1 函数定义

8、函数定义格式为:格式为:返回值类型返回值类型 函数名函数名(形参列表形参列表)函数体函数体 子功能子功能子程序子程序函数函数形式参数的格式:类型形式参数的格式:类型 形参名形参名第第5 5章结构化程序设计章结构化程序设计【例【例5.15.1】找零钱】找零钱顾客购买某商品后,需要找回顾客购买某商品后,需要找回m m元的零钱。售货员手元的零钱。售货员手头上有头上有1 1分、分、2 2分和分和5 5分硬币共分硬币共n n枚,问售货员有多少枚,问售货员有多少种找零的方式?种找零的方式?设需要设需要1 1分硬币分硬币x x枚,枚,2 2分硬币分硬币y y枚,枚,5 5分硬币分硬币z z枚。则枚。则根据题

9、意有方程根据题意有方程 采用穷举法获得找零的方案。采用穷举法获得找零的方案。第第5 5章结构化程序设计章结构化程序设计(1)(1)找零函数找零函数GetChangesGetChangesstatic void GetChanges(int m,int n)static void GetChanges(int m,int n)int x,y,z,no=0;int x,y,z,no=0;Console.WriteLine(n Console.WriteLine(n方案方案t1t1分分t2t2分分t5t5分分););for(x=0;x 10;x+)for(x=0;x 10;x+)for(y=0;y

10、10;y+)for(y=0;y=0)if(x+2*y+5*z=m&z=0)no+;no+;Console.WriteLine(0)t1t2t3,no,x,y,Console.WriteLine(0)t1t2t3,no,x,y,z);z);第第5 5章结构化程序设计章结构化程序设计(2)(2)主函数主函数MainMainstatic void Main(string args)static void Main(string args)double m;double m;int n;int n;Console.Write(Console.Write(请输入需要找回的零钱请输入需要找回的零钱(元元)

11、:););m=double.Parse(Console.ReadLine();m=double.Parse(Console.ReadLine();Console.Write(Console.Write(请输入售货员有多少枚硬币:请输入售货员有多少枚硬币:););n=int.Parse(Console.ReadLine();n=int.Parse(Console.ReadLine();GetChanges(int)(m*100),n);GetChanges(int)(m*100),n);Console.ReadLine();Console.ReadLine();第第5 5章结构化程序设计章结构化

12、程序设计调用函数的格式为:调用函数的格式为:函数名函数名(实参列表实参列表)5.3.2 5.3.2 函数调用函数调用u实参列表为函数能够接受的实在参数列表。实参实参列表为函数能够接受的实在参数列表。实参是一个表达式,其类型与形参一致。是一个表达式,其类型与形参一致。u可包含零或多个实参,应与形参一致。可包含零或多个实参,应与形参一致。u函数有返回值函数有返回值:函数调用可作为表达式函数调用可作为表达式的的操作数,操作数,或或作为语句使用作为语句使用。u函数没有返回值函数没有返回值:只能作为语句使用。只能作为语句使用。第第5 5章结构化程序设计章结构化程序设计【例【例5.25.2】求两个数中的最

13、大值】求两个数中的最大值 static int larger(int x,int y)static int larger(int x,int y)int max;int max;max=x;max=x;if(y max)if(y max)max=y;max=y;return max;return max;第第5 5章结构化程序设计章结构化程序设计【例【例5.25.2】求两个数中的最大值】求两个数中的最大值static void Main(string args)static void Main(string args)int m,n;int m,n;Console.WriteLine(Cons

14、ole.WriteLine(请输入两个整数:请输入两个整数:););m=int.Parse(Console.ReadLine();m=int.Parse(Console.ReadLine();n=int.Parse(Console.ReadLine();n=int.Parse(Console.ReadLine();Console.WriteLine(0 Console.WriteLine(0和和11两个数中的最大值为两个数中的最大值为2,m,n,larger(m,n);2,m,n,larger(m,n);Console.ReadLine();Console.ReadLine();第第5 5章结

15、构化程序设计章结构化程序设计1.1.值类型参数值类型参数把实参的一个副本传递给相应的形参,即形参获得把实参的一个副本传递给相应的形参,即形参获得的是实参的值。的是实参的值。在函数内部对形参的修改不会影响到实参。在函数内部对形参的修改不会影响到实参。5.3.3 5.3.3 参数传递参数传递值类型参数值类型参数:u常量常量u表达式。先计算表达式,然后将计算结果传递给表达式。先计算表达式,然后将计算结果传递给形参。形参。当从函数返回时,值类型参数被销毁。当从函数返回时,值类型参数被销毁。第第5 5章结构化程序设计章结构化程序设计【例【例5.35.3】交换两个变量的值】交换两个变量的值 static

16、void Swap(int a,int b)static void Swap(int a,int b)int p;int p;p=a;p=a;a=b;a=b;b=p;b=p;第第5 5章结构化程序设计章结构化程序设计【例【例5.35.3】交换两个变量的值】交换两个变量的值static void Main(string args)static void Main(string args)int x,y;int x,y;Console.WriteLine(Console.WriteLine(请输入两个整数:请输入两个整数:););x=int.Parse(Console.ReadLine();x=i

17、nt.Parse(Console.ReadLine();y=int.Parse(Console.ReadLine();y=int.Parse(Console.ReadLine();Console.WriteLine(Console.WriteLine(交换前:交换前:0t1,x,y);0t1,x,y);Swap(x,y);Swap(x,y);Console.WriteLine(Console.WriteLine(交换后:交换后:0t1,x,y);0t1,x,y);Console.ReadLine();Console.ReadLine();第第5 5章结构化程序设计章结构化程序设计引用类型不存储

18、实际数据内容,它存储对实际数据引用类型不存储实际数据内容,它存储对实际数据的内存地址的引用。我们可以通过该引用来操作它的内存地址的引用。我们可以通过该引用来操作它所指向内存中的数据,而不是直接操作该数据。所指向内存中的数据,而不是直接操作该数据。2.2.引用类型参数引用类型参数当两个引用类型变量引用同一内存中的数据时,对当两个引用类型变量引用同一内存中的数据时,对其中一个引用类型变量进行操作时会影响另一个引其中一个引用类型变量进行操作时会影响另一个引用类型变量。用类型变量。第第5 5章结构化程序设计章结构化程序设计向函数传递引用类型参数,即把实参的一个引用传向函数传递引用类型参数,即把实参的一

19、个引用传递给形参。形参只是实参的一个引用,不是实参的递给形参。形参只是实参的一个引用,不是实参的一个副本。一个副本。在函数中对引用类型参数的任何更改都会反映给实在函数中对引用类型参数的任何更改都会反映给实参,即实参与引用类型参数同时发生变化。参,即实参与引用类型参数同时发生变化。2.2.引用类型参数引用类型参数使用使用refref修饰符声明的参数,即为引用类型参数。在修饰符声明的参数,即为引用类型参数。在调用函数时,也要在实参前面加上调用函数时,也要在实参前面加上refref修饰符。修饰符。第第5 5章结构化程序设计章结构化程序设计【例【例5.5.4 4】交换两个变量的值】交换两个变量的值 s

20、tatic void Swap(ref int a,ref int b)static void Swap(ref int a,ref int b)int p;int p;p=a;p=a;a=b;a=b;b=p;b=p;第第5 5章结构化程序设计章结构化程序设计【例【例5.5.4 4】交换两个变量的值】交换两个变量的值static void Main(string args)static void Main(string args)int x,y;int x,y;Console.WriteLine(Console.WriteLine(请输入两个整数:请输入两个整数:););x=int.Parse

21、(Console.ReadLine();x=int.Parse(Console.ReadLine();y=int.Parse(Console.ReadLine();y=int.Parse(Console.ReadLine();Console.WriteLine(Console.WriteLine(交换前:交换前:0t1,x,y);0t1,x,y);Swap(Swap(ref ref x,x,ref ref y);y);Console.WriteLine(Console.WriteLine(交换后:交换后:0t1,x,y);0t1,x,y);Console.ReadLine();Console.

22、ReadLine();第第5 5章结构化程序设计章结构化程序设计u使函数返回多个值。使函数返回多个值。u参数通过引用来传递。参数通过引用来传递。3.3.输出参数输出参数u定义函数时,使用定义函数时,使用outout修饰符声明的参数。修饰符声明的参数。u调用函数时,在实参前面加上调用函数时,在实参前面加上outout修饰符。修饰符。第第5 5章结构化程序设计章结构化程序设计【例【例5.55.5】判断所输入的字符是否包含数字,】判断所输入的字符是否包含数字,若包含则返回该数字若包含则返回该数字static bool IsDigit(char ch,out int digit)static bool

23、 IsDigit(char ch,out int digit)if(ch=0&ch=0&ch=9)digit=(int)ch-48;digit=(int)ch-48;return true;return true;else else digit=-1;digit=-1;return false;return false;第第5 5章结构化程序设计章结构化程序设计【例【例5.55.5】判断所输入的字符是否包含数字,】判断所输入的字符是否包含数字,若包含则返回该数字若包含则返回该数字static void Main(string args)static void Main(string args)

24、char c;bool b;int d;char c;bool b;int d;Console.WriteLine(Console.WriteLine(请输入一个字符:请输入一个字符:););c=(char)Console.Read();c=(char)Console.Read();b=IsDidit(c,out d);b=IsDidit(c,out d);if(b)Console.WriteLine(if(b)Console.WriteLine(输入的数字为:输入的数字为:0,d);0,d);else Console.WriteLine(else Console.WriteLine(你输入的

25、不是一个数字!你输入的不是一个数字!););Console.ReadLine();Console.ReadLine();第第5 5章结构化程序设计章结构化程序设计u函数参数的个数不固定,使用参数数组。函数参数的个数不固定,使用参数数组。u当函数参数为参数数组时,可以使用当函数参数为参数数组时,可以使用0 0、1 1、2 2、n n个参数调用函数。个参数调用函数。u参数数组与同一类型的值类型参数完全等效参数数组与同一类型的值类型参数完全等效4.4.参数数组参数数组u使用使用paramsparams修饰符声明的参数,即为参数数组。修饰符声明的参数,即为参数数组。u参数数组必须是形参列表中的最后一个

26、参数参数数组必须是形参列表中的最后一个参数u一个函数中,只能有一个参数数组。一个函数中,只能有一个参数数组。第第5 5章结构化程序设计章结构化程序设计【例【例5.65.6】求和】求和static int Sum(params int value)static int Sum(params int value)int result=0;int result=0;for(int i=0;i value.Length;i+)for(int i=0;i max)max=y;if(y max)max=y;return max;return max;static double Larger(double

27、x,double y)static double Larger(double x,double y)double max=x;double max=x;if(y max)max=y;if(y max)max=y;return max;return max;第第5 5章结构化程序设计章结构化程序设计【例【例5.75.7】利用重载函数比较不同类型的值】利用重载函数比较不同类型的值 static double Larger(double x,double y,static double Larger(double x,double y,double z)double z)double max;dou

28、ble max;max=Larger(x,Larger(y,z);max=Larger(x,Larger(y,z);return max;return max;第第5 5章结构化程序设计章结构化程序设计【例【例5.75.7】利用重载函数比较不同类型的值】利用重载函数比较不同类型的值static void Main(string args)static void Main(string args)int x,y;double a,b,c;int x,y;double a,b,c;Console.WriteLine(Console.WriteLine(请输入两个整数:请输入两个整数:););x=i

29、nt.Parse(Console.ReadLine();x=int.Parse(Console.ReadLine();y=int.Parse(Console.ReadLine();y=int.Parse(Console.ReadLine();Console.WriteLine(0 Console.WriteLine(0与与11中的最大值为中的最大值为2,x,2,x,y,Larger(x,y);y,Larger(x,y);a=double.Parse(Console.ReadLine();a=double.Parse(Console.ReadLine();b=double.Parse(Conso

30、le.ReadLine();b=double.Parse(Console.ReadLine();Console.WriteLine(0 Console.WriteLine(0与与11中的最大值为中的最大值为2,a,2,a,b,Larger(a,b);b,Larger(a,b);第第5 5章结构化程序设计章结构化程序设计一个函数在其函数体内直接或间接地调用自身,则一个函数在其函数体内直接或间接地调用自身,则该函数称为递归函数。该函数称为递归函数。5.3.5 5.3.5 递归函数递归函数void func()void func()func();func();void func()void func

31、()another();another();void another()void another()func();func();第第5 5章结构化程序设计章结构化程序设计【例【例5.85.8】求】求n!n!阶乘的数学公式:阶乘的数学公式:转化为以下形式:转化为以下形式:第第5 5章结构化程序设计章结构化程序设计【例【例5.85.8】求】求n!n!static long f(int n)static long f(int n)if(n=0)if(n=0)return 1;return 1;else else return n*f(n-1);return n*f(n-1);第第5 5章结构化程序设

32、计章结构化程序设计【例【例5.85.8】求】求n!n!static void Main(string args)static void Main(string args)long result;long result;int n;int n;Console.Write(Console.Write(请输入一个整数:请输入一个整数:););n=int.Parse(Console.ReadLine();n=int.Parse(Console.ReadLine();result=f(n);result=f(n);Console.WriteLine(0!=1,n,Console.WriteLine(0!

33、=1,n,result);result);第第5 5章结构化程序设计章结构化程序设计求解求解n!n!,将问题分解为求,将问题分解为求(n-1)!(n-1)!。依此类推,直至。依此类推,直至0!0!等于等于1 1为止。最后,综合各子问题的解,即可求得为止。最后,综合各子问题的解,即可求得n!=12n!=12n-1nn-1n。第第5 5章结构化程序设计章结构化程序设计在设计递归函数时,一般要考虑两个问题:在设计递归函数时,一般要考虑两个问题:(1)(1)如何将问题分解为性质相同的子问题。例如,如何将问题分解为性质相同的子问题。例如,n!=n(n-1)!n!=n(n-1)!。(2)(2)递归结束条件

34、。例如,递归结束条件。例如,0!=10!=1。如果没有递归结束。如果没有递归结束条件,就会出现无限递归情况。条件,就会出现无限递归情况。第第5 5章结构化程序设计章结构化程序设计【例例5.95.9】求斐波那契序列的第求斐波那契序列的第n n项项 static long fib(int n)static long fib(int n)if(n=1|n=2)if(n=1|n=2)return 1;return 1;else else return fib(n-2)+fib(n-1);return fib(n-2)+fib(n-1);第第5 5章结构化程序设计章结构化程序设计【例例5.95.9】求斐

35、波那契序列的第求斐波那契序列的第n n项项 static void Main(string args)static void Main(string args)int n;int n;Console.Write(Console.Write(请输入一个正整数:请输入一个正整数:););n=int.Parse(Console.ReadLine();n=int.Parse(Console.ReadLine();Console.Write(Console.Write(斐波那契序列的第斐波那契序列的第00项为:项为:1,n,fib(n);1,n,fib(n);第第5 5章结构化程序设计章结构化程序设计5

36、.4 5.4 一个结构化一个结构化程序设计的例子程序设计的例子第第5 5章结构化程序设计章结构化程序设计万年历万年历第第5 5章结构化程序设计章结构化程序设计u月历头需要显示该月份所在的年份、英文月份名的月历头需要显示该月份所在的年份、英文月份名的缩写和一个星期每天的英文缩写名。缩写和一个星期每天的英文缩写名。u月份所在的年份根据用户输入而获得;月份所在的年份根据用户输入而获得;u月份也可以根据用户输入而获得,但必须转换为英月份也可以根据用户输入而获得,但必须转换为英文月份名的缩写形式;文月份名的缩写形式;u一个星期每天的英文缩写名固定不变。一个星期每天的英文缩写名固定不变。万年历万年历u月历

37、体显示一个月的每一天,及每天对应星期几月历体显示一个月的每一天,及每天对应星期几u为了确定每天对应星期几,需要知道每个月的第为了确定每天对应星期几,需要知道每个月的第一天对应星期几。一天对应星期几。第第5 5章结构化程序设计章结构化程序设计万年历万年历获取月份第一天是星期几:获取月份第一天是星期几:week=(6+total)%7week=(6+total)%7第第5 5章结构化程序设计章结构化程序设计【例【例5.105.10】万年历】万年历 (1)(1)显示月历头函数显示月历头函数DisplayTitleDisplayTitle static void DisplayTitle(int y,

38、int m)static void DisplayTitle(int y,int m)GetMonthName(m);GetMonthName(m);Console.WriteLine(t0,y);Console.WriteLine(t0,y);Console.WriteLine(Sun Mon Tue Wed Console.WriteLine(Sun Mon Tue Wed Thu Fri Sat);Thu Fri Sat);Console.WriteLine(-Console.WriteLine(-);-);第第5 5章结构化程序设计章结构化程序设计(2)(2)获取月份名函数获取月份名函

39、数GetMonthNameGetMonthName static void GetMonthName(int m)static void GetMonthName(int m)switch(m)switch(m)case 1:case 1:Console.Write(tJanuary);break;Console.Write(tJanuary);break;case 2:case 2:Console.Write(tFebruary);break;Console.Write(tFebruary);break;case 3:case 3:Console.Write(tMarch);break;Co

40、nsole.Write(tMarch);break;第第5 5章结构化程序设计章结构化程序设计(3)(3)显示月历体函数显示月历体函数DisplayBodyDisplayBody static void DisplayBody(int y,int m)static void DisplayBody(int y,int m)int first=GetFirstDay(y,m);int first=GetFirstDay(y,m);int days=GetDays(y,m);int days=GetDays(y,m);for(int i=0;i first;i+)for(int i=0;i fir

41、st;i+)Console.Write();Console.Write();for(int i=1;i=days;i+)for(int i=1;i=days;i+)Console.Write(0,4,i);Console.Write(0,4,i);if(i+first)%7=0)if(i+first)%7=0)Console.WriteLine();Console.WriteLine();第第5 5章结构化程序设计章结构化程序设计(4)(4)获取月份第一天函数获取月份第一天函数GetFirstDayGetFirstDaystatic int GetFirstDay(int y,int m)st

42、atic int GetFirstDay(int y,int m)int total=0;int total=0;for(int i=1980;i y;i+)for(int i=1980;i y;i+)if(i%4=0&i%100!=0|i%400=0)if(i%4=0&i%100!=0|i%400=0)total+=366;total+=366;else else total+=365;total+=365;for(int i=0;i m;i+)for(int i=0;i m;i+)total+=GetDays(y,i);total+=GetDays(y,i);return(total+6)

43、%7;return(total+6)%7;第第5 5章结构化程序设计章结构化程序设计(5)(5)计算月份天数函数计算月份天数函数GetDaysGetDays static int GetDays(int y,int m)static int GetDays(int y,int m)int days=31;int days=31;switch(m)switch(m)case 1:case 3:case 1:case 3:case 5:case 7:case 5:case 7:case 8:case 10:case 8:case 10:case 12:case 12:return days;ret

44、urn days;第第5 5章结构化程序设计章结构化程序设计(6)(6)主函数主函数MainMain static void Main(string args)static void Main(string args)int year;int month;int year;int month;Console.Write(Console.Write(请输入年份:请输入年份:););year=int.Parse(Console.ReadLine();year=int.Parse(Console.ReadLine();Console.Write(Console.Write(请输入月份:请输入月份:););month=int.Parse(Console.ReadLine();month=int.Parse(Console.ReadLine();Console.WriteLine(n);Console.WriteLine(n);DisplayTitle(year,month);DisplayTitle(year,month);DisplayBody(year,month);DisplayBody(year,month);Console.ReadLine();Console.ReadLine();

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服