首页 > 其他分享 >7-3 考试座位号

7-3 考试座位号

时间:2023-12-05 21:07:36浏览次数:33  
标签:定义 试机 int 二维 数组 array 座位号 考试

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。

输入样例:

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

输出样例:

3310120150912002 2
3310120150912119 1

实现代码:

建立 string 类型的二维数组 stu[1005][2],假设试机座位号为 t,将输入得到的学生准考证号 s1 保存在 stu[t][0]中,考试座位号 s2 保存在 stu[t][1]中,对于查询的 m 个学生, 已知试机座位号 t,则直接输出 stu[t][0]和 stu[t][1]即可。

#include<iostream>
using namespace std;
int main()
{
    string stu[1005][2],s1,s2;
    int n,m,t;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s1>>t>>s2;
        stu[t][0]=s1;
        stu[t][1]=s2;
    }
    cin>>m;
    for(int i=0;i<m;i++){
        cin>>t;
        cout<<stu[t][0]<<" "<<stu[t][1]<<endl;
    }
    return 0;
}

知识点:

二维数组:

一维数组对于存储和处理一组数据很有用,但是有时候,很有必要使用多维数组。

例如,在统计学生成绩的程序中,教师可以将一个学生的所有科目考试分数记录在一个 double 类型的数组中。如果老师有40 名学生,那就意味着需要 40 个 double 类型数组来记录整个班级的分数。当然,在这里定义 40 个单独的一维数组显然是不合适的,而只要定义一个二维数组就可以了。

到目前为止,教程中所介绍的数组都只是一维数组,因为它们只能保存一组数据。二维数组,也称为 2D 数组,可以容纳多组数据。最好将二维数组看作具有行和列元素的表,一个二维数组可以被认为是一个带有 x 行和 y 列的表格。如下图 所示:

7-3 考试座位号_i++


这张图是以二维数组显示了 3 行 4 列的考试成绩。

注意:数组的索引(下标)编号是从0开始的,所以3 行的编号为 0〜2, 4 列的编号则为 0〜3。数组中一共有 3*4=12 个元素。

二、二维数组的内存存储

一般的我们说的C/C++中的二维数组是定义在栈中的二维数组。比如定义了一个array[3][4],那就指的是定义了一个三行四列的矩阵形状的二维数组,如下图所示。这样的矩阵在内存中是以箭头右边的方式存放的,也就是说实际上我们定义的二维数组在内存中仍然像是一维数组那样连续存储的。可以想象为把一个矩阵一层层伸展铺平。

7-3 考试座位号_ci_02

三、二维数组的定义

二维数组的定义可以是静态二维数组,可以是动态数组。

要定义一个二维数组,需要两个大小声明符。第一个是行数,第二个是列数。
定义方法有:
下面是一个 3 行 4 列的二维数组定义的例子:

方法一: 直接确定二维数组的行和列数

(1)确定二维数组的行和列数,但是不确定数组中的具体元素:

// 定义一个double类型的2行3列的二维数组,并没有确定数组中的具体元素
double score[3][4];

(2)不完全确定数组中的具体元素

// 定义一个int类型的2行3列的二维数组,并没有确定数组中的具体元素
int a[3][4] = {1,2,3,4,5,6}

(3)确定二维数组的行和列数,并且确定数组中的具体元素:

a.直接将二维数组铺平,写成一维数组的形式

//a是一个2行3列的二维数组,并且确定好了里边的元素
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

b.使用标准的二维数组的初始化方式

int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};

方法二: 不用指明二维数组的行数,但要指明列数

注意:二维数组必须写明列数,行数可以不写明!

/* 经典的写法
 */
int array[][4];
 
/* 一种更帅的写法,本质上是定义了一个数组指针
 */
int (*array)[4];

方法三: 动态分配的方式,这种写法比较灵活,在定义的时候不需要指明二维矩阵的行数和列数

/* 使用动态分配内存的形式,用malloc
 */
int **array // array[M][N]
array = (int **)malloc(M * sizeof(int *));
for(int i = 0; i < M; i++) {
    array[i] = (int *)malloc(N * sizeof(int));
}
 
// 释放
for(int i = 0; i < M; i++)
    free(array[i]);
free(array);
 
/* 使用动态分配内存的形式,用new
 */
