C语言实验报告六_第1页
C语言实验报告六_第2页
C语言实验报告六_第3页
C语言实验报告六_第4页
C语言实验报告六_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

数学与软件科学学院 实验报告学期:2013至_2014 第_ 1 学期 时间:2013年12月07日课程名称:程序设计基础教程-C语言 专业:数学与应用数学 2012级1班实验编号:06 实验项目:基于函数的模块化程序设计 指导教师_姓名: 学号:实验成绩:良+ 一、实验目的及要求(1) 了解和掌握C语言环境下模块化程序设计的基础-基于函数模块的程序设计技术;(2) 复习C语言程序的基本结构特点,了解基于函数模块的程序模块及其调用关系、过程;(3) 函数的声明、定义、使用方法;(4) 对各种变量属性的使用方法;(5) 对C语言中常用的预编译语句的基本掌握。二、实验内容(第1题任选其两个小题,第2题和第3题必做)1.函数的声明、定义和使用方法。具体实例如下:(1) 编写一个在屏幕上画一条正弦曲线的函数;(2) 编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:72=2*2*2*3*3;(3) 分别写出一个求N个数的最大公约数和最小公倍数的递归函数;(4) 试编制n碟片hanoi塔的问题求解函数,并利用它求解4个盘片的结果;(5) 试编写求n!的函数,并求n=7的结果。具体要求如下:(1) 编写程序通过调试获得正确结果;(2) 分析函数的声明、定义和使用方法;(3) 分别分析函数调用时的参数传值调用方法。2.有关变量的属性实验(静态、动态、全局、局部等方面)。具体实例如下:(1) 仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:int main(void) /*(a)*/ int nX=1; /*(b)*/ void prt(void); int nX=3; prt(); printf(The second nX is %dn,nX); /*(c)*/ printf(The first nX is %dn,nX); return 0;void prt(void) /*(d)*/ int nX=5; printf(The third nX is %dn,nX); /*(e)*/(2) 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:#define LOW 11#define HIGH 23#define CHANGE 12int i=LOW;int main(void) int workover(int i); int reset(int i); int i=HIGH; reset(i/2.5); printf(i=%dn,i); reset(i=i/3); printf(i=%dn,i); reset(i/2); printf(i=%dn,i); workover(i); printf(i=%dn,i); return 0;workover(int i); i=(i%i+)*(i*i)/(2*i)+4); printf(i=%dn,i); return (i);reset(int i); i=i=CHANGE?LOW:HIGH+; return (i); (3) 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。/*file1.c*/int last(void);int new(int);int reset(void);exter int i;int main(void)int i,j;i=reset();for (j=1;j=3;j+) printf(“i=%dtj=%dn”,i,j);printf(“next(i)=%dt”,next(i);printf(“last(i)=%dn”,last();printf(“new(i+j)=%dn”,new(i+j);int next(void)return (i+);return 0;/*file2.c*/static int i=10;fast(void)rturn (i-=1_);new(int i)static int j=-5;return (i=j+=+i);/*file3.c*/extern int i;reset()return (i);3.预编译命令实验。具体实例如下:(1) 一般宏替换实验(教材例7-5);(2) 带参数的宏替换(教材例7-7例7-12,习题7-8和习题7-9);(3) 习题7-11和习题7-12;(4) 文件包含(#include 和#include )。三、实验预备(1) 编写所选实验题目的程序代码和流程图;(2) 检查源程序并给出其可能的运行结果说明。四、实验步骤(1) 上机验证所选题目,并做相应测试和分析;(2) 进行实验分析;(3) 总结基于函数、宏等技术的模块化程序设计和实现方法及其经验;(4) 编写实验报告。五、实验结果分析与评价 (1) 根据测试目标写出测试报告;(2) 测试结果分析说明;(3) 测试程序代码清单。1.函数的声明、定义和使用方法。具体实例如下:(1)分别写出一个求N个数的最大公约数和最小公倍数的递归函数;程序如下:int main(void) int a,b,p,r,nTemp; clrscr(); printf(Please input (a,b):n); scanf(%d,%d,&a,&b); if (ab */ nTemp=a; a=b; b=nTemp; p=a*b; /*将a*b的值放到p里面,以便接下来求a,b的最小公倍数*/ while (b!=0) /*采用辗转相除法求最大公约数*/ r=a%b; a=b; b=r; printf(the zui da gong yue shu is %dn,a);/*输出最大公约数*/ printf(the zui xiao gong bei shu is %dn,p/a); /*输出最小公倍数*/ return 0;运行结果:(2) 试编写求n!的函数,并求n=7的结果。程序如下:int main(main) long int n,i,nSum=0,nX=1; /*声明变量*/ clrscr(); printf(Please input (n):n); scanf(%d,&n); for (i=1;i=n;i+) nX*=i; /* process 循环控制结构 */ printf(n! is %d,nX); return 0;运行结果如下:2.有关变量的属性实验(静态、动态、全局、局部等方面)。具体实例如下:(1) 仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:程序如下:int main(void) int nX=1; /*全局变量,但是当遇到内部重新初始化时,以内部的为准*/ void prt(void); /*调入外部函数*/ int nX=3; /*再一次初始化*/ prt(); printf(The second nX is %dn,nX); printf(The first nX is %dn,nX); return 0;void prt(void) int nX=5; /*重新初始化*/ printf(The third nX is %dn,nX); 运行结果如下: (2) 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:#define LOW 11 /*采用宏定义,方便程序运行*/#define HIGH 23#define CHANGE 12int i=LOW; /*外部变量*/int main(void) int workover(int i); int reset(int i); int i=HIGH; reset(i/2.5); printf(i=%dn,i); reset(i=i/3); printf(i=%dn,i); reset(i/2); printf(i=%dn,i); workover(i); printf(i=%dn,i); return 0;workover(int i); i=(i%i+)*(i*i)/(2*i)+4); printf(i=%dn,i); return (i);reset(int i); i=i=CHANGE?LOW:HIGH+; return (i); 该程序有误,更改为:#include #define LOW 11#define HIGH 23#define CHANGE 12int i=LOW;int main(void) int i=HIGH; int reset(int i); clrscr(); reset(i/2.5); printf(i=%dn,i); reset(i=i/3); printf(i=%dn,i); reset(i/2); printf(i=%dn,i); workover(i); printf(i=%dn,i); return 0;int workover(int i) i=(i%i+)*(i*i)/(2*i)+4); printf(i=%dn,i); return (i);reset(int i) i=i=CHANGE?LOW:HIGH; return (i);运行结果如下: (3) 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。/*file1.c*/int last(void);int new(int);int reset(void);exter int i;int main(void)int i,j;i=reset();for (j=1;j=3;j+) printf(“i=%dtj=%dn”,i,j);printf(“next(i)=%dt”,next(i);printf(“last(i)=%dn”,last();printf(“new(i+j)=%dn”,new(i+j);int next(void)return (i+);return 0;/*file2.c*/static int i=10;fast(void)rturn (i-=1_);new(int i)static int j=-5;return (i=j+=+i);/*file3.c*/extern int i;reset()return (i);该程序有误,更改为:int last(void);int new(int);int reset(void);exter int i;int main(void) int i,j; i=reset(); for (j=1;j=3;j+) printf(i=%dtj=%dn,i,j); printf(next(i)=%dt,next(i); printf(last(i)=%dn,last(); printf(new(i+j)=%dn,new(i+j); int next(void) return (i+); return 0;static int i=10;fast(void) rturn (i-=1_);new(int i) static int j=-5; return (i=j+=+i);extern int i;reset() return (i);运行结果如下:3.预编译命令实验。具体实例如下:(1) 一般宏替换实验(教材例7-5);程序如下:#include#define P printf/*采用宏定义*/#define D %d#define F %fnint main(void) int m=5,n=8,k=11; float b=3.8,d=9.7,f=21.08; /*遇到D,F就换成%d,printf*/ P(D F,m,b);/*printf(%d %fn,m,b)*/ P(D F,n,d); /* printf(%d %fn,n,d)*/ P(D F,k,f); /* printf(%d %fn,k,f)*/ return 0;运行结果如下:(2) 带参数的宏替换(教材例7-7例7-12,习题7-8和习题7-9);例7-7:程序如下:#include#define MAX(num1,num2) (num1num2)?num1:num2 /*宏定义*/int main(void) int m,n,max; printf(Input two number:); scanf(%d%d,&m,&n); max=MAX(m,n); /*宏展开:(mn)?m:n*/ /*宏调用*/ printf(max = %dn,max); return 0;运行结果如下:例7-8:在带参宏定义中,形参是标识符。宏调用中,实参可以是任何合法表达式。程序如下:#include#define SQ(n) (n)*(n)int square(int number);int main(void) int m,nSquare; clrscr(); printf(Input a number:); scanf(%d,&m); nSquare=SQ(m+1); printf(nSquare=%d square=%dn,nSquare,square(m+1); return 0;int square(int number) return (number*number);运行结果如下:(3) 习题7-11和习题7-12;习题7-11:程序如下:#define exchange(ch1,ch2) ch1-32int main(void) char ch1,ch2; printf(Please input two chars:n); scanf(%c,%c,&ch1,&ch2); printf(Lower char is %cn,ch1); ch2=exchange(ch1,ch2) ; printf(Upper char is %cn,ch2); return 0;运行结果如下:习题7-12:程序如下:#include#define change(i,j) if(ij) temp=i;i=j;j=temp; else temp=i;i=j;j=temp;int main(void) int i,j,temp; clrscr(); pr

温馨提示

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

评论

0/150

提交评论