实 验 报 告
(2018 / 2019 学年 第 一 学期)
课程名称
高级语言程序设计A(B0300311S)
实验名称
实验三 数组、指针与字符串实验
实验时间
2018
年
月
日
指导单位
计算机学院、软件学院、网络空间安全学院
指导教师
学生姓名
班级学号
学院(系)
专 业
PAGE 1
实 验 报 告
实验名称
实验三 数组、指针与字符串实验
指导教师
实验类型
综合
实验学时
2
实验时间
实验目的和要求
(1)重点掌握一维数组的定义与使用,能通过函数的定义与调用实现一维数组中的常用和经典算法。会正确定义一级指针,理解其存储地址的实质,并且会利用一级指针来访问一维数组的元素。
(2)综合运用函数、数组和指针的知识,理解函数中的一维数组形式参数实质为一级指针变量形式参数,在调用时提供的实参数组名实质上传递的是数组首地址的参数传递(传地址)。
(3)理解值形式参数与指针形式参数的区别,通过跟踪调试理解传值与传地址的不同,及指针形参如何改变对应的实参变量。理解指针与指针所指向的内容之间的关系,理解指针间接引用的实质。
(4)正确使用字符数组及字符指针处理字符串。
二、实验环境(实验设备)
硬件: 微型计算机
软件: Windows 操作系统、Microsoft Visual Studio 2010
三、实验原理及内容
实验题目(1)【见实验教材实验五的题目1】:编写程序exp5_1.c,在主函数中定义一维数组int array[10],自定义以下函数:输入数组元素,输出数组元素、求数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在(若存在,请输出下标)、给数组元素排序,要求在主函数中对各子函数进行调用和测试。
实验解答:
写出完整的源程序代码并做适当注释:
= 2 \* GB3 ② 运行一次程序,写出你输入的数据以及程序每步的输出结果(从键盘输入的内容用斜体字):
实验题目(2)【见实验教材实验六的题目2】:编程exp6_2.c,现有整型变量x,y(初始化为1和2),调用交换函数以期实现两个值的交换。下表中4种不同的定义及调用分别进行测试并填写表格。
表1 拟实现交换的四种方法
原型声明
void swap1( int , int );
void swap2( int *, int );
void swap3( int *, int *);
void swap4( int *, int *);
调用
语句
swap1( x , y );
swap2( &x , y );
swap3( &x , &y );
swap4( &x , &y );
函数
定义
void swap1(int a, int b )
{ int temp= a;
a = b;
b = temp;
}
void swap2(int *a, int b )
{ int temp= *a;
*a = b;
b = temp;
}
void swap3(int *a, int *b )
{ int temp = *a;
*a = *b;
*b = temp;
}
void swap4(int *a, int *b )
{ int *temp = a;
a=b;
b=temp;
}
实验解答:
= 1 \* GB3 ① 主函数代码如下:
int main()
{
int x=1,y=2;
swap1(x,y); /*此处依次换成另外3种调用进行观察,其余代码不变*/
printf("x=%d,y=%d\n",x,y);
return 0;
}
通过修改以上主函数中调用函数的语句,按表1更新对应的函数调用,分别运行程序,填写下表:
函数原型
输出结果
是否交换
原因分析
void swap1( int a, int b );
void swap2( int *a, int b );
void swap3( int *a, int *b );
void swap4(int *a, int *b );
利用F10和F11功能键进行单步跟踪,4次运行观察各变量的变化情况,填写下表:
跟踪点(黄色箭头所指行)
实参x的值
实参y的值
跟踪点(黄色箭头所指行)
形参a(或*a)的值
形参b(或*b)的值
swap1调用行
swap1函数左大括号处
a的值:
b的值:
swap1后的printf行
swap1函数右大括号处
a的值:
b的值:
swap2调用行
swap2函数左大括号处
*a的值:
b的值:
swap2后的printf行
swap2函数右大括号处
*a的值:
b的值:
swap3调用行
swap3函数左大括号处
*a的值:
*b的值:
swap3后的printf行
swap3函数右大括号处
*a的值:
*b的值:
swap4调用行
swap4函数左大括号处
*a的值:
*b的值:
swap4后的printf行
swap4函数右大括号处
*a的值:
*b的值:
实验题目(3)【见实验教材实验七的题目3】:编写程序exp7_3.c,从键盘读入一个字符串,去掉其中所有的空格得到一个新串后再输出(只能定义一个字符数组,不可以定义两个字符数组,可以根据编程需要定义字符指针以及其他变量)。
实验解答:
写出完整的源程序代码并做适当注释:
②按表中所给测试用例输入观察对应输出结果:
测试用例要求
输入的原始串
输出结果串
串中空格每处只有一个
A bcd 12 45 t
至少有一处有连续多个空格字符
A bc 12 t
字符串最前面是4个空格
A b 12 t
你自己设计的测试用例
四、实验小结(包括问题和解决方法、心得体会、意见与建议、实验出错信息及解决方案等)
(一)实验中遇到的主要问题及解决方法
(二)实验心得
(三)意见与建议(没有可省略)
五、支撑毕业要求指标点
六、指导教师评语
评 分 细 则
评分项
优秀
良好
中等
合格
不合格
遵守实验室规章制度
学习态度
算法思想准备情况
程序设计能力
解决问题能力
课题功能实现情况
算法设计合理性
算法效能评价
回答问题准确度
报告书写认真程度
内容详实程度
文字表达熟练程度
其它评价意见
本次实验能力达成评价(总成绩)
批阅人
日期
- 下载文档
- 收藏
- 0