C语言实验五

  • 格式:doc
  • 大小:66.50 KB
  • 文档页数:7

下载文档原格式

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

实验5 模块化程序设计

一、实验目的和要求

1.掌握C语言函数定义及调用的规则。

2.理解参数传递的过程。

3.理解函数的递归调用。

4.掌握库函数的调用方法。

5.理解变量的作用域和生存期。

6.了解编译预处理命令的使用。

二、实验内容和步骤

1.阅读并分析下面的程序,并按要求改写程序。

#include

main()

{

int max,a,b;

printf("Please enter 2 numbers:(a,b)");

scanf("%d,%d",&a,&b);

if(a>b)

max=a;

else

max=b;

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

}

(1)该程序的主要功能是什么?

(2)自定义函数fun1()实现该程序的功能,要求在主函数内实现数据的输入和输出,部分代码已经给出,请补充完整。

#include

main()

{

int max,a,b;

/*函数的声明语句*/

printf("Please enter 2 numbers:(a,b)");

scanf("%d,%d",&a,&b);

/*函数的调用语句*/

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

}

int fun1( )/*函数头*/

{

int max;

if(x>y)

max=x;

else

max=y;

/*函数的返回语句*/

}

(3)调试运行该程序,并记录输出结果。

2.上机调试下面的程序。

#include

main()

{

float x,y;

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

f(x,y);

}

void fun2(float a,float b)

{

float c;

if(b>0)

c=a+b;

else

c=a-b;

printf("%f",c);

}

(1)记录系统给出的出错信息,并指出出错原因。

(2)如果将该函数定义为float fun2(float a,float b),该程序应该如何改变?

(3)调试运行该程序,并记录输出结果。

3.上机调试下面程序,改正其不合理之处。

main()

{

int x,n,s;

s=power(x,n);

}

power(y)

{

int i,p=1;

for(i=1;i<=n;i++)

p=p*y;

}

4.编写一个函数,计算x y,用主函数进行调用。

(1)在主函数里,实现数据的输入和输出;

(2)函数的头部的定义,注意函数的形参个数和类型,函数的返回类型;

(3)函数体的定义,注意返回语句的用法。

5.编写程序,用递归的方法求1+2+3+…+n,可设递归函数为fun5()。

(1)递归结束条件为n=0;

(2)递推公式为n+fun5(n-1)。

6.编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。

(1)注意递归结束条件和递推公式;

(2)动态的显示递归函数被调用的轨迹,即每次要打印出变量的变化情况。

7.分析下面的程序,并记录输出结果。

#include

main()

{

int x=2,y=3;

void fun7();

printf("x=%d,y=%d\n",x,y);

fun7();

printf("x=%d,y=%d\n",x,y);

fun7();

}

void fun7()

{

static int x=1;

int y=10;

x=x+2;

y=y+x;

printf("x0=%d,y0=%d\n",x,y);

}

(1)分析自动变量的作用域和生存期。

(2)分析静态变量的作用域和生存期。

8.分析下面的程序,并记录其执行结果。

#include

main()

{

void fun8x(),fun8y();

extern int x,y;

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

y=100;

fun8x();

fun8y();

}

void fun8x()

{

extern int x,y;

x=110;

printf("2:x=%d\ty=%d\n",x,y);

}

int x,y;

void fun8y()

{

printf("3:x=%d\ty=%d\n",x,y);

}

(1)分析外部变量的作用域和生存期。

(2)注意extern关键字的用法。

9.写出下面程序的输出结果。

#include

#define PI 3.1415

#define FU(K) K+PI

#define PRINT(s) printf("%d\t",(int)(s))

void main()

{

int x=3;

PRINT(x*FU(1));

}

(1)分析#include命令的用法。

(2)分析#define命令的用法。

10.调用库函数,随机生成100~200之间的整数。

11.编写一个函数fun11(),输入3个顶点坐标,求ΔABC的面积。

对应答案:实验5 模块化程序设计

1.参考答案

(1)该程序的主要功能是:从键盘上输入两个整数,并求出其中的最大值。

(2)自定义函数fun1()实现该程序的功能,要求在主函数内实现数据的输入和输出,部分代码已经给出,请补充完整。

#include

main()

{

int max,a,b;

int fun1(int,int); /*函数的声明语句*/

printf("Please enter 2 numbers:(a,b)");

scanf("%d,%d",&a,&b);