c语言知识学习第七章课后题_第1页
c语言知识学习第七章课后题_第2页
c语言知识学习第七章课后题_第3页
c语言知识学习第七章课后题_第4页
c语言知识学习第七章课后题_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

**一、第七章习题7(p184-p187),7.1-7.7全做,7.8-7.12中选做两道,要求给出程序执行结果。7-1、#include<stdio.h>intSquare(inti){returni*i;}intmain(){inti=0;i=Square(i);for(;i<3;i++){staticinti=1;i+=Square(i);printf("%d,",i);}**printf("%d\n",i);return0;}结果:结果分析:开头定义square()函数功能:计算一个数的平方入口参数:整数x返回值:i*i主函数:i=0;进入循环:静态变量i=1;i=i+square(1)=2;输出2;循环变量i=0+1=1;i=1<3成立静态变量i=i+square(2)=2+4=6;输出6;**循环变量i=i+1=2;I=2<3成立静态变量(i保持原值)i=6;i=i+square(6)=6+36=42;输出42;循环变量i=i+1=3;I=3<3不成立退出循环输出循环变量i=37-2、#include<stdio.h>inthour,minute,second; /*定义全局变量*/感谢阅读voidupdate(){second++;if(second==60){second=0;minute++;}if(minute==60)**{minute=0;hour++;}if(hour==24)hour=0;}voiddisplay(){printf("%d:%d:%d\n",hour,minute,second);精品文档放心下载}voiddelay(){intt;for(t=0;t<100000000;t++); /*用循环体为空语句的循环实现延时*/感谢阅读}intmain(){inti;**second=0;for(i=0;i<1000000;i++){update(); /*利用循环控制时钟运行时间*/感谢阅读display(); /*显示时,分,秒*/delay(); /*模一尺时间为1秒*/}return0;}结果:自动跳出时间7-3、#include<stdio.h>**/*max()函数功能:找两个数的最大值入口参数:两个整数a,b返回值:两数的最大值*/intmax(inta,intb){intmax=0;max=(a>b)?a:b;returnmax;}voidmain(){intx=0; /*输入的两个数x,y*/inty=0;intm=0; /*m用于接收max()函数的返回值*/谢谢阅读printf("inputtwointegernumbers:");精品文档放心下载**scanf("%d,%d",&x,&y);m=max(x,y);printf("themaxnumberis%d\n",m);精品文档放心下载}结果:7-4#include<stdio.h>/*LCM()函数功能:计算两个整数的最小公倍数入口参数:两整数a,b返回值:最小公倍数*/intLCM(inta,intb){**inti=0; /*循环变量*/intmin=0;/*循环寻找范围的最小值*/intmax=0;/*循环寻找范围的最大值*/感谢阅读min=(a>b)?a:b;max=a*b;精品文档放心下载

/*最小值为a,b中的最大值*//*最大值为a*b*/感谢阅读for(i=min;i<=max;i++){if(i%a==0&&i%b==0)returni;}}voidmain(){intx;

/*键盘输入两整数x,y*/inty;intm;

/*m用于接收LCM()函数的返回值*/**do{ /*输入整数的合法数据*/printf("输入两个正整数:");scanf("%d,%d",&x,&y);感谢阅读}while(x<0||y<0);m=LCM(x,y);printf("最小公倍数为:%d\n",m);}结果:7-5、#include<stdio.h>longfact(intn);voidmain(){inti=0; /*循环变量*/intn=0; /*输入的值*/**intm=0; /*接收fact()函数的返回值*/感谢阅读do{printf("inputn:");scanf("%d",&n);}while(n<0);for(i=1;i<=n;i++){m=fact(i);printf("%d!=%ld\n",i,m);}}/*fact函数功能:计算n!入口参数:n返回值:n!*/longfact(intn)**{staticlongp=1;p=p*n;returnp;}结果:7-6、#include<stdio.h>longfact(intn);voidmain(){inti=0; /*循环变量*/intn=0; /*输入的值*/intm=0; /*接收fact()函数的返回值*/感谢阅读longs=0;/*所求最终结果*/**do{printf("inputn:");scanf("%d",&n);}while(n<0);for(i=1;i<=n;i++){m=fact(i);s=s+m;}printf("1!+2!+...+n!=%ld\n",s);感谢阅读}/*fact函数功能:计算n!入口参数:n返回值:n!*/longfact(intn){**staticlongp=1;p=p*n;returnp;}结果:7-7、(1)穷举法:#include<stdio.h>intGcd(inta,intb);voidmain(){intx=0;

/*键盘键入两个数*/inty=0;intm=0;

