1004 成绩排名
读入?n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
每个测试输入包含 1 个测试用例,格式为:
第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 ? ... ... ... 第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名 和学号 均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
这题主要考察结构体的应用,并未用到排序的算法;遇到一个问题:
C++ 表达式必须含有常量值变量 (已声明 所在行数:12) 的值不可用作常量
参考了https://blog.csdn.net/weixin_42638401/article/details/88957796,最后采用指针来动态存储。
以下是代码:
#include<iostream>
#include<stdio.h>
using namespace std;
struct Node
{
string st_name;
string st_num;
int score;
};
int main()
{
int num;
cin >> num;
Node* p = new Node[num];
int score_max, score_min;
int count_max=0, count_min=0;
for (int i = 0; i < num; i++)
{
cin >> p[i].st_name >> p[i].st_num >> p[i].score;
if (i == 0)
{
score_max = p[i].score;
score_min = p[i].score;
}
else
if(score_max<p[i].score)
{
score_max = p[i].score;
count_max = i;
}
else
if (score_min > p[i].score)
{
score_min = p[i].score;
count_min = i;
}
}
cout << p[count_max].st_name << " " << p[count_max].st_num << endl;
cout << p[count_min].st_name << " " << p[count_min].st_num << endl;
delete[] p;
return 0;
}
|