C语言程序设计实验四函数
实验四 函数
实验目的及要求
掌握C语言函数定义及调用的规则;
理解参数传递的方式;
理解函数的递归调用;
掌握库函数的调用方法;
理解变量的作用域和生存期;
实验内容及步骤
阅读并分析下面的程序,并按要求改写程序。
#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);
}
记录系统给出的出错信息,并指出出错原因。
如果将该函数定义为float fun2(float a, float b),改程序应该如何改变?
#include
void main()
{
float x,y;void fun2 (float a, float b) ;
scanf("%d, %d", &x,&y);
fun2 (x,y);
}
void fun2(float a, float b)
{
float c;
if(b>0)
c=a+b;
else
c=a-b;
printf("%f",c);
}
调试运行程序记录输出结果。
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.分析如下程序,记录输出结果。
#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);
}
写出程序输出结果;
分析自动变量的作用域及生存期;
分析静态变量的作用域及生存期。
5.分析如下程序,记录输出结果。
#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\t