数组程序设计

  • 格式:docx
  • 大小:115.71 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 实验学时:4学时

1.2 实验目的

1. 掌握一维数组、二维数组的概念及元素的各种表示方法;

2. 正确掌握数组输入输出等的基本操作;

3. 掌握函数访问数组的方法;

4. 字符串的处理方法;

5. 掌握数组中的一些常用算法,并能解决实际问题。

1.3 必做实验

【题目4-1】运用所学数组知识实现学生成绩的录入、评估、统计、排序及输出,要求如下:

(1)从键盘输入6个同学计算机课程期末考试成绩存放在数组中

算法分析:

1、定义一个能够存放6个整型数据的数组 int score[6];

2、使用循环结构为数组元素赋值

3、编写循环体,注意数据输入格式

(2)统计出平均分、最高分,以及统计超过平均分的人数

算法分析:

1、分析编程所需定义的变量,并未变量赋初值:总分int sum=0,平均分intave=0,最高分int max=0,以及超过平均分人数的变量int count=0

2、使用循环结构访问数组元素: score[0]~score[5]

3、在访问数组元素的过程中,完成总分、最高分的统计,在访问完所有数组数据后,计算平均分

4、再次访问数组,参照计算所得平均成绩统计超过平均分的人数

5、输出结果

(3)对学生成绩进行从高到低的排序(冒泡法),并把排序后的成绩输出。

算法分析:

冒泡法实现n个数据从小到大排序,结合算法对学生成绩进行从高到低的排序

输出排序结果

流程框图:

【实验4-1】代码及运行结果:(1)确定内部循环次数

确定外部循环次数

判定数据是否需要交换

(2)

(3)

【题目4-2】定义一个N行N列的二维整型数组,使数组左下三角元素中的值乘以n 。例如:若n的值为3,

a数组中的值为

6

5

4

8

3

2

7

9

1

则返回主程序后a数组中的值为

18

15

12

8

9

6

7

9

3

算法分析:

1、定义N行N列的二维数组,并手动为数组元素赋值

注意:注意数组维数不能为变量,但可以用宏定义的方式来进行数组维数的定义,例如:在头文件前进行宏定义#define N 3,程序中定义二维数组 intnum[N][N];

2、选择二维数组中的左下三角元素,并改变三角元素的值

3、以N行N列的形式输出二维数组,要求每输出N个数据,输出一个回车换行符

延伸扩展:

结合所学函数的知识,把改变左

函数实现。

【实验4-2】代码及运行结果:

延伸扩展

【题目4-3】掌握字符串操作,完成以下功能

(1)输入一串字符s,把s所指字符串中的内容逆置。例如:字符串中原有的字符串为:abcdefg,则执行后, 串s中的内容为:gfedcba。

算法分析:

键盘输入字符串

字符串输入可使用多种方法,例如:gets()函数,或者scanf(”%s”,s);等;

逆置字符串内容

字符串内容逆置也就是首字符和尾字符交换,交换次数取决于字符串的长度;

长度为n的字符串需要交换n/2次便可完成逆置;

获得字符串长度可使用strlen()函数;

输出逆置后字符串

可使用puts()函数,或者printf(“%s”,s);

(2)将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s 所指字符串中的内容为:"ABCDEFGHIJK",在t所指数组中的内容应是:"BDFHJ"。

算法分析:

输入字符串

定义存放新字符串的变量t,字符串长度至少为s长度的一半;

把字符串s对应位置上的字符赋值给变量t

运用循环结构为字符串t赋值,考虑t数组的下标应从0开始,到s长度的一半(可通过调用strlen函数获取字符串s的长度);

输出字符串t

延伸:把以上两个功能写成函数,在主函数中调用函数。

【实验4-3】代码及运行结果:

(1)

(2)

延伸