P1001谁拿了最多奖学金,求纠错!!!!

代码如下
#include<iostream>
#include<string>

using namespace std;

int n,i;

struct S
{
string a;
int b;
int c;
char d;
char e;
int f;
int w;
}stu[105];

void ANS(S str)
{
stu[i].w=0;
if(stu[i].b>80&&stu[i].f>=1) stu[i].w+=8000;
if(stu[i].b>85&&stu[i].c>80) stu[i].w+=4000;
if(stu[i].b>90) stu[i].w+=2000;
if(stu[i].b>80&&stu[i].e=='Y') stu[i].w+=1000;
if(stu[i].c>80&&stu[i].d=='Y') stu[i].w+=850;
}

int main()
{
int j=0,w=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>stu[i].a
>>stu[i].b
>>stu[i].c
>>stu[i].d
>>stu[i].e
>>stu[i].f;
}
for(i=1;i<=n;i++)
ANS(stu[i]);
for(i=1;i<=n;i++)
if(stu[i].w>stu[j].w) j=i;
for(i=1;i<=n;i++)
w+=stu[i].w;
cout<<stu[j].a<<endl
<<stu[j].w<<endl
<<w<<endl;
return 0;
}

2 条评论

  • @ 2014-10-25 07:15:56

    #include<iostream>
    #include<string>

    using namespace std;

    int n,i;

    struct S
    {
    string a;
    int b;
    int c;
    char d;
    char e;
    int f;
    int w;
    }stu[105];

    void ANS(S str)
    {
    stu[i].w=0;
    if(stu[i].b>80&&stu[i].f>=1) stu[i].w+=8000;
    if(stu[i].b>85&&stu[i].c>80) stu[i].w+=4000;
    if(stu[i].b>90) stu[i].w+=2000;
    if(stu[i].b>85&&stu[i].e=='Y') stu[i].w+=1000;//here wrong!原本你的是b>80
    if(stu[i].c>80&&stu[i].d=='Y') stu[i].w+=850;
    }

    int main()
    {
    int j=0,w=0;
    cin>>n;
    for(i=1;i<=n;i++)
    {
    cin>>stu[i].a
    >>stu[i].b
    >>stu[i].c
    >>stu[i].d
    >>stu[i].e
    >>stu[i].f;
    }
    for(i=1;i<=n;i++)
    ANS(stu[i]);
    for(i=1;i<=n;i++)
    if(stu[i].w>stu[j].w) j=i;
    for(i=1;i<=n;i++)
    w+=stu[i].w;
    cout<<stu[j].a<<endl
    <<stu[j].w<<endl
    <<w<<endl;
    return 0;
    }

  • @ 2014-10-25 07:09:48

    看程序之前,先 -- 印象分:**可读性啊**!

  • 1

信息

ID
1001
难度
5
分类
模拟 点击显示
标签
递交数
39080
已通过
12716
通过率
33%
被复制
121
上传者