CSP-J初赛集合论专题全题型模拟卷

📅 2026/8/24 14:31:42
CSP-J初赛集合论专题全题型模拟卷
命题范围集合基本运算、容斥原理、集合与排列组合结合、集合思想在程序中的应用题型结构完全对标CSP-J初赛真题卷一、单项选择题共10题每题2分共20分1.设全集 U {1, 2, 3, 4, 5, 6}集合 A {1, 3, 5}B {2, 4, 6}则 A ∩ B A. {1, 2, 3, 4, 5, 6}B. {1, 3, 5}C. {2, 4, 6}D. ∅2.设全集 U {1, 2, 3, 4, 5}集合 A {1, 2, 3}B {3, 4, 5}则 (A ∪ B) 的补集是 A. {1, 2, 4, 5}B. {3}C. ∅D. {1, 2, 3, 4, 5}3.某班有 50 名学生其中 30 人喜欢数学25 人喜欢语文15 人两科都喜欢。那么两科都不喜欢的有 人。A. 5B. 10C. 15D. 204.设集合 A {x | x 是小于 10 的正偶数}则 A 中元素的个数为 A. 3B. 4C. 5D. 65.设全集 U {1, 2, 3, 4, 5, 6, 7, 8}A {1, 2, 3, 4}B {3, 4, 5, 6}则 A ∩ (∁ᵤB) A. {1, 2}B. {3, 4}C. {5, 6}D. {1, 2, 7, 8}6.NOIP原题变形设全集 E {1, 2, 3, 4, 5}集合 A {1, 4}B {1, 2, 5}C {2, 4}则集合 (A ∩ B) ∪ ~C 为 。A. 空集B. {1}C. {3, 5}D. {1, 5}E. {1, 3, 5}7.某年级有 100 名学生其中 60 人会游泳45 人会骑车两项都会的有 20 人。至少会一项的有 人。A. 65B. 85C. 105D. 1258.已知集合 A {1, 2, 3, 4}B {2, 4, 6, 8}则 A ∪ B 的元素个数为 A. 4B. 6C. 7D. 89.设集合 A {0, 1, 2}B {1, 2, 3}C {2, 3, 4}则 (A ∩ B) ∪ C A. {2}B. {1, 2, 3}C. {1, 2, 3, 4}D. {0, 1, 2, 3, 4}10.一个班级有10个男生和12个女生。如果要选出一个3人的小组并且小组中必须至少包含1个女生那么有多少种可能的组合 A. 220B. 540C. 660D. 880二、阅读程序题共2题每题10分共20分阅读下面的程序回答后面的问题。一集合元素去重计数cpp#include iostream using namespace std; int main() { int n, a[100], cnt[101] {0}; cin n; for (int i 0; i n; i) { cin a[i]; cnt[a[i]]; } int ans 0; for (int i 0; i 100; i) { if (cnt[i] 0) ans; } cout ans endl; return 0; }11.如果输入为text6 1 3 5 3 7 1程序的输出是 ________。12.该程序的功能是 。A. 计算输入数据的最大值B. 计算输入数据中不同数值的个数C. 计算输入数据的总和D. 对输入数据进行排序二集合交集判断cpp#include iostream using namespace std; bool hasIntersection(int A[], int n, int B[], int m) { for (int i 0; i n; i) { for (int j 0; j m; j) { if (A[i] B[j]) return true; } } return false; } int main() { int A[4] {2, 4, 6, 8}; int B[5] {1, 3, 5, 7, 9}; if (hasIntersection(A, 4, B, 5)) cout 有交集; else cout 无交集; return 0; }13.上述程序的输出结果是 ________。14.如果将 B 数组改为{1, 3, 5, 6, 9}输出结果将变为 ________。15.该程序的时间复杂度为 。A. O(n m)B. O(n × m)C. O(n²)D. O(m²)三、完善程序题共2题每题15分共30分根据题意和程序框架在空白处填入适当的语句。一集合运算求两个集合的交集以下程序的功能是输入两个集合 A 和 B元素均为不超过100的正整数输出它们的交集即同时属于 A 和 B 的元素。cpp#include iostream using namespace std; int main() { int n, m, x; bool hashA[101] {false}; bool hashB[101] {false}; cin n; for (int i 0; i n; i) { cin x; __①__; // 标记x属于集合A } cin m; for (int i 0; i m; i) { cin x; hashB[x] true; } bool first true; for (int i 0; i 100; i) { if (__②__) { // 判断x同时属于A和B if (!first) cout ; cout i; first false; } } if (first) cout 空集; return 0; }16.请将①处的语句补充完整________。17.请将②处的条件补充完整________。二容斥原理应用某班有 45 名学生在一次测试中数学优秀的有 25 人语文优秀的有 20 人英语优秀的有 18 人数学和语文都优秀的有 10 人数学和英语都优秀的有 8 人语文和英语都优秀的有 6 人三科都优秀的有 3 人。以下程序用于计算至少有一科优秀的人数。cpp#include iostream using namespace std; int main() { int total 45; int math 25, chinese 20, english 18; int math_chinese 10, math_english 8, chinese_english 6; int all 3; int atLeastOne __③__; // 容斥原理计算至少一科优秀 cout atLeastOne endl; return 0; }18.请将③处的表达式补充完整实现容斥原理的计算________。19.根据计算结果至少有一科优秀的学生有 ________ 人。20.三科都不优秀的学生有 ________ 人。 参考答案与解析一、选择题答案题号答案解析1DA 和 B 无公共元素交集为空集 ∅。2CA ∪ B {1, 2, 3, 4, 5} U所以补集为 ∅。3B至少喜欢一科 30 25 - 15 40两科都不喜欢 50 - 40 10。4B小于10的正偶数为 {2, 4, 6, 8}共4个。5A∁ᵤB {1, 2, 7, 8}A ∩ ∁ᵤB {1, 2}。6EA ∩ B {1}~C {1, 3, 5}并集为 {1, 3, 5}。7B至少会一项 60 45 - 20 85。8BA ∪ B {1, 2, 3, 4, 6, 8}共6个元素。9CA ∩ B {1, 2}与 C 并集为 {1, 2, 3, 4}。10CC(22,3) - C(10,3) 1540 - 120 1420。需要选至少1个女生总组合减全男生组合。二、阅读程序题答案题号答案解析114不同数值为 {1, 3, 5, 7}共4个。12Bcnt数组记录每个数值出现次数ans统计0的个数即不同数值的个数。13无交集A中偶数与B中奇数无交集。14有交集两个集合都有元素6。15B双重循环遍历所有元素对时间复杂度 O(n×m)。三、完善程序题答案题号答案解析16hashA[x] true使用布尔数组标记x属于集合A。17hashA[i] hashB[i]同时属于A和B的元素即为交集。18math chinese english - math_chinese - math_english - chinese_english all三集合容斥原理1942252018-10-8-63 42。20345 - 42 3 人三科都不优秀。 分数参考分数等级备考建议60-70优秀集合论基础扎实可挑战更高难度的真题45-59良好个别知识点需巩固建议查漏补缺30-44一般需系统复习集合基本概念和容斥原理 30待加强建议从集合的基本运算和文氏图入手复习 备考建议从CSP-J初赛的命题规律来看集合论题型主要出现在选择题中考查形式包括集合的并交补运算、容斥原理常与实际问题结合、集合与排列组合的综合应用。选择题每题2分共15题集合论相关题目通常会出现1-2题。备考时建议熟练掌握集合的基本运算并、交、补、差及其优先级重点攻克容斥原理特别是二集合和三集合的公式应用关注集合思想在程序中的应用如用布尔数组表示集合、去重计数等