CodingTim @ 2024-10-06 20:46:09
直接上代码:
#include<bits/stdc++.h>
using namespace std;
struct Student
{
string name;
int chinesePoint;
int mathsPoint;
int englishPoint;
};
template <class T>
void Temp(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
void SortStudent(vector<Student*>& arr)
{
int n = arr.size();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
int a = arr[j]->chinesePoint + arr[j]->mathsPoint + arr[j]->englishPoint;
int b = arr[j + 1]->chinesePoint + arr[j + 1]->mathsPoint + arr[j + 1]->englishPoint;
if (a > b)
{
Temp(arr[j], arr[j + 1]);
}
}
}
}
int main()
{
int n;
vector<Student*> v;
cin >> n;
for (int i = 0; i < n; i++)
{
Student* student = new Student();
cin >> student->name;
cin >> student->chinesePoint;
cin >> student->mathsPoint;
cin >> student->englishPoint;
v.push_back(student);
}
SortStudent(v);
cout << v.back()->name << " " << v.back()->chinesePoint << " " << v.back()->mathsPoint << " " << v.back()->englishPoint << endl;
for (int i = 0; i < v.size(); i++)
{
delete v[i];
}
return 0;
}
为啥不能AC
by are_you_sure @ 2024-10-06 21:01:29
@CodingTim 这个。。。
好像没辣么复杂吧···
结构体学过吧
直接放码,注释在码里
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
struct stu{//一个结构体,表示学生的信息
int c,m,e;//分别表示chinese maths english (蒟蒻英语不好勿喷
string nm;//学生姓名
};
stu a[1005];//那堆学(ju)生(ruo)
int main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);//加快读写速度(抢最优解用的,没什么实际意义...
int n,mx=-1;//学生数量,最好成绩
int mxn;//最好成绩是第几个学生
cin>>n;//输入不解释
for(int i=0;i<n;i++){
cin>>a[i].nm>>a[i].c>>a[i].m>>a[i].e;//同样不解释
}
for(int i=0;i<n;i++){
if(a[i].c+a[i].m+a[i].e>mx){//比前面比较牛的学生还牛,改成>=必扣分(题目要求相同就输出靠前的),没扣就是数据太蒻
mx=a[i].c+a[i].m+a[i].e;//更新最大值
mxn=i;//记住学生的编号
}
}
cout<<a[mxn].nm<<' '<<a[mxn].c<<' '<<a[mxn].m<<' '<<a[mxn].e;//输出不解释
return 0;
}
by zqx168 @ 2024-10-07 09:21:28
@are_you_sure
好像也没你那么复杂吧...
#include<bits/stdc++.h>
using namespace std;
struct NOIP{//定义结构体
string name;//名字
int age,cj;//年龄和成绩
};
int main(){
int n;cin>>n;
NOIP a[n];//数组
for(int i=0;i<n;i++){
cin>>a[i].name>>a[i].age>>a[i].cj;//输入
a[i].age++,a[i].cj+=a[i].cj*(0.2);
if(a[i].cj>600)a[i].cj=600;//调整成员信息
}
for(int i=0;i<n;i++)
printf("%s %d %d\n",a[i].name.c_str(),a[i].age,a[i].cj);//输出
}
by are_you_sure @ 2024-10-07 13:20:01
@zqx168 你的好像没法通过诶
by zqx168 @ 2024-10-07 13:30:25
@are_you_sure
抱歉,发错了
#include<bits/stdc++.h>
using namespace std;
struct student{//学生
string name;
int Chineese,Maths,Einglish;//语数英
};
int main(){
string name;
int he=0,flag;//最大分,最大分学号
int n;cin>>n;
student a[n];
for(int i=0;i<n;i++){
cin>>a[i].name>>a[i].Chineese>>a[i].Maths>>a[i].Einglish;//输入
if(a[i].Chineese+a[i].Einglish+a[i].Maths>he){//判断
he=a[i].Chineese+a[i].Einglish+a[i].Maths;
name=a[i].name;flag=i;//记录
}
}
printf("%s %d %d %d",a[flag].name.c_str(),a[flag].Chineese,a[flag].Maths,a[flag].Einglish);//输出
}