1004成绩排名

发布时间 2023-12-04 22:49:22作者: 银江仙

这道题用python写到没有什么难度

用c++写就遇到困难了,这算一道考察结构体的题目吧,以后遇到一个主题有多个属性的时候就可以考虑使用结构体

就是在给结构体赋值的时候只能是静态的结构体数组,但好像动态的pat里也能跑通,到编辑器里就报错了,如下:

       int n;

       cin>>n;

       struct student stu[n];

正确的做法应该是先将数组长度列得足够大,然后再用for循环分配

struct student stu[1000];

for (i = 0;i < n;i++) {
cin >> stu[i].id >> stu[i].name >> stu[i].score;
}

ok!完整代码:

#include <iostream>
using namespace std;
struct student
{
char name[20];
char id[20];
int score;
};

int main()
{
int n;
cin >> n;
struct student stu[1000];
int i, max, min;
for (i = 0;i < n;i++) {
cin >> stu[i].id >> stu[i].name >> stu[i].score;
}

max = stu[0].score;
min = stu[0].score;
for (i = 0;i < n;i++) {

if (stu[i].score > max) {
max = stu[i].score;
}
if (stu[i].score < min) {
min = stu[i].score;
}
}

for (i = 0;i < n;i++) {
if (stu[i].score == max) {
cout << stu[i].name << " " << stu[i].id << endl;
}
}
for (i = 0;i < n;i++) {
if (stu[i].score == min) {
cout << stu[i].name << " " << stu[i].id << endl;
}
}

return 0;
}

以后每个{}括号之间分的距离尽量远一点,不然多一个少一个都察觉不出来