1.验证表

题目

成绩: 10 / 折扣: 0.8

应用中有时需要验证来自不同地方的两个表的信息是否一致。本实验编写具有如下功能的程序:输入两个学生记录表LIST1,LIST2,在表LIST2中找出所有没有在表LIST1中出现的学生记录(设表LIST1为基础数据表,非空)。

每一个学生记录元素包含两个数据项:学号(整数),姓名;

如果学生记录表LIST2中的记录都包含在LIST1中,则输出the records of LIST2 are all in the LIST1.

如果学生记录表LIST2中的存在学号,姓名不能与表LIST1完全匹配的记录,则输出 学号(%8d)姓名(%15s)is not in LIST1.

如果LIST2为空表,则输出the LIST2 is NULL.

测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示 1. 5↵ 2. 20120001 zhangli↵ 3. 20120002 wanglei↵ 4. 20120003 duyang↵ 5. 20120004 lixin↵ 6. 20120005 liufan↵ 7. 3↵ 8. 20120001 zhangli↵ 9. 20120006 lixin↵ 10. 20120002 wanglei↵ 以文本方式显示 1. 20120006 lixin is not in LIST1.↵ 1秒 64M 0
测试用例 2 以文本方式显示 1. 5↵ 2. 20120001 zhangli↵ 3. 20120002 wanglei↵ 4. 20120003 duyang↵ 5. 20120004 lixin↵ 6. 20120005 liufan↵ 7. 3↵ 8. 20120001 zhangli↵ 9. 20120004 wanglei↵ 10. 20120006 duyang↵ 以文本方式显示 1. 20120004 wanglei is not in LIST1.↵ 2. 20120006 duyang is not in LIST1.↵ 1秒 64M 0
测试用例 3 以文本方式显示 1. 5↵ 2. 20120001 zhangli↵ 3. 20120002 wanglei↵ 4. 20120003 duyang↵ 5. 20120004 lixin↵ 6. 20120005 liufan↵ 7. 0↵ 以文本方式显示 1. the LIST2 is NULL.↵ 1秒 64M 0
测试用例 5 以文本方式显示 1. 5↵ 2. 20120001 zhangli↵ 3. 20120002 wanglei↵ 4. 20120003 duyang↵ 5. 20120004 lixin↵ 6. 20120005 liufan↵ 7. 3↵ 8. 20120002 wanglei↵ 9. 20120001 zhangli↵ 10. 20120004 lixin↵ 以文本方式显示 1. the records of LIST2 are all in the LIST1.↵ 1秒 64M 0

C++完整代码

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct Student {
	int id;
	string name;
};

bool compareStudents(const Student& s1, const Student& s2) {
	return s1.id < s2.id;
}

int main() {
	vector<Student> list1, list2;

	//输入表LIST1的学生记录
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		Student student;
		cin >> student.id;
		cin >> student.name;
		list1.push_back(student);
	}

	//输入表LIST2的学生记录
	cin >> n;
	for (int i = 0; i < n; i++) {
		Student student;
		cin >> student.id;
		cin >> student.name;
		list2.push_back(student);
	}
	if (list2.empty()) {
		cout << "the LIST2 is NULL." << endl;
		return 0;
	}

	// 对表LIST1和表LIST2进行排序
	sort(list1.begin(), list1.end(), compareStudents);
	sort(list2.begin(), list2.end(), compareStudents);

	// 循环遍历两个表的学生记录并比较
	vector<Student> notInList1;
	for (const Student& student2 : list2) {
		bool found = false;

		for (const Student& student1 : list1) {
			if (student2.id == student1.id && student2.name == student1.name) {
				found = true;
				break;
			}
		}
		if (found == false) {
			notInList1.push_back(student2);
		}
	}

	// 输出结果
	if (notInList1.empty()) {
		cout << "the records of LIST2 are all in the LIST1." << endl;
	}
	else {
		for (const Student& student : notInList1) {
			cout  << student.id << " " << student.name << " is not in LIST1." << endl;
		}
	}

	return 0;

}
相关推荐
blasit14 小时前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
AI软著研究员15 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish15 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱16 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx1 天前
CART决策树基本原理
算法·机器学习
Wect2 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript