第一范文网 - 专业文章范例文档资料分享平台

C语言实验五

来源:用户分享 时间:2025/8/24 7:12:42 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验5 模块化程序设计

一、实验目的和要求

1.掌握C语言函数定义及调用的规则。 2.理解参数传递的过程。 3.理解函数的递归调用。 4.掌握库函数的调用方法。 5.理解变量的作用域和生存期。 6.了解编译预处理命令的使用。 二、实验内容和步骤

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

#include main() {

int max,a,b;

printf(\ scanf(\ if(a>b) max=a; else

max=b;

printf(\}

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

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

#include main() {

int max,a,b;

/*函数的声明语句*/

printf(\ scanf(\

/*函数的调用语句*/ printf(\}

int fun1( )/*函数头*/ {

int max; if(x>y) max=x; else

max=y;

/*函数的返回语句*/ }

(3)调试运行该程序,并记录输出结果。 2.上机调试下面的程序。

#include main() {

float x,y;

scanf(\ f(x,y);

}

void fun2(float a,float b) {

float c; if(b>0) c=a+b; else

c=a-b;

printf(\}

(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.编写一个函数,计算xy,用主函数进行调用。 (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(\ fun7();

printf(\ fun7(); }

void fun7() {

static int x=1; int y=10; x=x+2; y=y+x;

printf(\}

(1)分析自动变量的作用域和生存期。 (2)分析静态变量的作用域和生存期。 8.分析下面的程序,并记录其执行结果。

#include main() {

void fun8x(),fun8y(); extern int x,y;

printf(\ y=100; fun8x(); fun8y(); }

void fun8x() {

extern int x,y; x=110;

printf(\}

int x,y;

void fun8y() {

printf(\}

(1)分析外部变量的作用域和生存期。 (2)注意extern关键字的用法。 9.写出下面程序的输出结果。

#include #define PI 3.1415 #define FU(K) K+PI

#define PRINT(s) printf(\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(\ scanf(\

max=funl(a,b); /*函数的调用语句*/ printf(\}

int fun1(int x,int y) /*函数头*/ {

int max; if(x>y) max=x; else

max=y;

return max; /*函数的返回语句*/ }

(3)运行结果

Please enter 2 numbers:(a,b) 4,5 max=5

2.参考答案

(1)出错信息:Linker error:Undefined symbol '_f' in model。

错误原因是:函数调用错误,调用函数fun2()却调用了没有定义的函数f()。 (2)程序应该改为

#include main() {

float x,y;

float fun2(float a,float b); scanf(\

printf(\}

float fun2(float a,float b) {

float c; if(b>0) c=a+b; else

c=a-b; return c; }

(3)运行结果

3,-4 x+|y|=7

3.改正后的程序如下。

main() {

int x,n,s;

int power(int x,int n);

printf(\ scanf(\ s=power(x,n);

printf(\ =%d\}

int power(int x,int n) {

int i,p=1;

for(i=1;i<=n;i++) p=p*x; return p;

搜索更多关于: C语言实验五 的文档
C语言实验五.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4f5af48nxb9uewu2soe1_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top