四川师范大学数学与软件科学学院程序设计实验报告实验六.docx
- 文档编号:4204288
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:12
- 大小:161.57KB
四川师范大学数学与软件科学学院程序设计实验报告实验六.docx
《四川师范大学数学与软件科学学院程序设计实验报告实验六.docx》由会员分享,可在线阅读,更多相关《四川师范大学数学与软件科学学院程序设计实验报告实验六.docx(12页珍藏版)》请在冰豆网上搜索。
四川师范大学数学与软件科学学院程序设计实验报告实验六
数学与软件科学学院实验报告
1、实验目的
(1)了解和掌握C语言环境下模块化程序设计的基础----基于函数模块的程序设计技术;
(2)复习C语言程序的基本结构特点,了解基于函数模块的程序模块及其调用关系、过程;
(3)函数的声明、定义、使用方法;
(4)对各种变量属性的使用方法;
(5)对C语言中常用的预编译命令的基本掌握。
二、实验内容
1.函数的声明、定义和使用方法。
具体实例如下:
(1)编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:
72=2*2*2*3*3;
#include
main()
{
inti,n;
printf("pleaseinput:
");
scanf("%d",&n);
while(n>=2)
{
for(i=2;i<=n;i++)
{
if(n%i==0)
{
printf("%d\t",i);
n=n/i;
break;
}
}
}
}
(2)试编写求n!
的函数,并求n=7的结果。
#include
main()
{
inti,j,n,s;
printf("pleaseinputn:
");
scanf("%d",&n);
s=1;
for(i=2;i<=n;i++)
{
s=s*i;
}
printf("%d",s);
}
具体要求如下:
(1)编写程序通过调试获得正确结果;
(2)分析函数的声明、定义和使用方法;
(3)分别分析函数调用时的参数传值调用方法。
2.有关变量的属性实验(静态、动态、全局、局部等方面)。
具体实例如下:
(1)仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:
#include
main()
{/******(a)******/
intx=1;
{/******(b)******/
voidprt(void);
intx=3;
prt();
printf("Thesecondxid%d\n",x);
}/******(c)******/
printf("Thefirstxis%d\n",x);
}
voidprt(void)
{/******(d)******/
intx=5;
printf("Thethirdxis%d\n",x);
}/******(e)******/
(2)仔细分析下列程序,是否有错误之处?
然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:
#include
#defineLOW11
#defineHIGH23
#defineCHANGE12
inti=LOW;
main()
{
intworkover(inti);
intreset(inti);
inti=HIGH;
reset(i=i/2.5);
printf("i=%d\n",i);
reset(i=i/3);
printf("i=%d\n",i);
reset(i/2);
printf("i=%d\n",i);
workover(i);
printf("i=%d\n",i);
}
workover(inti)
{
i=(i%i++)*(i*i)/(2*i)+4;
printf("i=%d\n",i);
return(i);
}
reset(inti)
{
i=i<=CHANGE?
LOW:
HIGH;
return(i);
}
(3)以下程序希望打印5行"*****",能否做到?
为什么?
#include
main()
{
voidprt();
inti;
for(i=0;i<5;i++)
{
prt();
}
}
voidprt()
{
intj;
for(j=0;j<5;j++)
{
printf("%c",'*');
}
printf("\n");
}
(4)分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。
#include
/*****file1.c*****/
intlast(void);
intnew(int);
intreset(void);
inti;
main(void)
{
inti,j;
i=reset();
for(j=1;j<=3;j++)
{
printf("i=%d\t,j=%d\n",i,j);
printf("next(i)=%d\t",next(i));
printf("last(i)=%d\n",last());
printf("new(i+j)=%d\n",new(i+j));
}
}
intnext(void)
{
return(i++);
}
/******file2.c******/
staticinti=10;
last(void)
{
return(i=i-1);
}
new(inti)
{
staticintj=-5;
return(i=j+=++i);
}
/*****file3.c*****/
inti;
reset()
{
return(i);
}
3.预编译命令实验。
具体实例如下:
(1)一般宏替换实验(教材例4.20和4.23);
#include
ints(intn);
main()
{
inti=1;
while(i<=5)
printf("%d\n",s(i++));
}
ints(intn)
{
return(n*n);
}
(2)带参数的宏替换(教材例4.25和习题4.15);
#include
#definePI3.1415926
#defineR2.0
#defineAREAPI*R*R
main()
{
printf("Theareais:
%f\n",AREA);
}
(3)文件包含(#include""和#include<>)。
#include
#defineS(n)((n)*(n))
inti;
main()
{
while(i<=5)
printf("%d\n",S(i++));
}
三、实验准备
(1)编写所选实验题目的程序代码和流程图;
(2)检查源程序并给出其可能的运行结果说明。
4、实验步骤
(1)上机验证所选题目,并做相应测试和分析;
(2)进行实验分析;
(3)总结基于函数、宏等技术的模块化程序设计和实现方法及其经验;
(4)编写实验报告。
5、实验结果
(1)编写一个函数,它可以求出给定数的所有因子,如下形式显示其结果:
72=2*2*2*3*3;
(2)试编写求n!
的函数,并求n=7的结果。
2.有关变量的属性实验(静态、动态、全局、局部等方面)。
具体实例如下:
(1)仔细分析以下程序的执行结果,然后上机运行如下程序段,并对各个变量的属性及其使用结果进行比较分析:
(2)仔细分析下列程序,是否有错误之处?
然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:
有错误,自定义函数后面不用加;HIGH后面应该加上自增符号.
(3)以下程序希望打印5行"*****",能否做到?
为什么?
不能,因为i是一个全局变量,当函数调用i后,i执行自定义函数后就直接变成了5,故只能打印一行.
(4)分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。
定义i时,i前面不加exter,自定义函数中的fast改为last,自定义函数中的rturn(i-=1_)改为return(i=i-1).
3.预编译命令实验。
具体实例如下:
(1)一般宏替换实验(教材例4.20和4.23);
(2)带参数的宏替换(教材例4.25和习题4.15);
(3)文件包含(#include""和#include<>)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川 师范大学 数学 软件 科学学院 程序设计 实验 报告