PAT 乙级 1041
题目
题目地址: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的更多相关文章
- PAT乙级1041
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032 题解 简单的信息录入和查询而已. ...
- PAT 乙级 1041 考试座位号(15) C++版
1041. 考试座位号(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 每个PAT考生在参加考试时都会被分 ...
- PAT乙级-1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
随机推荐
- Mybatis源码解读-设计模式总结
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...
- springcloud2 (三) 服务治理Eureka及其实现原理
代码地址:https://gitlab.com/showkawa/architect/tree/master/microservice/eurake 基于springcloud2分析eurake知识点 ...
- chmod 详解
http://man.linuxde.net/chmod chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限 chmod u=rwx,g=rw,o=r f01 c ...
- [题解](数学)BZOJ_1257_余数求和
来源:https://blog.csdn.net/loi_dqs/article/details/50522975 并不知道为什么是sqrt(n)的段数......书上写的看不懂...... 但是这个 ...
- 16 Groovy 和并发
Gpars是groovy的并行处理框架.其支持Actors, Map/Reduce, Dataflow, Fork/Join.关注更多请访问GPars website.
- morphia(2)-添加
1.简单 @Test public void add() throws Exception { final Employee em = new Employee("遥远2",500 ...
- python对文件的压缩解压
python自带的zipfile的模块支持对文件的压缩和解压操作 zipfilp.ZipFile 表示创建一个zip对象 zipfile.ZipFile(file[, mode[, compressi ...
- git reflog查看所有操作记录
git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录 具体一个例子, ...
- 使用SSL配置Nginx反向代理的简单指南
反向代理是一个服务器,它接收通过Web发出的请求,即http和https,然后将它们发送到后端服务器(或服务器).后端服务器可以是单个或一组应用服务器,如Tomcat,wildfly或Jenkins等 ...
- Linux 安装reids
1.下载: wget http://download.redis.io/releases/redis-3.0.0.tar.gz 2.解压: .tar.gz 3.安装: cd /redis- make ...