pascal编写一个程序
均分计算计算比赛的得分,求去掉最高分和最低分后的平均分。输出格式分两行,第一行,一个正整数n(n<=100),表示评委的人数第二行,n个正整数,分别表示n个评委为选手打的...
均分计算
计算比赛的得分,求去掉最高分和最低分后的平均分。
输出格式 分两行,第一行,一个正整数n(n<=100),表示评委的人数
第二行,n个正整数,分别表示n个评委为选手打的分数xi(xi<=100)
输出格式 一个小数,精确到小数点后两位 展开
计算比赛的得分,求去掉最高分和最低分后的平均分。
输出格式 分两行,第一行,一个正整数n(n<=100),表示评委的人数
第二行,n个正整数,分别表示n个评委为选手打的分数xi(xi<=100)
输出格式 一个小数,精确到小数点后两位 展开
4个回答
展开全部
var n,i,min,max,maxi,mini,s:integer;
x:array[1..100] of integer;
ans:real;
begin
readln(n);
for i:=1 to n do read(x[i]);
min:=100;max:=0;
for i:=1 to n do begin
if x[i]>max then begin max:=x[i];maxi:=i;end;
if x[i]<min then begin min:=x[i];mini:=i;end;
end;
x[maxi]:=0;x[mini]:=0;s:=0;
for i:=1 to n do s:=s+x[i];
n:=n-2;
ans:=s/n;
writeln(ans:0:2);
end.
这样就避免了排序了,尤其在数据量很大的情况下,我这种算法时间和空间效率要比楼上高得多
x:array[1..100] of integer;
ans:real;
begin
readln(n);
for i:=1 to n do read(x[i]);
min:=100;max:=0;
for i:=1 to n do begin
if x[i]>max then begin max:=x[i];maxi:=i;end;
if x[i]<min then begin min:=x[i];mini:=i;end;
end;
x[maxi]:=0;x[mini]:=0;s:=0;
for i:=1 to n do s:=s+x[i];
n:=n-2;
ans:=s/n;
writeln(ans:0:2);
end.
这样就避免了排序了,尤其在数据量很大的情况下,我这种算法时间和空间效率要比楼上高得多
展开全部
program CalcScores;
var n,i,maxSc,min: integer;
aver:double;
scare :array[1..100] integer;
begin
n:=3;
while n>2 do begin { 评委不足两人,无法计算 }
readln(n); { 评委人数 }
if(n> 2 && n<=100)begin
read (score[1]); { 输入第一个评委为选手打的分数 }
aver:=score[1];
min:=score[1];max=score[1];
for i:=2 to n do begin
read (score[i]); { 输入第 i 个评委为选手打的分数 }
aver:=aver+score[i];
if imin> score[i] then min := score[i]
else if max<score[i] then max=score[i];
end;
for i:=1 to 100 do begin
write (score[i]:8:2); { 输出打的分数 }
end;
writeln;
writeln ((1.0*(aver -max-min)/(n-2)):8:2 );{ 输出平均分数 }
end;
end.
var n,i,maxSc,min: integer;
aver:double;
scare :array[1..100] integer;
begin
n:=3;
while n>2 do begin { 评委不足两人,无法计算 }
readln(n); { 评委人数 }
if(n> 2 && n<=100)begin
read (score[1]); { 输入第一个评委为选手打的分数 }
aver:=score[1];
min:=score[1];max=score[1];
for i:=2 to n do begin
read (score[i]); { 输入第 i 个评委为选手打的分数 }
aver:=aver+score[i];
if imin> score[i] then min := score[i]
else if max<score[i] then max=score[i];
end;
for i:=1 to 100 do begin
write (score[i]:8:2); { 输出打的分数 }
end;
writeln;
writeln ((1.0*(aver -max-min)/(n-2)):8:2 );{ 输出平均分数 }
end;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
n,i:longint;
av:double;
a:array[1..101] of longint;
procedure sort(l,r: longint);//这儿可以用n^2的排序,选择什么都可以,我用的是快排
Var
i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do
inc(i);
while x<a[j] do
dec(j);
If Not (i > j) Then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);
dec(j);
end;
until i>j;
If l < j Then
qsort(l,j);
If i < r Then
qsort(i,r);
end;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
av:=av+a[i];
end;
sort(1,n);
av:=av-a[1]-a[n];
writeln(av/(n-2):0:2);
end.
n,i:longint;
av:double;
a:array[1..101] of longint;
procedure sort(l,r: longint);//这儿可以用n^2的排序,选择什么都可以,我用的是快排
Var
i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do
inc(i);
while x<a[j] do
dec(j);
If Not (i > j) Then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);
dec(j);
end;
until i>j;
If l < j Then
qsort(l,j);
If i < r Then
qsort(i,r);
end;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
av:=av+a[i];
end;
sort(1,n);
av:=av-a[1]-a[n];
writeln(av/(n-2):0:2);
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
快排?堆排好一点。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询