题目

题目地址: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. TCP协议怎么关闭?

    TCP协议是一个面向连接的传输层协议,那如果避免遭到破坏,该怎样正确关闭呢?一般正常关闭TCP连接是采用四次挥手机制,其实主体就两个,客户端和服务器交互传递,且连续四次,传递的东西是FIN数据包和AC ...

  2. hyperledger fabric 1.0.5 分布式部署 (三)

    本篇博客主要是向读者介绍 fabric 在部署时的一些细节,还有作者自己学习过程中的心得. 初始化相关密钥的程序,实际上是一个shell脚本,并且结构特别简单 generateArtifacts.sh ...

  3. Matlab图像处理相关

    相关函数: 读取:imread() %参数为文件名(路径)或url,格式等 写入:imwrite() %参数为写入数据矩阵,写入文件名(路径),格式等 显示:imshow() %显示由输入决定,属性自 ...

  4. 【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

  5. vi/vim打开文件提示Found a swap file by the name

    问题分析 有一次在远程连接主机时,用vi打开文件my.ini却提示:Found a swap file by the name ".my.ini.swp".百度了下才知道,原来在使 ...

  6. python_argparse

    使用python argparser处理命令行参数 #coding:utf-8 # 导入模块 import argparse # 创建ArgumentParser()对象 parser = argpa ...

  7. java中数据的存放位置

    引用自java编程思想四----2.2.1 程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据:(1) 寄存器.这是最快的保存区域,因为它位于和其 ...

  8. [題解]luogu_P1613跑路(最短路/倍增)

    首先要知道不能跑最短路,因為只有整2^k才能一秒到達,和倍增有關 所以我們想知道任意兩點間能否存在一條2^k長度的路徑,數據很小,可以考慮floyd 把倍增和floyd結合起來考慮發現如果i到k,k到 ...

  9. JMeter博客系列:JMeter BeanShell示例

    1.简介 Apache JMeter是一个基于Java的开源工具,使您可以在应用程序上执行功能,负载,性能和回归测试.应用程序可以在Web服务器上运行,也可以是独立的.它支持在包含静态和动态资源的客户 ...

  10. scrapy框架中Spiders用法

    scrapy框架中Spiders用法 Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据 总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以 ...