我是靠谱客的博主 过时绿草,最近开发中收集的这篇文章主要介绍PAT乙级(查找元素) 1041、1004、1028、10321041 考试座位号1004 成绩排名1028 人口普查1032 挖掘机技术哪家强,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1041 考试座位号
每个 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
代码:
(1)循环版本:
#include<stdio.h>
int main() {
struct Info {
long long number;//准考证号
int test;//试机座位号
int exam;//考场座位号
}info[1000];
int times, i, count, j;
int find[1000];
scanf("%d", ×);//输入总的结构体的个数
for (i = 0; i < times; i++) {//存入准考证号、试机座位号、考试座位号
scanf("%lld%d%d", &info[i].number, &info[i].test, &info[i].exam);
}
scanf("%d", &count);//输入要查找几个元素
for (i = 0; i < count; i++) {//存入要寻找的试机座位号
scanf("%d", &find[i]);
}
for (i = 0; i < count; i++) {//遍历要寻找的试机座位号
for (j = 0; j < times; j++) {//遍历info结构体中的test元素
if (find[i] == info[j].test) {//如果相等,则输出该结构体中的其他元素
printf("%lld %dn", info[j].number, info[j].exam);
}
}
}
return 0;
}
(2)不需要循环版本:
因为每个人试机座位号都不同,因此,可以将试机座位号作为结构体的下标进行存储,这样,仅需按照顺序输出存入的结构体下标即可
#include<stdio.h>
int main(){
struct Info{//定义Info结构体
long long number;//准考证号
int exam;//考试座位号
}info[1001];//数组元素要大于1000,因为接下来的试机座位号是1-1000的数字
int num, i, times, exam1, test, count;
long long number1;
scanf("%d", ×);//输入考生个数
for(i = 0; i < times; i++){
scanf("%lld%d%d", &number1, &test, &exam1);
info[test].number = number1;//存入试机座位号为小标的结构体
info[test].exam = exam1;//存入试机座位号为小标的结构体
}
scanf("%d", &count);//输入查询个数
for(i = 0; i < count; i++){
scanf("%d", &test);//输入试机座位号
printf("%lld %dn", info[test].number, info[test].exam);//输出试机座位号为下标的结构体的元素
}
return 0;
}
1004 成绩排名
读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
... ... ...
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名
和学号
均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
代码:
(1)通过成绩作为数组下标方式输出
#include<stdio.h>
#include<string.h>
int main() {
struct strudentInformation {
//题中给出的是不超过10个字符的字符串
//如果测试点是刚好10个字符,且设置为10个字符大小的字符数组
//那就不会有空间放下计算机检测结束的'