C语言信息与计算科学实验六.docx
- 文档编号:17976352
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:13
- 大小:314.90KB
C语言信息与计算科学实验六.docx
《C语言信息与计算科学实验六.docx》由会员分享,可在线阅读,更多相关《C语言信息与计算科学实验六.docx(13页珍藏版)》请在冰豆网上搜索。
C语言信息与计算科学实验六
数学与软件科学学院实验报告
课程名称:
C语言程序设计 专业:
信息与计算科学
实验编号:
实验六 指导教师:
姓名:
学号:
实验得分
一、实验目得
(1)了解与掌握C语言环境下模块化程序设计得基础---—基于函数模块得程序设计技术;
(2) 复习C语言程序得基本结构特点,了解基于函数模块得程序模块及其调用关系、过程;
(3)函数得声明、定义、使用方法;
(4)对各种变量属性得使用方法;
(5) 对C语言中常用得预编译命令得基本掌握。
二、实验内容
函数得声明、定义与使用方法。
具体实例如下:
(1)编写一个在屏幕上画一条正弦曲线得函数;
(2)编写一个函数,它可以求出给定数得所有因子,如下形式显示其结果:
72=2*2*2*3*3;
(3) 分别写出一个求N个数得最大公约数与最小公倍数得递归函数;
(4) 试编制n碟片hanoi塔得问题求解函数,并利用它求解4个盘片得结果;
(5) 试编写求n!
得函数,并求n=7得结果。
2。
有关变量得属性实验(静态、动态、全局、局部等方面)。
(1) 仔细分析以下程序得执行结果,然后上机运行如下程序段,并对各个变量得属性及其使用结果进行比较分析:
main()
{ /******(a)******/
int x=1;
{/******(b)******/
voidprt(void);
intx=3;
prt();
printf("Thesecondxis%d\n",x);
}/******(c)******/
printf("Thefirstxis%d\n",x);
}
void prt(void)
{/******(d)******/
int x=5;
printf("The thirdxis%d\n”,x);
}/******(e)******/
(2)仔细分析下列程序,就是否有错误之处?
然后分析其执行结果,上机验证并对各个变量得存储属性及其结果进行比较分析:
#define LOW 11
#define HIGH23
#define CHANGE 12
inti=LOW;
main()
{
intworkover(inti);
intreset(inti);
inti=HIGH;
reset(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行"*****”,能否做到?
为什么?
inti;
main()
{
voidprt();
for(i=0;i<5;i++)
prt();
}
voidprt()
{
for (i=0;i<5;i++)
printf("%c”,'*’);
printf("\n");
}
(4)分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量得存储属性。
/**********/
intlast(void);
intnew(int);
intreset(void);
exterinti;
main(void)
{
inti,j;
i=reset();
for(j=1;j〈=3;j++)
{
printf(“i=%d\tj=%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++);
}
}
/**********/
staticinti=10;
fast(void)
{
rturn(i-=1_);
}
new(inti)
{
static intj=—5;
return(i=j+=++i);
}
/**********/
externinti;
reset()
{
return(i);
}
3.预编译命令实验。
具体实例如下:
(1)一般宏替换实验;
(2)带参数得宏替换;
三、实验准备
(1)编写所选实验题目得程序代码与流程图;
(2)检查源程序并给出其可能得运行结果说明。
四、实验步骤及结果
1、
(1)编写一个函数,它可以求出给定数得所有因子,如下形式显示其结果:
72=2*2*2*3*3;
程序代码如下:
运行结果:
分析:
此程序根据最小公倍数与辗转相除法写、
(2)分别写出一个求N个数得最大公约数与最小公倍数得递归函数;
运行结果:
分析:
此程序采用得就是辗转相除法,根据数学上面得只就是求得最大公约数以及最小公倍数。
(3)试编制n碟片hanoi塔得问题求解函数,并利用它求解4个盘片得结果;
程序如下:
结果如下:
分析:
(1)以C为辅助将A杆上面得n-1张盘移到B杆hanoi(n—1,A,B,C);
(2)将n张盘从杆A移到C move(n,A,C)(3)以A杆为辅助将B杆上n-1移到C上 hanoi(n-1,B,C,A)
(4)试编写求n!
得函数,并求n=7得结果、
程序如下:
分析:
fact(num—1)运用另一个函数进行嵌套。
2、
(1)上机调试结果
修改后得程序如下:
分析:
分程序也要用花括符括起来、
(2)上机调试结果
该程序有误,修改为:
#include
h>
#defineLOW11
#defineHIGH23
#define CHANGE12
inti=LOW;
intmain(void)
{
inti=HIGH;
intreset(inti);
clrscr();
reset(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);
return0;
}
int workover(int i)
{
i=(i%i++)*((i*i)/(2*i)+4);
printf("i=%d\n",i);
return(i);
}
reset(inti)
{
i=i<=CHANGE?
LOW:
HIGH;
return(i);
}
分析;宏定义只就是字符串得替换,从define开始后面所有得非字符串内得宏都可以用宏定义得宏体替换。
(3)能
(4)上机调试结果
修改后程序如下:
分析错误原因:
fast写成了last,程序得冗杂太多,删除一些没用得。
3。
预编译命令实验、
(1)一般宏替换实验(教材例7-5);
程序如下:
注意;宏替换只就是字符串得替换。
(2)带参数得宏替换(教材例7-7)
注意:
带参宏中得参数就是形式参数,调用得时候就是实际参数。
五:
收获
(1)宏体本质就是字符串,它可以就是常量,变量或表达式。
(2)宏可以带参,在调用时,实参就是字符串。
(3)函数按照先声明,后定义,再使用得顺序避免了很多不应该得错误,(4)参数传值调用,空间使用了立即回收。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言信息与计算科学 实验六 语言 信息 计算 科学 实验