以下是fortran77代码,数据直接用data语句提供,供参考。
character*6 no(40),ts
integer score(40),t,sum
real aver,rate
data score/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
1 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40/
data no/'01','02','03','04','05','06','07','08','09','10',
1 '11','12','13','14','15','16','17','18','19','20',
1 '21','22','23','24','25','26','27','28','29','30',
1 '31','32','33','34','35','36','37','38','39','40'/
n=40
do 10 i=1,n-1
do 10 j=i+1,n
if (score(i).lt.score(j)) then
ts=no(i)
no(i)=no(j)
no(j)=ts
t=score(i)
score(i)=score(j)
score(j)=t
endif
10 continue
sum=0
do 20 i=1,n
sum=sum+score(i)
20 continue
aver=1.0*sum/n
do 30 i=1,n
rate=score(i)-aver
if (rate.gt.10) then
write(*,'(2x,a3,1x,i3,1x,a1)') no(i),score(i),'A'
else if (rate.lt.-10) then
write(*,'(2x,a3,1x,i3,1x,a1)') no(i),score(i),'C'
else
write(*,'(2x,a3,1x,i3,1x,a1)') no(i),score(i),'B'
endif
30 continue
stop
end