讨论 / 跪求,帮帮忙
a12091209 2011-11-09 20:44:00
点我顶贴 收藏 删除
看看那有错,是<<谁拿了最多的奖学金>>

program jianxuejin;

var name:array[1..100]of string;

a,b,e,s,ans:array[1..100]of integer;

c,d :array[1..100]of char;

i,j,t,n:integer;

begin

read(n);

for i:=1 to n do begin

s[i]:=0;

read(name[i],a[i],b[i],c[i],d[i],e[i]);

if (a[i]>80) and (e[i]>=1) then s[i]:=s[i]+8000;

if (a[i]>85) and (b[i]>80) then s[i]:=s[i]+4000;

if a[i]>90 then s[i]:=s[i]+2000;

if (a[i]>85) and (d[i]='Y') then s[i]:=s[i]+1000;

if (b[i]>80) and (c[i]='Y') then s[i]:=s[i]+850;

ans[i]:=s[i];

end;

for i:=1 to n do begin

for j:=i to n do

if s[i]<s[j] then begin

t:=s[i];s[i]:=s[j];s[j]:=t;end;

end;

for i:=1 to n do

if s[1]=ans[i] then writeln(name[i],ans[i]);

end.

#1 87933801@2011-11-08 22:58:00
回复 删除
#include<iostream>

using namespace std;

struct r

{

char a[101][21],s[101],x[101];

int f1[101],f2[101],l[101],k[101];

}h;

int main()

{

int i,m,k=0,n=1;

cin>>m;

for(i=1;i<=m;i++)

{

cin>>h.a[i]>>h.f1[i]>>h.f2[i]>>h.s[i]>>h.x[i]>>h.l[i];

h.k[i]=0;

if((h.f1[i]>80)&&(h.l[i]>=1))

h.k[i]+=8000;

if((h.f1[i]>85)&&(h.f2[i]>80))

h.k[i]+=4000;

if(h.f1[i]>90)

h.k[i]+=2000;

if((h.f1[i]>85)&&(h.x[i]=='Y'))

h.k[i]+=1000;

if((h.f2[i]>80)&&(h.s[i]=='Y'))

h.k[i]+=850;

k+=h.k[i];

}

for(i=2;i<=m;i++)

if(h.k[i]>h.k[n])

n=i;

cout<<h.a[n]<<"\n"<<h.k[n]<<"\n"<<k;

return 0;

}

#2 a12091209@2011-11-09 20:23:00
回复 删除
回复 沙发87933801 的帖子

pascal

#3 jackchen1999@2011-11-09 20:37:00
回复 删除
program jianxuejin;

var name,max:array[1..21]of char;

a,b,e,s,ans,count:integer;

c,d :char;

i,j,t,n:integer;

begin

read(n);

ans:=0;

for i:=1 to n do begin

s:=0;

read(name,a,b,c,d,e);

if (a>80) and (e>=1) then s:=s+8000;

if (a>85) and (b>80) then s:=s+4000;

if a>90 then s:=s+2000;

if (a>85) and (d='Y') then s:=s+1000;

if (b>80) and (c='Y') then s:=s+850;

if ans<s then begin

ans:=s;

max:=copy(name,length(name));

end;

count:=count+s;

end;

writeln(max,ans,count);

end.

#4 linxy1@2011-11-09 20:39:00
回复 删除
char 字符读入下一位

读入数字之后读入的是‘ ’

可以通过读两遍处理

至于每次读入完之后要不要换行,自己看着办试试吧

#5 jackchen1999@2011-11-09 20:42:00
回复 删除
program jianxuejin;

var name,max:array[1..21]of char;

a,b,e,s,ans,count:integer;

c,d :char;

i,j,t,n,l:integer;

begin

read(n);

ans:=0;

for i:=1 to n do begin

s:=0;

read(name,a,b,c,d,e);

if (a>80) and (e>=1) then s:=s+8000;

if (a>85) and (b>80) then s:=s+4000;

if a>90 then s:=s+2000;

if (a>85) and (d='Y') then s:=s+1000;

if (b>80) and (c='Y') then s:=s+850;

if ans<s then begin

ans:=s;

l:=length(name);

max:=copy(name,1,l);

end;

count:=count+s;

end;

writeln(max,ans,count);

end.

#6 a12091209@2011-11-09 20:44:00
回复 删除
回复 地板linxy1 的帖子

谢谢

查看更多回复
提交回复