PAT初级1004成绩排名(C++)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值