求N个整数的平均数、众数和中位数 用pascal,我只学过pascal

学习 时间:2026-04-06 19:17:23 阅读:4550
求N个整数的平均数、众数和中位数 用pascal,我只学过pascal求N个整数的平均数,众数和中位数.小知识:* 众数 如有9个数:17 13 17 9 17 17 3 16 17  17出现的次数最多,即为这组数的众数.* 中位数 如有9个数:102 170 96 90 97 106 110 182 100  将这9个数按一定的顺序(从大到小或从小到大)排列后得到: 182 170 110 106 102 100 97 96 90  正中间的一个数是102,102是这组数的中位数. 而这10个数:106 99 104 120 107 112 33 102 97 100  按一定顺序排列后得到:120 112 107 106 104 102 100 99 97 33  正中间有两个数:104 102,中位数就是这两个数的平均数,即(104+102)/ 2 = 103.输入第一行为整数N(5

最佳回答

娇气的滑板

愉快的大山

2026-04-06 19:17:23

program DoingData;
var
n :longint;
sum:longint;
n1 :real;
n2 :longint;
n3 :real;
a :array[0。。1000] of longint;
f :array[0。。100] of longint;
procedure input();
var
i:longint;
begin
readln(n);
sum:= 0;
for i:= 1 to n do
begin
read(a[i]);
inc(f[a[i]]);
inc(sum,a[i]);
end;
end;
procedure print_n1();
begin
n1:= sum / n;
write(n1:0:2,' ');
end;
procedure print_n2();
var
max:longint;
i :longint;
begin
max:= f[1];
for i:= 2 to n do
if f[i] > max then
begin
max:= f[i];
n2:= i;
end;
write(n2,' ');
end;
procedure print_n3();
var
mid1:longint;
mid2:longint;
procedure qsort(s,e:longint);
var
i,j,mid:longint;
begin
i:= s;
j:= e;
mid:= a[(i + j) div 2];
while i mid do
inc(i);
while a[j] < mid do
dec(j);
if i s then qsort(s,j);
end;
begin
qsort(1,n);
if odd(n) then
writeln(a[(1 + n) div 2])
else
begin
mid1:= a[(1 + n) div 2];
mid2:= a[(1 + n) div 2 + 1];
n3:= (mid1 + mid2) / 2;
writeln(n3:0:1);
end;
end;
begin
input;
print_n1;
print_n2;
print_n3;
end。
再问: 还是错的,不信你看: 运行编号 用户 问题 结果 内存 耗时 语言 代码长度 提交时间 471692 pengbo 1180 答案错误11% 232 16 Pascal 2147 B 2012-01-25 07:52:50
再答: begin qsort(1, n); if odd(n) then writeln(a[(1 + n) div 2]) else begin ******** mid1:= a[(1 + n) div 2]; ******** mid2:= a[(1 + n) div 2 + 1]; n3:= (mid1 + mid2) / 2; writeln(n3: 0: 1); end; end; 有*的地方改成mid1:= a[n div 2]; mid2:= a[n div 2 + 1]; 再试试,应该对了
再问: 还是错的: 用户 问题 结果 内存 耗时 语言 代码长度 提交时间 pengbo 1180 答案错误11% 232 20 Pascal/Edit 2197 B 2012-01-26 07:45:59
再答: procedure print_n2(); var max: longint; i : longint; begin max:= f[1]; ******n2:= 1; 这里加上 for i:= 2 to n do if f[i] > max then begin max:= f[i]; n2:= i; end; write(n2, ' '); end;
再问: 还错的: pengbo 1180 答案错误22%
再答: 求网址,自己调
再问: oj。jzxx。net

最新回答共有2条回答

  • 烂漫的泥猴桃
    回复
    2026-04-06 19:17:23

    program DoingData;varn :longint;sum:longint;n1 :real;n2 :longint;n3 :real;a :array[0。。1000] of longint;f :array[0。。100] of longint;procedure input();vari:longint;beginreadln(n);sum:= 0;for i:= 1 to n dobeginread(a[i]);inc(f[a[i]]);inc(sum,a[i]);end;end;procedure print_n1();beginn1:= sum / n;write(n1:0:2,' ');end;procedure print_n2();varmax:longint;i :longint;beginmax:= f[1];for i:= 2 to n doif f[i] > max thenbeginmax:= f[i];n2:= i;end;write(n2,' ');end;procedure print_n3();varmid1:longint;mid2:longint;procedure qsort(s,e:longint);vari,j,mid:longint;begini:= s;j:= e;mid:= a[(i + j) div 2];while i mid doinc(i);while a[j] max then begin max:= f[i]; n2:= i; end; write(n2, ' '); end;再问: 还错的: pengbo 1180 答案错误22% 再答: 求网址,自己调再问: oj。jzxx。net

上一篇 八年级下册人教版物理复习提纲

下一篇 米兰新都橱柜怎么样