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 是 ...
随机推荐
- css定位-position
前言 定位的目的就是把元素摆放到指定的位置. 定位上下文:定位元素的大小,位置都是相对于定位上下文的. position属性值有5个值 static:所有有元素定位默认的初始值都是static.就是不 ...
- Java 执行linux命令(转)
转自 http://blog.csdn.net/a19881029/article/details/8063758 java程序中要执行linux命令主要依赖2个类:Process和Runtime 首 ...
- XML学习2 xml生产式
- F - Balanced Number
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- Tinghua Data Mining 2
数据预处理 https://www.bilibili.com/video/av23933161/?p=11 http://www.xuetangx.com/courses/course-v1:Tsin ...
- HDU-1029-Ignatius aned the Princess IV
链接:https://vjudge.net/problem/HDU-1029#author=0 题意: 给你n个数字,请你找出出现至少(n+1)/2次的数字. 思路: dp,hash超时了,不知道是不 ...
- IIS7开启目录浏览功能
IIS7开启目录浏览功能: 在右侧操作中点击启用,并在左侧面板中勾选显示字段.
- 转 shell模拟数据库的读写
0.create table create table myTestTable as select rownum as id, to_char(sysdate + rown ...
- E. The Best among Equals
http://codeforces.com/gym/101149/problem/E 这题的话,关键是注意到一定是要max score 然后就可以选出一个L最大优先,并且R最大的区间, 扫一次就能得到 ...
- 分享一套Code Smith 搭建N层架构模板
开篇 平常开发时,由于冗余代码过多,程序员做重复的工作过多势必会影响开发效率.倘若 对重复性代码简单的复制.粘贴,虽然也能节省时间,但也需仔细一步步替换,这无疑也是一件费力的事.这时我们急需代码生成工 ...