实验4数组1

更新时间:2023-09-14 00:20:01 阅读量: 教学研究 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南昌大学实验报告

学生姓名: 学 号: 专业班级:

√ 设计 □ 创新 实验日期: 实验成绩: 实验类型:□ 验证□综合 □

一、实验名称

实验4 数组

二、实验目的

1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋

值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。

2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。

3.掌握与数组相关的算法,包括排序算法和查找算法等。

三、实验内容

有关数组的程序设计

四、实验环境

PC微机

DOS操作系统或 Windows 操作系统 Turbo C 程序集成环境

五、实验步骤

1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求:

(1)数组为整型数组(10个元素)。

(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。

(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。

(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?

2.编程实现:在给定的字符串中查找满足条件的第一个字符。 要求:

(1)字符串采用初始化的方式处理。

(2)通过scanf函数读入一个任意字符。

(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。

3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ? n),形成n ? n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。

例如:原始数据: n=4 结果数据: 1 2 3 4 8 11 14 16 3 5 9 10 3 5 9 10 8 11 14 16 1 2 3 4 15 2 7 6 15 2 7 6 要求:

(1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。

(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。

(4)输入一个n ? n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。

(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。

(6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。

(7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。

4.编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。

要求:

(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。

(2)用scanf函数输入一个要找的数。

(3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。

(4)任意输入一些数据,检查程序的正确性。

(5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。最后通过测试几组差别较大的数据检查程序的正确性。

(6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。

5.编程实现:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分。输入/输出格式举例如下:

Input(输入成绩):

65 87 68 56 78 83 94 67 85 91 71 75 69 84 89 Output(输出结果) :

65 87 68 56 78 70.5 83 94 67 85 91 84.0 71 75 69 84 89 77.5 219.0 256.0 204.0 258.0 232.0 0 average:

73.0 85.3 68.0 86.0 77.3 要求:

(1)数组类型为实型,输入成绩由scanf函数实现。 (2)输出已输入的原始成绩数据(3×5)。

(3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。

(4)j计算单科平均成绩后输出。

6.编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr()用于统计一个字符串的长度。编写函数cmpStr()用于判断两个字符串的大小。

要求:

(1)不允许使用字符处理库函数。

(2)在主函数以初始化的方式输入两个字符串str1、str2。调用函数lenStr()计算字符串的长度。

(3)调用函数cmpStr()判断两个字符串的大小,如果str1大于等于str2,调用函数catStr()进行两个字符串的连接,将str1连接在str2后,否则,将str2连接在str1后,调用函数lenStr()统计连接后的字符串长度。

(4)在主函数中输出两个原始字符串和各自的长度以及处理后字符串及其长度。

六、实验数据及处理结果

/*写出各个习题的算法(用流程图或自然语言表示)、程序、结果并能对结果的正确性及产生的问题进行适当分析,重点说明实验遇到的难点及解决办法。注意:每题以下面格式列出:

习题五: [算法设计] [程序实现] [测试结果] [分析]

红色文本请在写实验报告时删去!*/

七、简答及选做题

1、小结冒泡排序及选择排序方法及有关数组和字符串的程序设计方法。

2、模拟文曲星上的猜数游戏,先由计算机随机生成一个各位相异的4位数字,由用户来猜,根据用户猜测的结果给出提示:xAyB

其中,A前面的数字表示有几位数字不仅数字猜对了,而且位置也正确,B前面的数字表示有几位数字猜对了,但是位置不正确。

最多允许用户猜的次数由用户从键盘输入。如果猜对,则提示“Congratulations!”;如果在规定次数以内仍然猜不对,则给出提示“Sorry, you haven't guess the right number!”。程序结束之前,在屏幕上显示这个正确的数字。

八、 实验总结及体会

本文来源:https://www.bwwdw.com/article/djdh.html

Top