实验5说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5说明(函数和指针)
注意,在实验过程中,你编写的程序不要存放在桌面或者C盘,要存在D 盘上。
实验做完之后,会有4个文件:test5-1.c,test5-2.c,test5-3.c,test5-4.c,将这4个文件压缩为学号-姓名-实验5.rar,其中,学号是你自己的学号,姓名是你自己的姓名。
实验5提交截至时间:2011.6.7(第16周周二),22:00之前。
实验5提交地址:ftp://202.204.120.77/hanhui/计算机应用基础/homework/C 语言中各班文件夹中的实验5文件夹。
同学们在上机的时候,请选择开机菜单中的“Develop”项进入系统。
同学们在编写程序的时候,对于需要做注释的语句,要给出适当的注释。
第一部分
编写程序,程序名称命名为test5-1.c,完成如下任务:
(1)有很多物体,比如球体、立方体、圆柱体……,它们都有体积和表面积,要求求取哪个物体的体积和表面积,程序就必须输出那个物体的体积和表面积。
(2)编写球体子函数、立方体子函数、圆柱体子函数(思考一下,为什么形参中的体积和表面积必须用指针?),它们的功能是返回各自的体积和表面积。
(3)在主函数中调用三个子函数(思考一下,调用函数时,传递的实参是什么?),输入1时,输出球体的体积和表面积;输入2时,输出立方体的体积和表面积;输入3时,输出圆柱体的体积和表面积。
(4)在输入1、2或者3时,为了防止误输入,在主函数中要用do…while 语句实现纠错功能。(思考一下,为什么用do…while语句会比较好?)
第二部分
编写程序,程序名称命名为test5-2.c,完成如下任务:
(1)编写求最大值子函数max、求最小值子函数min、求和子函数sum,它们函数头如下所示:
float max(float *p, int n)
float min(float *p, int n)
float sum(float *p, int n)
(2)在主函数main中定义一个一维数组a(数组元素的个数由你来定),调用上述子函数,分别求出数组的最大值、最小值、总和,并且输入结果。(思考一下,调用子函数的时候,传递的实参是什么?)
第三部分
将下面一段程序存储为test5-3.c,读懂该程序的功能,并且对主函数和子函数中的变量、参数、以及执行语句做出注释,并且用注释的形式说明子函数的功能:
#include
#include
void main()
{
void inverse(char str[]);
char string[100];
printf("input string:");
gets(string);
inverse(string);
printf("inverse string:%s\n",string);
}
void inverse(char str[])
{
char t;
int i,j,m;
m=strlen(str);
for(i=0;i<=(m-1)/2;i++)
{
j=m-1-i;
t=str[i];
str[i]=str[j];
str[j]=t;
}
}
第四部分
将test5-3.c复制一份,重命名为test5-4.c:
(1)在test5-4.c中,将子函数inverse中的形参“char str[]”改写为指针类型“char *p”,子函数中相应的内容也要进行改写(思考一下,如何改写?)。
(2)主函数中子函数的声明部分也要改写。(思考一下,函数调用部分要不要改写?)