• 1439 奖学金

    时间限制 : 2000/1000 MS(Java/Others) | 内存限制 : 65536/32768 KB(Java/Others)

    提交数 : 10664 | 通过数 : 5555

    题目描述

    某校发放奖学金共5种,获取条件各不同:

    1.阳明奖学金,每人8000,期末平均成绩>80,且在本学期发表论文大于等于1篇;

    2.梨洲奖学金,每人4000,期末平均成绩>85,且班级评议成绩>80

    3.成绩优秀奖,每人2000,期末平均成绩>90

    4.西部奖学金,每人1000,期末平均成绩>85的西部省份学生;

    5.班级贡献奖,每人850,班级评议成绩>80的学生干部。

      现给出若干学生的姓名、期末平均成绩、班级评议成绩、是否学生干部、是否西部省份学生、发表论文数。计算哪个同学获得的奖金总数最高?有多个最高值则输出第一个出现的。

    备注:假设获奖人数无限制,一人可兼得多项奖学金。例:某生,期末平均成绩87,班级评议成绩82,且是学生干部,则可同时获得梨洲奖学金和班级贡献奖,奖金总数4850。

    输入要求

    输入一个整数n表示有n个学生信息。

    接下来n行每行输入一位同学的信息,包括姓名、期末平均成绩、班级评议成绩、是否学生干部、是否西部省份学生、发表论文数。

    假设学生最多不超过100人。


    输出要求

    输出获得奖学金总数最高的学生的姓名和奖学金数。假如有多个学生,则输出第一个学生的信息即可。具体格式见样例。

    输入样例

    4
    Yaolin 87 82 Y N 0
    Chenwei 88 78 N Y 1
    Liwen 92 88 N N 0
    Zhangqin 83 87 Y N 1
    

    输出样例

    Chenwei
    9000
    

    模板

    #include<stdio.h>
    typedef struct StudentInfo
    {
     @-@ //设计结构体的成员,包括:姓名,分数,班级评议,是否学生干部,是否西部学生,论文数,奖学金
    	
    }STU;
    STU s[100];
    int main()
    {
    	int n,max=-1,loc,i;  //loc表示最高奖学金获得者的下标
    	scanf("%d",&n);
    	getchar();
    	for(i=0;i<n;i++)
    	{
    		scanf("%s",s[i].name);   //输入姓名
    		scanf("%lf%lf",&s[i].sc,&s[i].cla);   //输入分数和班级评议成绩
    		getchar();
    		s[i].leader=getchar();           //输入是否学生干部
    		getchar();
    		s[i].west=getchar();             //输入是否西部省份学生
    		scanf("%d",&s[i].paper);         //输入发表论文数
    		getchar();
    	}
        @-@  //设计语句判断是否可获得奖学金,有则计算奖学金数目
        @-@  //设计语句计算最大奖学金数目及获得者信息
        
    	printf("%s\n%d\n",s[loc].name,s[loc].money);
    	return 0;
    }

    提示

    表示姓名的字符串不含空格,长度不超过20。

    来源

    NBU OJ

    [ 返回顶端 ] | [ 代码提交 ] | [ 统计数据 ] | [ 历史提交 ]