数组程序设计
- 格式:docx
- 大小:115.71 KB
- 文档页数:8
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)
延伸