1、安庆四中综合实践课程创新思维-程序设计 (论文)数组简谈年 级: 7 学 号: 未知 姓 名: 朱榕添 指导老师: 范江文 二零一七年一月2摘 要数组可以把一大批具有相同性质的数据进行读取,运算,比用简单变量处理大量数据要快速和简单的多。所以编辑程序中数组使用的次数不会太少,和它相关的排序也不会少,灵活运用数组才是得分的诀窍。关键词:数组;排序; 3目录一、 一维数组和二维数组1.思想(1) 何为一维与二维数组2.应用3.优缺点二、 数组排序间的转化1.思想(1) 数据排序2.应用3.优缺点三、 总结四、 附录1.致谢2.参考文献4一、一维数组和二维数组1.思想(1)何为一维和二维数组数组,顾
2、名思义,就是相同数据类型的元素按一定顺序排列的集合。一维数组是由数字组成的结构单一的数组,是二维数组和多维数组的基础。二维数组则是以数组作为数组元素的数组。2.应用例 1:旅馆开门【问题描述】旅馆里有 100 个房间,以 1 至 100 编号,第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是 2 的倍数的房间进行“相反处理”,以后每个服 务员都是如此, 问当第 n 个服务员来过后,哪几扇门是开的。【输入格式】由文件 door.in 给出输入数据。第一行有 1 个正整数 n (1n100)。表示来过几个服务员。【输出格式】将开着的门输出到文件 door.out。【输入样例】1005【
3、输出样例】1 4 9 16 25 36 49 64 81 100【分析】本题如果运用整型数组则难以辨别门是否开关,因为一扇门只有俩种状态,所以采用布尔型可更加快捷简单程序 1:(整型)program door;vara:array1.100of longint;i,j,n:longint;beginassign(input,door.in);reset(input);assign(output,door.out);rewrite(output);read(n);for i:=1 to n dobeginfor j:=1 to n doif j mod i=0 then inc(aj);end;
4、for i:=1 to n do if aimod 2=1 then write(i, );6close(input);close(output);end.那么,能不能采用布尔型以提高时间效率呢?可以发现,一扇门只有俩种状态。于是,我们采用布尔型更加快捷简单.程序 2:(布尔型)program door;vara:array1.100of Boolean;i,j,n:longint;beginassign(input,door.in);reset(input);assign(output,door.out);rewrite(output);read(n);for i:=1 to n dofor
5、 j:=i to n doif j mod i=0 then aj:=not(aj);for i:=1 to n do if ai then write(i, );close(input);7close(output);end.例 2:杨辉三角【问题描述】打印 n 行杨辉三角。【输入格式】由文件 yanghuisanjiao.in 给出输入数据。第一行有 1 个正整数 n (3n100),表示打印杨辉三角的行数。【输出格式】将杨辉三角输出到文件 yanghuisanjiao.out。【输入样例】3【输出样例】11 11 2 18【分析】本题如果运用一维数组则难以打印,因为杨辉三角有很多行,用一
6、维数组推过于缓慢,所以采二维数组可更加快捷简单程序:program yanghuisanjiao;vara:array1.10000,1.10000of qword;i,j,n:longint;beginassign(input,yanghuisanjiao.in);reset(input); assign(output,yanghuisanjiao.out);rewrite(output); readln(n);a1,1:=1;a2,1:=1;a2,2:=1; /单独处理前两行writeln(1);writeln(1 1);for i:=3 to n dofor j:= 1 to i dob
7、egin9if (j=i)or(j=1)then ai,j:=1else ai,j:=ai-1,j-1+ai-1,j;if j=i then writeln(ai,j)else write(ai,j, );end; /一行一行推,同时输出close(input);close(output);end.3.优缺点优点:编程复杂度低缺点:有些题目用二维数组过于多余,思维复杂度较高二数组排序间的转化1.思想(1)数组间经常有排序题,排序方法有很多种,灵活运用才是得分的关键102.应用例 3:明明的随机数【问题描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个
8、 1 到 1000 之间的随机整数(N100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成“去重” 与 “排序”的工作。【输入格式】输入有 2 行,第 1 行为 1 个正整数,表示所生成的随机数的个数:N第 2 行有 N 个用空格隔开的正整数,为所产生的随机数.【输出格式】输出也是 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数.第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数.【样例输入】1020 40 32 67 40 20 89 300 400 15【样例输出】815 20 32 40 67 89 300 400