早教吧 育儿知识 作业答案 考试题库 百科 知识分享

pascal编程分类统计身高人数题目描述茉班有n个同学,身高均在100cm到150cm之间,现给出这n个同学的身高,要求按身高由低到高顺序输出各身高段有多少名同学,若茉一身高值没有学生,则

题目详情
pascal编程
分类统计身高人数 题目描述
茉班有n个同学,身高均在100cm到150cm之间,现给出这n个同学的身高,要求按身高由低到高顺序输出各身高段有多少名同学,若茉一身高值没有学生,则不输出。
输入格式
第一行一个整数n(30<=n<=50),表示有n个同学;
接下来有n行每行1个身高数据,均为大于等于100而小于等于150的自然数。
输出格式
若干行,每行两个数:前者为身高,后者为人数,以1个空格隔开;
若某身高人数为0,则不用输出该身高。
按身高由低到高输出。
样例输入
30
101
118
120
130
133
119
137
122
135
141
101
111
149
123
142
137
129
120
148
135
100
126
147
109
130
147
116
118
117
104
样例输出
100 1
101 2
104 1
109 1
111 1
116 1
117 1
118 2
119 1
120 2
122 1
123 1
126 1
129 1
130 2
133 1
135 2
137 2
141 1
142 1
147 2
148 1
149 1
▼优质解答
答案和解析
测试可行。不是我不仁,用了不结贴,死全家!
program Sort;
var
n, i, j, k: Byte;
stature: array[1..50] of Byte;
begin
{输入数据请存储到ini.txt文件里}
Assign(Input, 'in.txt');
Reset(Input);
Assign(Output, 'out.txt');
Rewrite(Output);
{读入人数n}
Readln(n);
if (n < 30) or (n > 50) then Exit;
{读入身高数据}
for i := 1 to n do
begin
Readln(stature[i]);
if (stature[i] < 100) or (stature[i] > 150) then Exit;
end;
{冒泡排序}
for i := 1 to n - 2 do
for j := 1 to n - i do
if stature[j] > stature[j + 1] then
begin
k := stature[j];
stature[j] := stature[j + 1];
stature[j + 1] := k;
end;
{统计重复出现的次数}
i := 1;
j := stature[1];
k := 0;
while i <= n do
begin
if j = stature[i] then Inc(k)
else begin
Writeln(j, ' ', k);
j := stature[i];
k := 1;
end;
Inc(i);
end;
Writeln(j, ' ', k);
end.
看了 pascal编程分类统计身高...的网友还看了以下: