题目

题目地址:PAT 乙级 1041

题解

这道题学到的东西恰好和1037中学到的东西相互补充,总结如下:

之前的博文中我曾提到过——“结构体在函数内部对数据的操作不能赋给主函数中的实参,函数内部的变量只是局部变量”,因此当时使用了三种方式解决这个问题:“一是调用结束后将数据返回,二是采用全局变量,三是以引用的方式传参“;本题同样使用结构体的方式,其中使用排序函数来对题设中的索引条件排序,可以极大地简化代码、减少程序的时间复杂度,这本身是一个很好的设想,但是在程序过程中遇到了问题,使用了引用方式传入函数,排序结束后的结果并不能返回主函数中?问题的症结在于——排序的对象是一个结构体数组,因此以上的解决方案中引用的方式不能解决问题,因为引用的本质是一个变量的别名,但是对于一个数组而言它有很多成员,无法对于数组取一个统一的别名,因此需要用全局变量函数调用结束后将数据返回的方式解决回传的问题,代码中使用全局变量的方式。

总结:对于一个数组而言,无法使用引用解决主函数与被调函数中参数传递的问题,解决方式是使用全局变量或在调用结束后将数据返回。

代码

 #include <iostream>
#include <string>
using namespace std; struct stu {
string num;
int shiji;
int kaoshi;
}; stu s[]; void sort(int n) {
for (int i = ; i < n; i++) {
for (int j = i + ; j < n; j++)
if (s[i].shiji > s[j].shiji) {
stu tmp;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
} int main() {
int cnt = ;
int n = ;
cin >> n;
while (n--) {
string tmp;
int tmp1 = , tmp2 = ;
cin >> tmp >> tmp1 >> tmp2;
s[cnt].num = tmp;
s[cnt].shiji = tmp1;
s[cnt].kaoshi = tmp2;
cnt++;
}
sort(cnt);
int m = ;
cin >> m;
while (m--) {
int tmp = ;
cin >> tmp;
cout << s[tmp - ].num << " " << s[tmp - ].kaoshi << endl;
} return ;
}

PAT 乙级 1041的更多相关文章

  1. PAT乙级1041

    题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032 题解 简单的信息录入和查询而已. ...

  2. PAT 乙级 1041 考试座位号(15) C++版

    1041. 考试座位号(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 每个PAT考生在参加考试时都会被分 ...

  3. PAT乙级-1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

  4. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  5. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  6. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  7. PAT 乙级 1017

    题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...

  8. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...

  9. PAT 乙级 1003

    题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...

随机推荐

  1. centos 7.3 安装vmtools,解决无法编译共享文件夹模块

    环境说明: vmware 12.5.0 build-4352439 centos 7.3.1611   64位,内核版本:Linux version 3.10.0-514.16.1.el7.x86_6 ...

  2. StringUtils中常用方法leftPad(),rightPad(),center()

    org.apache.commons.lang3的StringUtils 方法如下: public static String leftPadTime(Integer time){    return ...

  3. Markdown - 如何给文本加下划线

    解决方法 Markdown可以和HTML的语法兼容,可以通过HTML的标签来实现效果: 写法 效果 <u>下划线</u> 下划线 这里解释下,u指的是underline下划线. ...

  4. 转 载python数据分析(1)-numpy产生随机数

    转自:http://blog.csdn.net/jinxiaonian11/article/details/53143141 在数据分析中,数据的获取是第一步,numpy.random 模块提供了非常 ...

  5. POJ3744(概率dp)

    思路:一长段概率乘过去最后会趋于平稳,所以因为地雷只有10个,可以疯狂压缩其位置,这样就不需要矩阵乘优化了.另外初始化f[0] = 0, f[1] = 1,相当于从1开始走吧.双倍经验:洛谷1052. ...

  6. 101 to 010 Atcoder CODE FESTIVAL 2017 qual B D

    https://www.luogu.org/problemnew/show/AT3575 题解 根本不会.. 错误记录:缺少32行的转移.显然这个转移是必要的 #include<cstdio&g ...

  7. Spring注解和JDK注解

    1.添加xsd约束 xmlns:context="http://www.springframework.org/schema/context" http://www.springf ...

  8. CF1079C Playing Piano

    思路: dp. 实现: #include <bits/stdc++.h> using namespace std; ], dp[][]; int main() { int n; while ...

  9. Idea 2017注册码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  10. log explorer使用的几个问题[转载]

    1)对数据库做了完全 差异 和日志备份备份时选用了删除事务日志中不活动的条目再用Log explorer打试图看日志时提示No log recorders found that match the f ...