- 谁拿了最多奖学金
- 2016-12-13 21:44:44 @
#include <iostream>
#include <string>
using namespace std;
struct stut
{
string na;
int c1,c2;
char g1,g2;
int k;
int m;
};
int main()
{
int n,i,j,k,sum;
string s;
stut str[105];
cin>>n;
for(i=1;i<=n;i++)
{
cin>>str[i].na>>str[i].c1>>str[i].c2>>str[i].g1>>str[i].g2>>str[i].k;
str[i].m=0;
}
for(i=1;i<=n;i++)
{
if (str[i].c1>80&&str[i].k>=1)
{
str[i].m=str[i].m+8000;
}//1
if (str[i].c1>85&&str[i].c2>80)
{
str[i].m=str[i].m+4000;
}//2
if (str[i].c1>90)
{
str[i].m=str[i].m+2000;
}//3
if (str[i].c1>85 && str[i].g2=='Y')
{
str[i].m=str[i].m+1000;
}//4
if (str[i].c2>80 && str[i].g1=='Y')
{
str[i].m=str[i].m+850;
}//5
}
j=0;
sum=0;
k=1;//问题就出在这个变量K上,如果去掉K变量,使用我后面给的程序就可以通过,
for(i=1;i<=n;i++)
{
sum=sum+str[i].m;
if(j<str[i].m)
{
j=str[i].m;
k=i;//变量k实际作用是记录最多奖学金同学的编号,以便后面输出答案。但是所有数据出现runing time error,本地测试可以通过。
}
}
cout<<str[k].na<<endl;
cout<<str[k].m<<endl;
cout<<sum<<endl;
return 0;
}
去掉k变量后,用下面的语句代替上面的语句,可以通过,为什么呢?测评机器的问题吗?
j=0;
sum=0;
for(i=1;i<=n;i++)
{
sum=sum+str[i].m;
if(j<str[i].m)
{
j=str[i].m;
s=str[i].na;
ma=str[i].m;
}
}
cout<<s<<endl;
cout<<ma<<endl;
cout<<sum<<endl;
return 0;