int **array // array[M][N]
array = new int*[M];
for(int i = 0; i < M; i++) {
    array[i] = new int[N];
}
 
// 释放
for(int i = 0; i < M; i++) 
    delete [] array[i];
delete [] array;

标签:定义,试机,int,二维,数组,array,座位号,考试
From: https://blog.51cto.com/u_16286645/8694998

相关文章

  • Salesforce认证考试,这5招让你轻松过关!
    认证是很多求职者获得第一份Salesforce工作的敲门砖。认证不仅是个人能力的体现,而且在学习备考的过程中,可以更系统地梳理知识,了解最新的产品和功能,对Salesforce有更全面和深入的认识。大多数Salesforce从业者都至少持有一项认证,并且自由侠部落之前发布的薪酬调查报告显示,认证会......
  • 2013年12月大学英语四级考试 作文
    2013年12月大学英语四级考试真题及答案解析》由出国留学网英语频道为您整理,欢迎您访问出国留学网浏览更多资讯。PartIWriting作文一:Forthispart,youareallowed30minutestowriteashortessaybasedonthepicturebelow.Youshouldstartyouress......
  • 11.30 考试总结
    之前好像做过,不过当时我一个题没过,赛后也只改过了BCsolution做法是显然的,代码是不会的,数据结构是最菜的,凸包是看不懂的考虑直接前缀和,然后随便用前缀和拆一下柿子,发现对于每个p好像都是一个单点的函数最值查询(把k看成自变量),那么离线下来维护凸包大概就行了不过要注意有......
  • 2024年PMP考试会有变化吗?你关心的来了!
    2024年PMP®考试大纲依然使用项目管理协会(PMI协会)于2021年1月发布的考试内容大纲。  PMP®考试题目将分布在以下三个领域: 1【人员】考试内容所占比例42% 2【过程】考试内容所占比例50% 3【业务环境】考试内容所占比例8% 在考试中约一半的内容将体现项目管理中的预测法,另一......
  • 高中考试成绩分析(选科后)
    高中学生成绩分析是一项综合性的工作,大的过程分为选科前和选科后。选科前关注的重点是学生在文理各科目中的优势和兴趣,通过各科目历次考试的排名,结合学生自身的兴趣来确定选科方向。选科后关注的重点转移为各分数线层级的学生数量分布和变化情况,通过分析学生历次考试的成绩和排名,......
  • 标题:考试认证在计算机领域的重要性
    在当今竞争激烈的就业市场上,计算机技能的认证考试越来越受到青睐。无论是寻找工作还是提升职业发展,通过专业的考试认证都可以帮助个人展示自己的技能和知识水平,为自己的职业生涯增添更多可能性。首先,考试认证可以证明一个人在特定领域的专业知识和技能。例如,像Microsoft的MCP、Cisc......
  • 标题:计算机考试认证的重要性及应对策略
    摘要:计算机考试认证是现代社会中,评估和确认个人计算机技能水平的重要方式之一。本文旨在探讨计算机考试认证的重要性以及应对策略,以帮助读者更好地理解和应对这一面临的挑战。一、引言随着计算机技术的迅猛发展,计算机已经成为现代社会不可或缺的一部分。然而,与此同时,计算机技术也变......
  • 软件设计师考试
    软件设计师考试说明来源:中国计算机技术职业资格网1.考试要求:(1)掌握数据表示、算术和逻辑运算;(2)掌握相关的应用数学、离散数学的基础知识;(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;(5)熟练掌握常用......
  • 标题:计算机认证考试:铸就专业技能的里程碑
    摘要:计算机认证考试旨在评估个人在计算机领域的专业知识和技能,是提升职业竞争力和求职成功的关键。本文将探讨计算机认证考试的意义,以及有效准备和应对考试的方法。引言:随着计算机技术的迅速发展,计算机专业人才备受市场青睐。然而,在充满竞争的求职环境中,如何证明自己具备高水平的计......
  • 计算机认证考试:提升专业技能的关键步骤
    摘要:计算机认证考试是评估和验证个人在计算机科学和信息技术领域的专业知识和技能的重要途径。本文将为读者介绍计算机认证考试的重要性,以及为成功通过考试而采取的步骤。引言:在当今数字化时代,计算机技术的不断发展使得拥有强大计算机能力的专业人员越来越受追捧。然而,在竞争激烈的......