题目

题目地址:PAT 乙级 1041

题解

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

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

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

代码

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4
 5 struct stu {
 6     string num;
 7     int shiji;
 8     int kaoshi;
 9 };
10
11 stu s[1005];
12
13 void sort(int n) {
14     for (int i = 0; i < n; i++) {
15         for (int j = i + 1; j < n; j++)
16             if (s[i].shiji > s[j].shiji) {
17                 stu tmp;
18                 tmp = s[i];
19                 s[i] = s[j];
20                 s[j] = tmp;
21             }
22     }
23 }
24
25 int main() {
26     int cnt = 0;
27     int n = 0;
28     cin >> n;
29     while (n--) {
30         string tmp;
31         int tmp1 = 0, tmp2 = 0;
32         cin >> tmp >> tmp1 >> tmp2;
33         s[cnt].num = tmp;
34         s[cnt].shiji = tmp1;
35         s[cnt].kaoshi = tmp2;
36         cnt++;
37     }
38     sort(cnt);
39     int m = 0;
40     cin >> m;
41     while (m--) {
42         int tmp = 0;
43         cin >> tmp;
44         cout << s[tmp - 1].num << " " << s[tmp - 1].kaoshi << endl;
45     }
46
47     return 0;
48 }

转载于:https://www.cnblogs.com/moujun1001/p/9555868.html

PAT 乙级 1041相关推荐

  1. pat 乙级 1041 考试座位号(C++)

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

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

    点击链接PAT乙级-AC全解汇总 题目: 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示 ...

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

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

  4. [PAT乙级]1041 考试座位号

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

  5. PAT 乙级 1041. 考试座位号(15) Java版

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

  6. PAT乙级—1041 考试座位号 (15分)

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

  7. PAT乙级 | 1041 考试座位号 (15分)

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

  8. PAT 乙级 1041 考试座位号

    思路是 以"试机座位号"为关键字,"准考证号"和"考试座位号"为值建立一张表,把信息储存到这张表内,查询的时候直接查表即可. #includ ...

  9. PAT乙级-1041 考试座位号

    题目描述 实现代码 #include<iostream> #include<string> using namespace std;int main(void) {int n; ...

最新文章

  1. [置顶] Activity启动流程
  2. P、NP、NP完全问题、NP难问题
  3. 使用Thread类来创建线程
  4. 三体与计算机科学与技术,《三体》作者刘慈欣:AlphaGo赢了,但人工智能不可能强大到没有弱点...
  5. LeetCode 38. Count and Say
  6. 二叉树的前序中序后序 递归与非递归解法
  7. zabbix 添加 ROS 软路由监控 WinBox设置
  8. mirbase数据库简介
  9. FPGA之JESD204B接口——总体概要 实例 下
  10. Elastic官方网络研讨会视频列表
  11. h5页面 请在微信客户端打开链接_完美解决 请在微信客户端打开链接
  12. 择一城终老,遇一人白首
  13. python 008 __ 小斌文档 | 元组
  14. 一种绝对提高开发水平的方法(转)
  15. Golang 多版本管理神器 gvm
  16. 基于S7-1200 PLC实现PIDNN控制仿真
  17. 不是贫穷限制了你的思维,是你的思维导致了你的贫穷
  18. 一文读懂Q-Learning,DQN,DDPG的连接关系
  19. nomasp 博客导读:Lisp/Emacs、Algorithm、Android
  20. 网页设计简历中个人作品html,网页设计师简历自我评价填写样本

热门文章

  1. Mac终端给命令设置别名alias的办法
  2. 介绍两个好玩的和Github相关的Chrome扩展 1
  3. 打开Excel显示:新建EXCEL文件格式和扩展名不匹配(原因+解决办法)
  4. volecity引入html,HTML5 Velocity.js 从页面下方跳入页面的登录框
  5. createelement 设置id_还记得你的第一个网络ID是什么吗?
  6. matlab 求复数的模长,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
  7. c语言行列倒置算法,循环行列的元素倒置。求指点
  8. 用32定时器让电机缓慢转动_实验三 步进电机原理及应用
  9. 公众号滑动图代码_如何实现微信公众号文章“滑动查看更多”
  10. python自动写作软件_开发了一款写作软件(OSX,Windows),附带Electron开发指南