1.9.4 谁拿了最多奖学金

OpenJudge - 04:谁拿了最多奖学金


解题思路:

1.由题意可知,典型的结构体变量题型,一个学生有很多属性,所以我们可以创建一个名为student的结构体变量,结构体变量中包含以下变量,int a;期末成绩,int b;班级评议成绩,char c;是否为三好学生,char d,是否为西部学生,int e;发表论文数量,int sum,该学生获得的奖学金

2.然后利用循环依次输入到结构体变量数组中

3.此时,对n个人进行遍历,利用条件判断语句,将这n个人的奖学金全部存入到sum中

4.对于sum进行比较,找到最大值并且保存他的位置编号,同时在遍历过程中计算所有奖学金的总数,然后按照格式输出即可


#include<bits/stdc++.h>
using namespace std;

struct student{
	string name;//学生姓名 
	int qm,py;//期末平均成绩,班级评议成绩 
	char x;//学生干部 
	char y;//西部省份学生 
	int lw;//发表论文数量 
}m[105];//定义结构体数组 

int a[105];
int main()
{
	int n,sum=0,max=0,num;
	cin>>n;

	for(int i=1;i<=n;i++)
	{
		cin>>m[i].name>>m[i].qm>>m[i].py>>m[i].x>>m[i].y>>m[i].lw;
	}//将n个学生的数据输入到结构体数组中 

	for(int i=1;i<=n;i++)//依次遍历数组 
	{
		if(m[i].qm>80&&m[i].lw>0)
		a[i]+=8000;//如果期末平均成绩大于80并且发表了论文,奖学金+8000 

		if(m[i].qm>85&&m[i].py>80)
		a[i]+=4000;//如果期末成绩大于85并且评议成绩大于80,奖学金+4000 

		if(m[i].qm>90)
		a[i]+=2000;//如果期末成绩大于90,奖学金+2000 

		if(m[i].qm>85&&m[i].y=='Y')
		a[i]+=1000;//如果期末成绩大于85并且是西部省份学生,奖学金+1000 

		if(m[i].py>80&&m[i].x=='Y')
		a[i]+=850;//如果评议成绩大于80,并且是班干部,奖学金+850 
	}

	for(int i=1;i<=n;i++)//依次遍历每个同学的奖学金 
	{
		if(a[i]>max)//如果奖学金大于最大值 
		{
			max=a[i];//最大值更新 
			num=i;//并且保存编号 
		}
		sum=sum+a[i];//累加所有学生的奖学金 
	}

	cout<<m[num].name<<endl;//输出最高奖学金的姓名 
	cout<<a[num]<<endl;//输出最高奖学金的金额 
	cout<<sum;//输出总共的奖学金 
	return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值