下面是小编为大家整理的一周回顾与作业(三)【优秀范文】,供大家参考。
一周回顾与作业(三)
比赛评分程序 问题第一层次:
有 6 个评委, 为选手打分, 选手的最终成绩是 6 个评委所打的平均分。
(利用赋值语句和顺序结构就可以完成)
问题第二层次:
有 6 个评委, 为选手打分, 去掉一个最高分和一个最低分, 选手的最终成绩是剩下 4 个分数的平均分。
(用“打擂台” 的方法和分支语句可以解决)
问题第三层次:
有 10 位选手参加了这次比赛, 谁是冠军? (用循环结构分析并解决)
问题第四个层次:
n 位选手, 将他们的成绩排名。(引入一维数组及排序算法)
冒泡排序:冒泡排序的基本思想是:
相邻的两个元素进行比较, 满足条件(与要排序的顺序相反)
就交换。
排序过程示例 待排序数据:
49
38
65
97
76
13
27 第一趟排序:
38
49
65
76
13
27
97 第二趟排序:
38
49
65
13
27
76
97 第三趟排序:
38
49
13
27
65
76
97 第四趟排序:
38
13
27
49
65
76
97 第五趟排序:
13
27
38
49
65
76
97 第五趟排序:
没有反序数据, 排序结束。
program mppx; const n=7; var a:array[1..n] of integer;
i,j,k,t:integer; begin
for i:= 1 to n do read(a[i]);
for i:=1 to n -1 do
for j:=n downto i+1 do
if a[j-1]<a[j] then{如果前面比后面小则交换}
begin t:=a[j-1];a[j-1]:=a[j];a[j]:=t end;
write("output data:");
for i:= 1 to n do write(a[i]:6);
writeln; end.
4
7
32
45
67
89
90 改变一句话可以实现
90
89
67
45
32
7
4 当然冒泡排序也可以从前向后找。
实现文件输入、 输出 program mppx; const n=7; var a:array[1..n] of integer;
i,j,k,t:integer; begin
assign(input,"in.in");
reset(input);
assign(output,"out.out");
rewrite(output);
for i:= 1 to n do read(a[i]);
for i:=1 to n -1 do
for j:=n downto i+1 do
if a[j-1]>a[j] then
begin t:=a[j-1];a[j-1]:=a[j];a[j]:=t end;
write("output data:");
for i:= 1 to n do write(a[i]:6);
writeln;
close(input);
close(output); end. for i:=1 to n -1 do
for j:=1 to n-i do
if a[j]<a[j+1] then
begin t:=a[j];a[j]:=a[j+1];a[j+1]:=t end; 输入:
23 54 7 9 12 90 输出:
90
54
23
12
9
7 如何改实现以下?
输入:
23 54 7 9 12 90 输出:
7
9
12
23
54
90 分析:
外循环其实就是决定了比多少轮 内循环决定比较多少次。
以 6 个数为例, 比 5 轮就可以 第一轮, 第一个同第二比, 第二个同第三个比, 前 6 个最小的放到 a[6]中, 比了 5 次第二轮, 第一同第二个比……最后是第四个同第五个比, 前 5 个最小的放 a[5],比了 4次 …… 大家可以看出, 内循环循环次数是改变的, 因此我们在设计是要考虑如何来改变内循环的次数, 这是利用外循环变量的改变。
循环题下标, 要注意测试两头, 不要出界
相关热词搜索: 一周回顾与作业(三) 作业 回顾 优秀版权所有:顶伦文库网 2019-2025 未经授权禁止复制或建立镜像[顶伦文库网]所有资源完全免费共享
Powered by 顶伦文库网 © All Rights Reserved.。备案号:豫ICP备19021658号-1