版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、int main (void)数学与软件科学学院实验报告学期:2013至2014第1 学期时间:2013年12月07日课程名称:程序设计基础教程-C语言专业:数学与应用数学2012级1班实验编号:06实验项目:基于函数的模块化程序设计姓名:学号:实验成绩:良+一、实验目的及要求(1) 了解和掌握C语言环境下模块化程序设计的基础-基于函数模块的程 序设计技术;(2) 复习C语言程序的基本结构特点,了解基于函数模块的程序模块及其调 用关系、过程;(3) 函数的声明、定义、使用方法;(4) 对各种变量属性的使用方法;(5) 对C语言中常用的预编译语句的基本掌握。二、实验内容(第1题任选其两个小题,第
2、2题和第3题必做)1. 函数的声明、定义和使用方法。具体实例如下:(1) 编写一个在屏幕上画一条正弦曲线的函数;(2) 编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:分别写出一个求N个数的最大公约数和最小公倍数的递归函数; 试编制n碟片hanoi塔的问题求解函数,并利用它求解4个盘片的结72=2*2*2*3*3;(3)(4)试编写求n!的函数,并求n=7的结果。果;(5)具体要求如下:(1) 编写程序通过调试获得正确结果;(2) 分析函数的声明、定义和使用方法;(3) 分别分析函数调用时的参数传值调用方法。2. 有关变量的属性实验(静态、动态、全局、局部等方面)。具体实例如下:
3、(1) 仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个 变量的属性及其使用结果进行比较分析:/*(a)*/int nX=1;/*(b)*/void p rt(void);int nX=3;prt(); prin tf("The seco nd nX is %dn",nX);/*(c)*/ prin tf("The first nX is %dn",nX);return 0;void p rt(void)/*(d)*/int nX=5;prin tf("The third nX is %dn",nX);/*(e)*/(2)
4、 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验 证并对各个变量的存储属性及其结果进行比较分析:#defi ne LOW 11 #defi ne HIGH 23 #defi ne CHANGE 12 int i=LOW;int main (void)int workover(i nt i);int reset(i nt i);int i=HIGH;reset(i/2.5);prin tf("i=%dn",i);reset(i=i/3);prin tf("i=%dn",i);reset(i/2);prin tf("i=%dn&quo
5、t;,i);workover(i);prin tf("i=%dn",i);return 0;workover(i nt i);i=(i%i+)*(i*i)/(2*i)+4);prin tf("i=%dn",i);return (i);reset(i nt i);i=iv=CHANGE?LOW:HIGH+;return (i);(3) 分析、编辑并执行以下程序, 要指出各个变量的存储属性。如果有错,请指出其错误原因,同时需/*filei c*/ int last(void);int n ew(i nt);in t reset(void);exter int
6、 i;int main (void)int i,j;i=reset();for ( j=1;j<=3;j+)printf(“ i=%dtj=%dn” ,i,j);printf(“n ext(i)=%dt”,n ext(i);printf(“ last(i)=%dn ”,last();printf(“n ew(i+j)=%dn” ,new(i+j);int n ext(void)retur n (i+);return 0;/*file2 c*/static int i=10;fast(void)rturn (i-=1_);n ew(i nt i)static in t j=-5;retur
7、 n (i=j+=+i);/*file3.c*/extern int i;reset()return (i);3.预编译命令实验。具体实例如下:(1)(2)(3)(4)上机验证所选题目,并做相应测试和分析;进行实验分析;总结基于函数、宏等技术的模块化程序设计和实现方法及其经验; 编写实验报告。(1)一般宏替换实验(教材例7-5 );带参数的宏替换(教材例7-7例7-12,习题7-8和习题7-9); 习题7-11和习题7-12 ;文件包含倂in clude ""和 #i nclude <>)。三、实验预备(1) 编写所选实验题目的程序代码和流程图;(2) 检查源程
8、序并给出其可能的运行结果说明。四、实验步骤(1)(2)(3)五、实验结果分析与评价根据测试目标写出测试报告;测试结果分析说明;测试程序代码清单。1. 函数的声明、定义和使用方法。具体实例如下:(1)分别写出一个求N个数的最大公约数和最小公倍数的递归函数; 程序如下:int main(v oid)int a,b, p,r, nTemp; cIrscrO;printf("PI ease input (a,b):n");sca nf("%d,%d",&a,&b);/*交换a,b的位置,使得a>b */if (a<b)nTemp=a;
9、a=b; b=nTemp; p=a*b; while (b!=0) /*输出最大公约数*/ 输出最小公倍数*/*将a*b的值放到p里面,以便接下来求a,b的最小公倍数*/*采用辗转相除法求最大公约数*/r=a%b;a=b;b=r;prin tf("the zui da gong yue shu is %dn ",a);prin tf("the zui xiao gong bei shu is %dn",p/a); /* return 0;运行结果: 试编写求n!的函数,并求n=7的结果。 程序如下:prin tf("The seco nd nX
10、 is %dn",nX);int mai n(main)long int n ,i ,n Sum=0,n X=1; clrscr();prin tf(" PI ease input (n):n"); sca nf("%d",&n);for (i=1;i<=n ;i+)*/*声明变量*/n X*=i;/* p rocess 循环控制结构prin tf(" n! is %d",nX);return 0;运行结果如下: F z I学习费程序S言TC;TC.EII Please input Cn>=:7n* is
11、 50402. 有关变量的属性实验(静态、动态、全局、局部等方面)。具体实例如下:(1)仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:程序如下:int main (void)int nX=1;/*全局变量,但是当遇到内部重新初始化时,以内部的为准*/void P rt(void);/*调入外部函数*/int nX=3;/*再一次初始化*/prt();bellRJiethird n f irst n35 1Ssis-L ILKX nuAprin tf("The first nX is %dn",nX);return 0;voi
12、d p rt(void)int n X=5;/*重新初始化*/ prin tf("The third nX is %dn",nX);运行结果如下:F: 学习费料程序S言TC;TC.EXI(2)仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并 对各个变量的存储属性及其结果进行比较分析:#defi ne LOW 11/*采用宏定义,方便程序运行*/#defi ne HIGH 23 #defi ne CHANGE 12int i=LOW;/*外部变量*/int main (void)int workover(i nt i);int reset(i nt i);in
13、t i=HIGH;reset(i/2.5);prin tf("i=%dn",i);reset(i=i/3);prin tf("i=%dn",i);reset(i/2);prin tf("i=%dn",i);workover(i);prin tf("i=%dn",i);return 0;workover(i nt i);i=(i%i+)*(i*i)/(2*i)+4);return (i);prin tf("i=%dn",i);reset(i nt i);i=iv=CHANGE?LOW:HIGH+;
14、return (i);该程序有误,更改为:#i nclude <stdio.h>#defi ne LOW 11#defi ne HIGH 23#defi ne CHANGE 12int i=LOW;int main (void)int i=HIGH;int reset(i nt i);clrscr();reset(i/2.5);prin tf("i=%dn",i);reset(i=i/3);reset(i/2);prin tf("i=%dn",i);workover(i);prin tf("i=%dn",i);return
15、 0;int workover(i nt i)i=(i%i+)*(i*i)/(2*i)+4);prin tf("i=%dn",i);return (i);reset(i nt i)i=iv=CHANGE?LOW:HIGH;return (i);运行结果如下:TC.LXE237717(3) 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指 出各个变量的存储属性。/*filei c*/ int last(void);int new(int);int reset(void);exter int i;int main (void)int i,j;i=reset();
16、for ( j=l;jv=3;j+)printf(“ i=%dtj=%dn» ,i,j);printf(“n ext(i)=%dt”,n ext(i);printf(“ last(i)=%dn ”,last();printf(“n ew(i+j)=%dn” ,new(i+j);int n ext(void)retur n (i+);return 0;/*file2 c*/static int i=10;fast(void)rturn (i-=1_);n ew(i nt i)static in t j=-5;retur n (i=j+=+i);/*file3.c*/extern int
17、 i;reset()return (i);该程序有误,更改为:int last(void);int n ew(i nt);int reset(void);exter int i;int main (void)int i,j;i=reset();for (j=1;jv=3;j+)prin tf("i=%dtj=%dn",i,j);prin tf(" next(i)=%dt", next(i);prin tf("last(i)=%dn",last();prin tf(" new(i+j)=%dn" ,n ew(i+j)
18、;int n ext(void)retur n (i+);return 0;static int i=10;fast(void)rturn (i-=1_);n ew(i nt i)static int j=-5;retur n (i=j+=+i);extern int i;reset()return (i);运行结果如下:“ ® TCEXE运行结果如下:i-1 next(i)=l new(i*j)二-3 M . A2 next(i)=2 newt i*j)=-2 i=l j=3 next(i)=3 new(i*j)=-llast(i)=1last(i)=2last(i)=33.预编译
19、命令实验。(1) 一般宏替换实验(教材例7-5 ); 程序如下:具体实例如下:#i ncludevstdio.h>#defi ne P printf#defi ne D "%d"/*采用宏定义*/#defi ne F "%fn"int main(v oid)int m=5,n=8,k=11;float b=3.8,d=9.7,f=21.08;P(D F,m,b);P(D F,n ,d);P(D F,k,f);return 0;:/* 遇到 D,F就换成"%d" , printf*/*prin tf("%d %fn&qu
20、ot;,m,b)*/* prin tf("%d %fn", n,d)*/* prin tf("%d %fn",k,f)*/(2)带参数的宏替换(教材例7-7例7-12 ,习题7-8和习题7-9);例 7-7 :程序如下:#i ncludevstdio.h/*宏定义*/#defi ne MAX( nu m1, num2) (nu m1> num2) ?n um1: num2 int main (void)int m, n, max;p ri ntf("l nput two nu mber:");scan f("%d%d&
21、quot;,&m,&n);*/max=MAX(m, n);pri ntf("max = %dn",max);return 0;运行结果如下:/* 宏展开:(m> n)?m: n*/*宏调用Input two number:2 3,nidX = 0例7-8 :在带参宏定义中,形参是标识符。宏调用中,实参可以是任 何合法表达式。程序如下:#in cludevstdio.h #defi ne SQ(n) (n )*( n) int square(i nt nu mber);int mai n(void)int m,n Square;clrscr();p ri
22、 ntf("l nput a nu mber:");scan f("%d",&m);nSquare=SQ(m+1);p ri ntf(” nSquare=%dsquare=%dn", nSquare,square(m+1);return 0;int square(i nt nu mber)return (nu mber* nu mber);运行结果如下:障 H:TC.EXEInput a niiiwber :3 nSuuare=lCsqu弓e=16(3)习题7-11和习题7-12 ;习题7-11 :程序如下:#defi ne excha
23、 nge(ch1,ch2) ch1-32 int main (void)char ch1,ch2;printfC'P lease input two chars:' n");sca nf("%c,%c",&ch1,&ch2);prin tf("Lower char is %cn",ch1);ch2=excha nge(ch1,ch2)prin tf("U pper char is %cn",ch2);return 0;运行结果如下:CA TC. EXEFie呂Gg input tuo clips :Loweir char is aUpper char is A习题7-12 :程序如下:#i ncludevstdio.h>te mp=i;i=j;j=te mp;#defi ne cha nge(i,j) if(i>j) te mp=i;i=j;j=te mp; else int main (void)int i,j,te mp;clrscr();printfC'P lease input 2 nu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告的制作和刊登行业相关项目经营管理报告
- 废水回用技术行业营销策略方案
- 广告设计行业相关项目经营管理报告
- 蜂箱用木格子市场发展前景分析及供需格局研究预测报告
- 自行车刹车操纵闸把市场分析及投资价值研究报告
- 皮制长外衣商业机会挖掘与战略布局策略研究报告
- 电打字机细分市场深度研究报告
- 为保护数据进行计算机安全威胁分析行业市场调研分析报告
- 广告分发行业营销策略方案
- 牙科用贵金属合金市场发展前景分析及供需格局研究预测报告
- 初三化学第一单元检测质量分析
- 危重病人护理评估及安全管理
- 工业自动化的柔性制造与定制化生产
- 小班化教学和合作学习
- 《永辉案例分享》课件
- 酒店总经理管理培训课件
- 时钟的英语表达法
- 《同学之间如何相处》课件
- 《巴洛克风格》课件
- 七十二香谱图
- 《办公软件教程WPS》课件
评论
0/150
提交评论