C48A实验报告3_工程认证版20180905_朱立华编写V3_限定修改

来源:工作范文网 时间:2020-11-21 09:50:01

实 验 报 告

(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