使用的结构体储存数据
然后直接根据条件来判断
#include<stdio.h>
struct per {
char name[22];
int q1,q2;
char flag1,flag2;
int n,sum;
} stu[120];
int main() {
int T;
scanf("%d",&T);
while(T--) {
int X;
scanf("%d",&X);
int maxi=0,sum=0;
for(int i=0; i<X; i++) {
scanf("%s %d %d %c %c %d",&stu[i].name,&stu[i].q1,&stu[i].q2,&stu[i].flag1,&stu[i].flag2,&stu[i].n);
stu[i].sum=0;
if(stu[i].q1>80&&stu[i].n>0)
stu[i].sum+=8000;
if(stu[i].q1>85&&stu[i].q2>80)
stu[i].sum+=4000;
if(stu[i].q1>90)
stu[i].sum+=2000;
if(stu[i].q1>85&&stu[i].flag2=='Y')
stu[i].sum+=1000;
if(stu[i].q2>80&&stu[i].flag1=='Y')
stu[i].sum+=850;
sum+=stu[i].sum;
if(stu[i].sum>stu[maxi].sum)
maxi=i;
}
printf("%s\n%d\n%d\n",stu[maxi].name,stu[maxi].sum,sum);
}
return 0;
}
标程直接进行的判断
-.-感觉并没有我写的清晰
#include<iostream>
#include<string>
#include<algorithm>
#include<numeric>
using namespace std;
int calc(int qm,int py,bool gb,bool xb,bool lw) {
int all=0;
if(qm>80 && lw) all+=8000;
if(qm>85&& py>80) all+=4000;
if(qm>90) all+=2000;
if(xb&&qm>85) all+=1000;
if(gb&&py>80) all+=850;
return all;
}
int main() {
int n;
cin>>n;
while(n--) {
int m;
cin>>m;
int max_num=0,all=0;
string max_stu;
while(m--) {
int qm,py,lw;
string xm,gbs,xbs;
cin>>xm>>qm>>py>>gbs>>xbs>>lw;
bool gb=gbs=="Y",xb=xbs=="Y";
int num=calc(qm,py,gb,xb,lw>0);
all+=num;
if(num>max_num) {
max_num=num;
max_stu=xm;
}
}
cout<<max_stu<<endl<<max_num<<endl<<all<<endl;
}
}
题目地址:【NYOJ】[60]谁获得了最高奖学金