/*接收Gcd的返回值*/**do{printf("输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0||y<0);m=Gcd(x,y);printf("最大公约数:%d\n",m);}/*Gcd()函数功能:计算两数的最大公约数入口参数:两个正数a,b返回值:最大公约数*/intGcd(inta,intb){inti=0;intt=0;t=(a<b)?a:b; /*t为a,b中的较小者*/感谢阅读**for(i=t;i>=1;i--){if(a%i==0&&b%i==0)returni;}}结果:(2)欧几里得算法#include<stdio.h>intGcd(inta,intb);voidmain(){intx=0;

/*键盘键入两个数*/inty=0;intm=0;

/*接收Gcd的返回值*/**do{printf("输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0||y<0);m=Gcd(x,y);printf("最大公约数:%d\n",m);}/*Gcd()函数功能:计算两数的最大公约数入口参数:两个正数a,b返回值:最大公约数*/intGcd(inta,intb){intr=0;r=a%b;**if(r!=0){do{a=b;b=r;r=a%b;}while(r!=0);}returnb;}结果:(3)递归方法:#include<stdio.h>intGcd(inta,intb);voidmain()**{intx=0; /*键盘键入两个数*/inty=0;intm=0; /*接收Gcd的返回值*/do{printf("输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0||y<0);m=Gcd(x,y);printf("最大公约数:%d\n",m);}/*Gcd()函数功能:计算两数的最大公约数入口参数:两个正数a,b返回值:最大公约数*/intGcd(inta,intb)**{if(a==b)returna;

/*递归出口*/else{if(a>b)returnGcd(a-b,b);elsereturnGcd(b,b-a);}}结果:7-9、#include<stdio.h>/*old()函数功能:计算第i个人的年龄入口参数:人数i**返回值:年龄*/intold(inti){if(i==1)return10;elsereturnold(i-1)+2;}voidmain(){intx=5;inty=0;

/*人数为5*//*接收old()函数的返回值*/y=old(x);printf("第五个人的年龄为:%d\n",y);精品文档放心下载}结果:**7-10、#include<stdio.h>voidmain(){intflag=0; /*设置标志变量*/inta=0; /*百位*/intb=0; /*十位*/intc=0; /*个位*/intm=0;intn=0;intp=0;intq=0;intr=0;精品文档放心下载

/*代表acb*//*代表bac*//*代表bca*//*代表cab*//*代表cba*/inti=0; /*从100~999中找abc*/精品文档放心下载intsum=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("你算错了!");}else{printf("你想的数是%d%d%d\n",a,b,c);}谢谢阅读}结果:二、收集资料并整理,叙述结构化程序设计的基本思想;根据自己的编程,说说你对结构化程精品文档放心下载序设计的理解。模块化程序设计:1、定义:将系统划分为若干个子系统,任务划分为若干个子任务,本质思想就是实现不同精品文档放心下载层次的数据或过程的抽象过程。2、模块分解的基本原则(1)、保证模块的相对独立性——高聚合、低耦合。高聚合:模块内部的联系越紧密越好,就是使模块的功能要相对独立和单一。精品文档放心下载低耦合:模块之间的联系越松越好,就是使模块之间的接口越简单越好。精品文档放心下载**(2)、模块的实现细节对外不可见——信息隐藏。外部:关心做什么;内部:关心怎么做。实质:把不需要调用者知道的信息都封装在模块内部,是模块的实现细节对精品文档放心下载外不可见。3、设计好模块接口(1)、接口指罗列出一个模块的所有的与外部打交道的变量等谢谢阅读(2)、定义好后不要轻易改动。(3)、在模块开头(文件的开头)进行函数声明。4、结构化程序设计思想:(1)、逐步求精:将一个完整的、较复杂的问题分解成若干个相对独立的、较为简单的子感谢阅读问题,若这些子问题还较为复杂可再分解它们,直到能够容易的用某种高级语言表达谢谢阅读为止。(2)、自底向上:先编写出基础程序段,然后再扩大、扩充和升级。精品文档放心下载(3)、自顶向下:先写出结构简单的、清晰的主程序来表达整个问题;在此问题中包含的精品文档放心下载复杂子问题用子程序来实现;直到每个细节都可用高级语言表达为止。精品文档放心下载总结:逐步求精技术-------是一种由不断的自底向上修正的所补充的自顶向下的程序设计谢谢阅读方法。 其特点:<1>、程序结构清晰、容易阅读、容易修改<2>、可简化程序的正确性验证,可减少程序调试的时间和复杂度。感谢阅读5、用逐步求精实现技术求解问题的步骤为:**<1>、对实际问题进行全局性分析、决策,确定数学模型。精品文档放心下载<2>、确定程序的总体结构,将整个问题分解成若干个相对独立的子问题。精品文档放心下载<3>、确定子问题的具体功能及其相互关系。<4>、在抽象的基础上,将整个问题逐一精细化,直到能用确定的高级语言描述为止。谢谢阅读我对结构化程序设计的理解:1、由于将复杂程序分解,对每个子程序的检查可局限于内部,结构化设计可减少错误的发生,谢谢阅读易寻找错误。2、可精简程序设计的复杂程度,对一个特定的功能只需局限于一个相对独立的子程序的设计。感谢阅读3、结构化程序设计也是模块化程序设计的一种,增强可读性。感谢阅读4、结构化设计要注意参数之间的传递,实际是以参数的传递为纽带。精品文档放心下载三、收集资料,简要叙述C语言编码中应注意的基本编码规范。感谢阅读1、代码行:(1)、一行内只写一条语句,一行代码只定义一个变量。容易阅读并且便于程序测试和写注谢谢阅读释。(2)、在定义变量时同时初始化该变量。可避免初始化被遗忘,或者引用未初始化的变量。精品文档放心下载2、对齐与缩进:(1)、程序的分界符{和}一般独占一行,且位于同一列,同时与应用他们的语句左对齐,这谢谢阅读样便于查看{和}的配对情况(2)、采用梯形层次对应好个层次,同层次的代码在同层次的缩进层上,即位于同一层{和}感谢阅读之内的代码在{右边数格出左对齐。**(3)、一般用设置为4个空格的Tab键

温馨提示

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

评论

0/150

提交评论