C语言程序设计实验报告——实验六
C语言程序设计实验报告——实验六
实验名称函数与编译预处理成绩姓 名学号班级实验地点9B506完成日期实验目的1.熟练掌握利用函数实现模块化的方法。?
2.掌握函数的定义与调用方法。?
3.掌握函数嵌套调用与递归调用的方法及程序执行流程。?
4. 掌握变量的作用域与生存期概念,并能利用变量的作用域与生存期有效地利用内存,解决实际问题。?
5.掌握多模块程序的编译、调试、运行方法。?
6.掌握宏定义与文件包含的作用与使用方法。
实
验
内
容
与
步
骤
实
验
内
容
与
步
骤
实
验
内
容
与
步
骤1. 调试运行以下程序。①此程序的功能是什么?②此程序出现了什么错误?为什么?修改
之??
void?main(?)?
{
float?a,b,c??
scanf("%f%f",&a,&b)??
c=add(a,b)??
printf("sum?is?%f\n",c)??
}?
float?add(float?x,float?y)?
{?
float?z??
z=x+y??
return(z)??
}?
2.调试运行以下程序,分析调用函数前后程序中变量?a?和?b?的值是否发生改变?为什么??
void?main(?)?
{?
int?a=3,b=6??
printf("a=%d,b=%d\n",a,b)??
exchange1(a,b)??
printf("a=%d,b=%d\n",a,b)??
}?
void?exchange1(int?x,int?y)?
{?
int?t??
t=x?x=y?y=t??
printf("x=%d,y=%d\n",x,y)??
}?
3.?调试运行以下程序。理解函数嵌套调用方法,并指出该程序的功能是什么??
long?int?fac(int?n)?
{?
long?int?p??
int?i??
p=1??
for(i=1?i<=n?i++)?
p=p*i??
return?(p)??
}?
int?cmn(int?m,int?n)?
{?
int?x??
x=fac(m)/(fac(n)*fac(m-n))??
return?(x)?
}?
void?main(?)?
{?
int?m,n,c??
scanf(“%d%d”,&m,&n)??
c=cmn(m,n)??
printf(“c=%d\n”,c)??
}?
4.?调试运行以下程序。分析程序中全局变量和局部变量值的变化。?
int?a=7,?b=9??
void?main(?)?
{?
int?i,?a=5,?x=80,?y=60??
for(i=1??i<4??i++)?
{?
printf("a=%d,?b=%d,?max=%d\n",?a,?b,?max(a,b))??
b+=6??
}?
printf("result_sum=%d\n",?sum(x,y))??
}?
int?sum(int?x,?int?y)?
{?
extern?int?m,?n??
int?temp??
temp=x+y+m+n+a+b??
return(temp)??
}?
int?m=12,?n=25??
int?max(int?a,?int?b)?
{?
return(a>b?a:b)??
}?
5.?调试运行以下程序。分析以下程序中静态局部变量的使用。?
int?fun(int?a)?
{?
int?b=0??
static?int?c=2??
b+=c??
c+=1??
return(a+b-c)?
}?
void?main(?)?
{?
int?a=3,?i??
for(i=0??i<3??i++)? ? printf("%4d",?fun(a))??
}?
6. 调试运行以下程序, 掌握内部函数和外部函数的使用。 该程序包括?2?个源程序文件(6_1.C?
和?6_2.C)。?
/*源程序名:6_1.C*/?
int?a=6??
extern?int?max(int?x,?int?y)?
{?
return(x>y?x:y)??
}?
/*源程序名:6_2.C*/?
#include??
extern?a??
extern?int?max(int?x,?int?y)??
void?main(?)?
{?
int?x=5,?y=7,?result1,?result2??
result1=(x+y)*a+max(x,y)*a??
a-=2??
result2=min(a,?max(x