实验九 函数与预处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验九函数和预处理

实验时间:2010年12月3日

【实验目的】

1、掌握函数的定义、说明、调用方法,理解函数的返回值;

2、掌握函数实参、形参的对应关系和传递规则;

3、掌握函数的嵌套调用和递归调用的方法和结构形式;

4、掌握全局变量、局部变量、动态变量、静态变量的区别和用法;

5、理解内部函数和外部函数的含义,掌握内部函数和外部函数的定义和声明;

6、掌握宏定义的方法,掌握文件包含处理的方法,掌握条件编译的方法。【实验内容】

1、函数的定义和调用;

2、函数的递归调用和嵌套调用;

3、变量的作用域和存储类型、内部函数和外部函数;

4、编译预处理。

【实验步骤】

一、在E或F盘上建立以自己的学号命名的文件夹。

二、上机验证与分析题:

1、分析以下源程序中,函数的定义与说明格式,并上机运行验证结果:

/*文件名:ex9_1.c*/

/*功能:定义一个求两个整数的和的函数,并在主函数中调用*/

#include

#include

void main()

{

float sum(float a,float b); /*函数说明*/

float x,y;

printf("请输入两个数\n");

scanf("%f%f",&x,&y);

printf("两个数的和是:%f\n",sum(x,y));

getch(); /*使程序暂停,按任一键继续*/

}

float sum(float a,float b)/*定义一个函数sum()*/

{

float c;

c=a+b;

return(c);

}

2、程序的调试,常见错误分析:

上题中,sum函数的功能是求两个参数的和,并将求和的结果返回到主函数。

试进行下面的调试,观察所出现的错误。

①将main()函数中的函数声明去掉,编译时出现什么信息,产生的原因是什么?

②将main()函数最后的“}”去掉,编译时出现什么信息,产生原因是什么?

③将sum()函数的参数改为“float a ,b ”,编译时出现什么信息,产生原因是什么?

④将main()函数中的函数声明语句末尾的“;”去掉,编译时出现什么信息,产生原因是什么?

⑤、若将函数调用语句中的参数y去掉,编译时出现什么信息;产生原因是什么?

3、跟踪调试以下源程,注意函数调用的过程中形参、实参的关系。记录并分析结果;将形参a, b对应改为x,y,使得与实参变量同名,记录并分析结果。

/*文件名:ex9_2.c*/

int a ,b;

#include

void main()

{

int x=2,y=5;

int swap(int,int);

printf("(1) in main: x=%d,y=%d\n",x,y);

swap(x,y);

printf("(4) in main: x=%d,y=%d\n",x,y);

printf("(5) a=%d,b=%d\n",a,b);

}

swap(int a,int b)

{

int t;

printf("(2) in swap: a=%d,b=%d\n",a,b);

t=a;

a=b;

b=t;

printf("(3) in swap: a=%d,b=%d\n",a,b);

}

4、分析以下源程,并上机验证。此程序是输入长方体的长、宽、高l、w、h。求长方体的体积及三个面的面积。

/*文件名:ex9_3.c*/

#include

int s1,s2,s3;

int vs(int a,int b,int c);

void main()

{

int v,l,w,h;

printf("请输入长方体的长、宽、高:\n");

scanf("%d%d%d",&l,&w,&h);

v=vs(l,w,h);

printf("v=%d\n",v);

printf("s1=%d\n",s1);

printf("s2=%d\n",s2);

printf("s3=%d\n",s3);

}

int vs(int a,int b,int c)

{

int v;

v=a*b*c;

s1=a*b;

s2=b*c;

s3=a*c;

return v;

}

5、分析以下源程序,若输入2,3,上机验证程序的运行结果,分析函数嵌套调用的执行过程。

/*文件名:ex9_4.c*/

#include

long sum(int a ,int b);

long factorial(int n);

void main()

{

int n1,n2;

long a;

printf("请输入两个整数:\n");

scanf("%d%d",&n1,&n2);

a=sum(n1,n2);

printf("a=%ld",a);

}

long sum(int a,int b)

{

相关文档
最新文档