跳至正文

NOIp 2005 提高组 1 谁拿了最多奖学金

  十分简单的题目,以前写过,以为是普及组里最垃圾的题目(普及组的水平都不算),就是算分然后判断,也没什么要注意的(对我来说要注意的就是我错过的地方,这个题目是少量的一次性AC的题目。),代码如下(比以前写的好看很多!):

#include <stdio.h>
struct pep{
        char name[21];
        int grade;
};

int getgrade(int a, int b, char c, char d, int e)
{
        int n = 0;
        if(a > 80 && e > 0){
                n += 8000;
        }
        if(a > 85 && b > 80){
                n += 4000;
        }
        if(a > 90){
                n += 2000;
        }
        if(a > 85 && d == ‘Y’){
                n += 1000;
        }
        if(b > 80 && c == ‘Y’){
                n += 850;
        }
        return n;
}

int main(void)
{
        struct pep t, max;
        int a, b, e;
        char c, d;
        int n, i;
        int ans = 0;
        max.grade = 0;
        scanf("%d\n", &n);
        for(i = 0; i < n; i++){
                scanf("%s %d %d %c %c %d\n", t.name, &a, &b, &c, &d, &e);
                t.grade = getgrade(a, b, c, d, e);
                ans += t.grade;
                if(t.grade > max.grade){
                        max = t;
                }
        }
        printf("%s\n%d\n%d\n", max.name, max.grade, ans);
        return 0;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注