社区讨论
为啥只给了80分 求大神帮忙看看
P1051[NOIP 2005 提高组] 谁拿了最多奖学金参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mi4g8733
- 此快照首次捕获于
- 2025/11/18 18:46 4 个月前
- 此快照最后确认于
- 2025/11/18 18:46 4 个月前
CPP
#include <iostream>
using namespace std;
int n;
struct student
{
char name[20];
int aver_grade;
int clas_grade;
char monitor;
char western;
int number;
int schooler;
};//结构体
void judgement(struct student t[])
{
for(int i=0;i<n;i++)
{
if(t[i].aver_grade>80&&t[i].number>0)
t[i].schooler+=8000;
if(t[i].aver_grade>85&&t[i].clas_grade>80)
t[i].schooler+=4000;
if(t[i].aver_grade>90)
t[i].schooler+=2000;
if(t[i].aver_grade>85&&t[i].western=='Y')
t[i].schooler+=1000;
if(t[i].clas_grade>80&&t[i].monitor=='Y')
t[i].schooler+=850;
}
}//奖金多少的判断函数
CPPint main()
{
struct student t[100],tem;
int i,j,sum=0;
cin>>n;
for(i=0;i<n;i++)
t[i].schooler=0;//初始化每个人的奖金
for(int i=0;i<n;i++)
cin>>t[i].name>>t[i].aver_grade>>t[i].clas_grade>>t[i].monitor>>t[i].western>>t[i].number;
judgement(t);
for(i=0;i<n;i++)
sum+=t[i].schooler;//计算总值
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(t[j].schooler<t[j+1].schooler)
{
tem=t[j+1];
t[j+1]=t[j];
t[j]=tem;
}
}
}//冒泡排序
CPP for(i=0;i<n;i++)
{
cout<<t[i].name<<endl<<t[i].schooler<<endl;
if(t[i].schooler!=t[i+1].schooler)
break;
}//输出奖金最多的一个或多的人
cout<<sum<<endl;//输出总奖金数
CPPreturn 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...