PAT初级1004成绩排名
这题本来其实很简单,但是介于C/C++的数据类型和定义以及输入输出等比较偏底层,所以本人在输入输出和数据类型转换这里还是纠结了不少时间,另外数组查找最大/小值本人采用函数调用完成,函数的传参和返回也整了一段时间(还是C++忘光了的锅)。
解题思路:
1、各类型数据分别用数组存储(name、学号为string,分数为int)
(不要问为什么不全用string,因为C++的各种数据类型强制转换有些麻烦!!!)
2、查找分数数组的最大/小下标
3、输出对应下标数据,over~
本人代码:
# include <iostream>
# include <cstring>
using namespace std;
int *find_Max_Min(int num[]);
int *find_Max_Min(int num[],int N)
{
int max=0,min=0;
for(int i=0;i<N;i++)
{
if(num[max]<num[i])
{
max = i;
}
if(num[min]>num[i])
{
min = i;
}
}
int *result = new int[2];
result[0]=max;
result[1]=min;
return result;
}
int main()
{
int N=0;
cin>>N;
string name[N],number[N];
int num[N];
for(int i=0,j=0,k=0;i<N;i++,j++,k++)
{
cin>>name[i]>>number[j]>>num[k];
}
int *res;
res = find_Max_Min(num,N);
cout<<name[res[0]]+" "+number[res[0]]<<'\n';
cout<<name[res[1]]+" "+number[res[1]]<<endl;
delete res;
return 0;
}
本题结果:
改进思路:
1、其中的函数传数组部分中间new了一个数组,否则得用全局数组了,另外函数中查找最大/小可用更高级的查找方法/数据结构(不过本题这数据量就没多大必要了)
2、感觉数据的读入还可以改进,根据空格“_"只分成分数和其他两部分就更好了(另外,这里也可以考虑用struct/class,只是针对本题数据量大可不必)
PLUS:相关知识关键点链接(搬运)
c++函数返回一个数组
https://www.cnblogs.com/walter-xh/p/6192800.html
C++ 传递数组给函数
https://www.runoob.com/cplusplus/cpp-passing-arrays-to-functions.html