题解
2024-07-29 18:42:34
发布于:浙江
6阅读
0回复
0点赞
想法:
1.这道题乍一眼看上去可能要用结构体排序 实际上结构体的使用并不必要 进需要在输入时将数据保存入结构体即可;
2.可以在输入后紧跟着判断 这个人的信息能获得什么奖项 并存入相应的数组 如b数组(存放获奖数量),ans存放总钱数 ,sore数组(存放各个人的钱数);
3.在判断完后 运用for循环 找出b数组中获奖数最多的人的对应下标 和获奖数量;
4.最后将获奖人 获奖金额 和总获奖金额输出即可;
#include<bits/stdc++.h>
using namespace std;
int n;
struct stu{
string name;
int ks,bj;
char ch1,ch2;
int wen;
}a[110];
int b[110];
int ans = 0;
int sore[110];
int main(){
cin>>n;
for(int i = 0;i<n;i++){
cin>>a[i].name>>a[i].ks>>a[i].bj>>a[i].ch1>>a[i].ch2>>a[i].wen;
if(a[i].ks>80&&a[i].wen>=1){
b[i]++;
sore[i]+=8000;
ans += 8000;
}
if(a[i].ks>85&&a[i].bj>80){
b[i]++;
sore[i] += 4000;
ans+=4000;
}
if(a[i].ks>90){
b[i]++;
sore[i]+=2000;
ans+=2000;
}
if(a[i].ks>85&&a[i].ch2 == 'Y'){
b[i]++;
sore[i]+=1000;
ans += 1000;
}
if(a[i].bj>80&&a[i].ch1 == 'Y'){
b[i]++;
sore[i] += 850;
ans+=850;
}
}
int maxn = 0,maxn_idx;
for(int i = 0;i<n;i++){
if(sore[i]>maxn){
maxn = sore[i];
maxn_idx = i;
}
}
cout<<a[maxn_idx].name<<endl<<maxn<<endl<<ans;
return 0;
}
这里空空如也
有帮助,赞一个