c语言第七章课后题

上传人:泽*** 文档编号:74186423 上传时间:2022-04-13 格式:DOCX 页数:16 大小:97.05KB
返回 下载 相关 举报
c语言第七章课后题_第1页
第1页 / 共16页
c语言第七章课后题_第2页
第2页 / 共16页
c语言第七章课后题_第3页
第3页 / 共16页
点击查看更多>>
资源描述
精品文档一、第七章习题7(p184-p187),7.1-7.7全做, 7.8-7.12中选做两道,要求给出程序执行结果。7-1 、#include int Square(int i)return i*i;int main()int i=0;i=Square(i);for(; i3;i+)static int i=1;i+=Square(i);printf(%d,i);printf(%dn,i);return 0;结果:结果分析:开头定义square()函数功能:计算一个数的平方入口参数:整数x返回值: i*i主函数: i=0; 进入循环:静态变量i=1 ;i=i+square ( 1) =2;输出2;循环变量i=0+1=1;.精品文档i=13成立静态变量i=i+square (2) =2+4=6 ;输出6;循环变量i=i+1=2;I=23 成立静态变量( i 保持原值) i=6 ;i=i+square ( 6) =6+36=42 ;输出 42;循环变量i=i+1=3 ;I=33 不成立退出循环输出循环变量i=37-2 、#include int hour,minute,second; /* 定义全局变量 */ void update()second +;if(second = 60)second=0;minute+;if(minute=60)minute=0 ;hour+;if(hour=24)hour=0;void display()printf(%d : %d : %dn ,hour,minute,second);void delay()int t;for (t=0;t100000000;t+); /*用循环体为空语句的循环实现延时*/.精品文档int main()int i;second=0;for(i=0;i1000000;i+)update();/*利用循环控制时钟运行时间*/display();/*显示时,分,秒 */delay();/*模一尺时间为 1 秒*/return 0;结果:自动跳出时间7-3 、#include /*max() 函数功能:找两个数的最大值入口参数:两个整数a,b返回值:两数的最大值*/int max(int a, int b)int max=0;.精品文档max = (ab)?a:b;return max;void main()int x=0;/*输入的两个数 x,y*/int y=0;int m=0;/*m用于接收 max() 函数的返回值 */printf(input two integer numbers:);scanf(%d,%d,&x,&y);m=max(x,y);printf(the max number is %dn,m);结果:7-4#include /*LCM() 函数功能:计算两个整数的最小公倍数入口参数:两整数a, b返回值:最小公倍数*/int LCM(int a,int b)int i=0; /*循环变量 */int min=0;/*循环寻找范围的最小值 */int max=0;/*循环寻找范围的最大值 */min = (ab)?a:b;/*最小值为 a,b 中的最大值 */max = a*b;/*最大值为 a*b*/.精品文档for (i=min; i=max; i+)if(i%a=0 & i%b=0)return i;void main()int x;/*键盘输入两整数x,y*/int y;int m;/*m用于接收 LCM()函数的返回值 */do/*输入整数的合法数据 */printf(输入两个正整数: );scanf(%d,%d,&x,&y);while(x0 | y0);m = LCM(x,y);printf(最小公倍数为: %dn,m);结果:7-5、#include long fact(int n);void main()int i=0;/* 循环变量*/int n=0;/* 输入的值*/int m=0;/* 接收 fact()函数的返回值*/.精品文档doprintf(input n:);scanf(%d,&n);while(n0);for(i=1; i=n; i+)m=fact(i);printf(%d!=%ldn,i,m);/*fact 函数功能:计算 n!入口参数:n返回值:n!*/long fact(int n)static long p=1;p=p*n;return p;结果:7-6、#include .精品文档long fact(int n);void main()int i=0;/* 循环变量*/int n=0;/* 输入的值*/int m=0;/* 接收 fact()函数的返回值*/long s=0; /*所求最终结果*/doprintf(input n:);scanf(%d,&n);while(n0);for(i=1; i=n; i+)m=fact(i);s=s+m;printf(1!+2!+.+n! = %ldn,s);/*fact 函数功能:计算 n!入口参数:n返回值:n!*/long fact(int n)static long p=1;p=p*n;return p;.精品文档结果:7-7、(1)穷举法:#include int Gcd(int a,int b);void main()int x=0;/* 键盘键入两个数 */int y=0;int m=0;/* 接收 Gcd 的返回值*/doprintf( 输入两个正数 :);scanf(%d,%d,&x,&y);while(x0 | y0);m = Gcd(x,y);printf( 最大公约数:%dn,m);/*Gcd() 函数功能:计算两数的最大公 约数入口参数:两个正数 a, b.精品文档返回值:最大公 约数*/int Gcd(int a,int b)int i=0;int t=0;t=(a=1; i-)if(a%i=0 & b%i=0)return i;结果:( 2)欧几里得算法#include int Gcd(int a,int b);void main()int x=0;/* 键盘键入两个数 */int y=0;int m=0;/* 接收 Gcd 的返回值*/doprintf( 输入两个正数 :);.精品文档scanf(%d,%d,&x,&y);while(x0 | y0);m = Gcd(x,y);printf( 最大公约数:%dn,m);/*Gcd() 函数功能:计算两数的最大公 约数入口参数:两个正数 a, b返回值:最大公 约数*/int Gcd(int a,int b)int r=0;r=a%b;if(r!=0)doa=b;b=r;r=a%b;while(r!=0);return b;结果:(3) 递归方法:.精品文档#include int Gcd(int a,int b);void main()int x=0;/*键盘键入两个数*/int y=0;int m=0;/* 接收 Gcd 的返回值 */doprintf( 输入两个正数:);scanf(%d,%d,&x,&y);while(x0 | yb)return Gcd(a-b,b);elsereturn Gcd(b,b-a);结果:.精品文档7-9、#include /*old() 函数功能:计算第i 个人的年龄入口参数:人数i返回值:年龄*/int old(int i)if(i=1)return 10;elsereturn old(i-1)+2;void main()int x=5;/* 人数为 5*/int y=0;/* 接收 old()函数的返回值*/y=old(x);printf( 第五个人的年龄为:%dn,y);结果:7-10、#include void main()int flag=0;/* 设置标志变量*/.精品文档int a=0;/* 百位 */int b=0;/* 十位 */int c=0;/* 个位*/int m=0;/* 代表 acb*/int n=0;/* 代表 bac*/int p=0;/* 代表 bca*/int q=0;/* 代表 cab*/int r=0;/* 代表 cba*/int i=0;/* 从 100999 中找 abc*/int sum=0; /* 观众计算得结果*/printf( 说出你的计算结果: );scanf(%d,&sum);for(i=100;i=999;i+)a=i/100;b=i/10%10;c=i%10;m=a*100+c*10+b;n=b*100+a*10+c;p=b*100+c*10+a;q=c*100+a*10+b;r=c*100+b*10+a;.精品文档if (m+n+p+q+r)=sum)flag=1;/* 一旦找到就退出循 环*/break;if(flag=0)/* 未找到说明计算错误 */printf( 你算错了!);elseprintf( 你想的数是 %d %d %d n,a,b,c);结果:二、收集资料并整理,叙述结构化程序设计的基本思想;根据自己的编程,说说你对结构化程序设计的理解。模块化程序设计:1、定义:将系统划分为若干个子系统,任务划分为若干个子任务,本质思想就是实现不同层次的数据或过程的抽象过程。2、模块分解的基本原则( 1)、保证模块的相对独立性高聚合、低耦合。高聚合:模块内部的联系越紧密越好,就是使模块的功能要相对独立和单一。低耦合:模块之间的联系越松越好,就是使模块之间的接口越简单越好。( 2)、模块的实现细节对外不可见信息隐藏。外部:关心做什么;内部:关心怎么做。实质:把不需要调用者知道的信息都封装在模块内部,是模块的实现细节对外不可见。3、设计好模块接口( 1)、接口指罗列出一个模块的所有的与外部打交道的变量等( 2)、定义好后不要轻易改动。( 3)、在模块开头(文件的开头)进行函数声明。.精品文档4、结构化程序设计思想:( 1)、逐步求精:将一个完整的、较复杂的问题分解成若干个相对独立的、较为简单的子问题,若这些子问题还较为复杂可再分解它们,直到能够容易的用某种高级语言表达为止。( 2)、自底向上:先编写出基础程序段,然后再扩大、扩充和升级。( 3)、自顶向下:先写出结构简单的、清晰的主程序来表达整个问题;在此问题中包含的复杂子问题用子程序来实现;直到每个细节都可用高级语言表达为止。总结:逐步求精技术- 是一种由不断的自底向上修正的所补充的自顶向下的程序设计方法。其特点: 、程序结构清晰、容易阅读、容易修改 、可简化程序的正确性验证,可减少程序调试的时间和复杂度。5、用逐步求精实现技术求解问题的步骤为:、对实际问题进行全局性分析、决策,确定数学模型。、确定程序的总体结构,将整个问题分解成若干个相对独立的子问题。、确定子问题的具体功能及其相互关系。、在抽象的基础上,将整个问题逐一精细化,直到能用确定的高级语言描述为止。我对结构化程序设计的理解:1、由于将复杂程序分解,对每个子程序的检查可局限于内部,结构化设计可减少错误的发生,易寻找错误。2、可精简程序设计的复杂程度,对一个特定的功能只需局限于一个相对独立的子程序的设计。3、结构化程序设计也是模块化程序设计的一种,增强可读性。4、结构化设计要注意参数之间的传递,实际是以参数的传递为纽带。三、收集资料,简要叙述C 语言编码中应注意的基本编码规范。1、代码行:( 1)、一行内只写一条语句,一行代码只定义一个变量。容易阅读并且便于程序测试和写注释。( 2)、在定义变量时同时初始化该变量。可避免初始化被遗忘,或者引用未初始化的变量。2、对齐与缩进:( 1)、程序的分界符 和 一般独占一行,且位于同一列,同时与应用他们的语句左对齐,这样便于查看 和 的配对情况( 2)、采用梯形层次对应好个层次,同层次的代码在同层次的缩进层上,即位于同一层 和 之内的代码在 右边数格出左对齐。( 3)、一般用设置为4 个空格的Tab 键缩进。3、空行及代码行内的空格( 1)、在每个函数定义结束后加一空行,能起到是程序布局美观、整洁和清晰的作用。( 2)、在一个函数体内,相邻的两组逻辑上紧密相关的语句块之间加空行。( 3)、关键字后加空格,用于突出关键字。列如:int 、float 等后面至少加一个空格,if 、for、while 等后面加一个空格( 4)、函数名后面不加空格,一般与关键字区分开.精品文档( 5)、赋值、算术、关系、逻辑等运算符的前后各加一个空格,但一元运算符前后不加。(6) 、对表达式较长的 for、 if 语句,为了紧凑,可在适当的地方去掉一些空格。( 7)、左圆括号向后紧跟,右圆括号、逗号、分号向前进跟,紧跟处不留空格。( 8)、函数参数的逗号分隔符和for 中的分号后面加一个空格,可增加单行的清晰度。4、长行拆分如果代码行太长,则要在适当的位置进行拆分,拆分出的新行要进行适当的缩进,使排版整齐。5、程序注释:( 1)、在重要的程序文件的首部,对程序的功能、编程者、编程日期以及其他相关信息(如:版本号)加以注释说明( 2)、在用户自定义函数的前面,对函数接口加以说明( 3)、在一些重要的语句行的右方,如在定义一些非通用的变量、函数调用、较长的多重嵌套的语句块结束处加以说明。( 4)、在一些重要的语句块的上方,尤其是在语义转折处,对代码的功能、原理进行解释。成绩批阅教师批阅日期.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!