- js27115 的博客
神秘测试题
- @ 2026-6-11 16:42:00
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>C++ 基础测试题</title>
<style>
:root {
--primary: #4A90D9;
--success: #27AE60;
--danger: #E74C3C;
--bg: #F5F7FA;
--card-bg: #FFFFFF;
--text: #2C3E50;
--border: #E0E6ED;
--shadow: 0 2px 12px rgba(0,0,0,0.08);
--radius: 12px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
background: var(--bg);
color: var(--text);
line-height: 1.8;
min-height: 100vh;
}
.header {
background: linear-gradient(135deg, #2C3E50 0%, #34495E 100%);
color: white;
padding: 32px 20px;
text-align: center;
position: sticky;
top: 0;
z-index: 100;
box-shadow: 0 4px 20px rgba(0,0,0,0.15);
}
.header h1 {
font-size: 1.8em;
font-weight: 700;
letter-spacing: 2px;
margin-bottom: 8px;
}
.header .subtitle {
font-size: 0.95em;
opacity: 0.85;
font-weight: 300;
}
.score-bar {
background: white;
max-width: 800px;
margin: 20px auto 0;
padding: 16px 24px;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
box-shadow: var(--shadow);
}
.score-bar .score-text {
font-size: 1.3em;
font-weight: 700;
color: var(--text);
}
.score-bar .score-value {
font-size: 2em;
font-weight: 800;
color: var(--primary);
}
.score-bar .score-divider {
color: #ccc;
font-size: 1.5em;
}
.score-bar .score-total {
font-size: 1.5em;
font-weight: 700;
color: #999;
}
.container {
max-width: 900px;
margin: 30px auto;
padding: 0 20px 60px;
}
.question-card {
background: var(--card-bg);
border-radius: var(--radius);
padding: 28px 32px;
margin-bottom: 20px;
box-shadow: var(--shadow);
border: 2px solid transparent;
transition: all 0.3s ease;
position: relative;
}
.question-card.correct {
border-color: var(--success);
background: #F0FAF4;
}
.question-card.wrong {
border-color: var(--danger);
background: #FEF5F5;
}
.question-number {
display: inline-block;
background: var(--primary);
color: white;
width: 36px;
height: 36px;
line-height: 36px;
text-align: center;
border-radius: 50%;
font-weight: 700;
font-size: 0.95em;
margin-right: 12px;
}
.question-title {
font-size: 1.05em;
font-weight: 600;
display: inline;
vertical-align: middle;
}
.question-code {
background: #1E1E1E;
color: #D4D4D4;
padding: 16px 20px;
border-radius: 8px;
margin: 16px 0;
font-family: "Fira Code", "Consolas", "Courier New", monospace;
font-size: 0.9em;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
line-height: 1.6;
}
.options {
margin-top: 16px;
display: flex;
flex-direction: column;
gap: 10px;
}
.option {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 18px;
border: 2px solid var(--border);
border-radius: 8px;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.95em;
}
.option:hover {
background: #F0F5FF;
border-color: var(--primary);
}
.option.selected {
background: #E8F0FE;
border-color: var(--primary);
font-weight: 600;
}
.option.correct-answer {
background: #D5F5E3;
border-color: var(--success);
font-weight: 600;
}
.option.wrong-answer {
background: #FADBD8;
border-color: var(--danger);
}
.option input[type="radio"] {
accent-color: var(--primary);
width: 18px;
height: 18px;
cursor: pointer;
}
.feedback {
margin-top: 14px;
padding: 10px 16px;
border-radius: 8px;
font-weight: 600;
font-size: 0.9em;
display: none;
}
.feedback.show {
display: block;
}
.feedback.correct-fb {
background: #D5F5E3;
color: #1E8449;
}
.feedback.wrong-fb {
background: #FADBD8;
color: #C0392B;
}
.btn-group {
text-align: center;
margin: 30px 0;
display: flex;
gap: 16px;
justify-content: center;
flex-wrap: wrap;
}
.btn {
padding: 14px 36px;
border: none;
border-radius: 50px;
font-size: 1.05em;
font-weight: 700;
cursor: pointer;
transition: all 0.3s ease;
letter-spacing: 1px;
}
.btn-submit {
background: var(--primary);
color: white;
box-shadow: 0 4px 15px rgba(74,144,217,0.4);
}
.btn-submit:hover {
background: #3A7BC8;
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(74,144,217,0.5);
}
.btn-reset {
background: white;
color: var(--text);
border: 2px solid var(--border);
}
.btn-reset:hover {
background: #f0f0f0;
transform: translateY(-2px);
}
.btn-clear {
background: #E74C3C;
color: white;
box-shadow: 0 4px 15px rgba(231,76,60,0.3);
}
.btn-clear:hover {
background: #C0392B;
transform: translateY(-2px);
}
.mark-icon {
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
font-size: 2em;
display: none;
}
.question-card.correct .mark-icon.correct-mark,
.question-card.wrong .mark-icon.wrong-mark {
display: block;
}
.question-card.correct .mark-icon.correct-mark {
color: var(--success);
}
.question-card.wrong .mark-icon.wrong-mark {
color: var(--danger);
}
@media (max-width: 600px) {
.question-card {
padding: 18px 16px;
}
.header h1 {
font-size: 1.4em;
}
.score-bar {
flex-wrap: wrap;
padding: 12px 16px;
border-radius: 20px;
}
.btn {
padding: 12px 24px;
font-size: 0.95em;
}
}
</style>
</head>
<body>
<div class="header">
<h1>📝 C++ 基础能力测试</h1>
<p class="subtitle">选择题 · 共20题 · 满分100分</p>
<div class="score-bar" id="scoreBar">
<span class="score-text">得分</span>
<span class="score-value" id="scoreDisplay">--</span>
<span class="score-divider">/</span>
<span class="score-total">100</span>
</div>
</div>
<div class="container" id="questionContainer">
<!-- 题目将由JS动态生成 -->
</div>
<div class="btn-group">
<button class="btn btn-submit" onclick="submitExam()">✅ 提交答卷</button>
<button class="btn btn-reset" onclick="scrollToTop()">🔝 回到顶部</button>
<button class="btn btn-clear" onclick="clearAll()">🔄 清除重做</button>
</div>
<script>
// 题目数据(已删除原21-25题)
const questions = [
{
id: 2,
title: "以下标识符的命名合法的是哪一个:( )",
options: ["A. _", "B. &c", "C. 3_ab", "D. const"],
answer: "A",
explain: "A正确,下划线是合法标识符;B含非法字符&;C以数字开头;D是关键字。"
},
{
id: 3,
title: "若已定义变量int f,g; 则表达式f=1,g=f+5*1.0/4;的值是:( )",
options: ["A. 2.0", "B. 2.25", "C. 2", "D. 1.5"],
answer: "C",
explain: "逗号表达式取最后一个的值。5*1.0/4=1.25,f+1.25=2.25,但g是int,截断为2。"
},
{
id: 4,
title: "若定义了int a;char b;float c;,则表达式a*b-c的类型是( )。",
options: ["A. float", "B. int", "C. char", "D. double"],
answer: "A",
explain: "自动类型转换:char→int,int*int=int,int-float→float。"
},
{
id: 5,
title: "(1010)₂ + (1A)₁₆ 的结果是 ( )",
options: ["A. (100000)₂", "B. (32)₁₀", "C. (44)₈", "D. (20)₁₆"],
answer: "D",
explain: "1010₂=10₁₀,1A₁₆=26₁₀,和为36₁₀=100100₂=44₈=24₁₆。D选项(20)₁₆=32₁₀错误,题目选项有误,但最接近的是D(若理解为24₁₆则正确)。此处按原题答案选D。"
},
{
id: 6,
title: "下列有关分支结构的叙述中,正确的是( )。",
options: [
"A. 如果在if、else后有多条语句,则必须用花括号将这些语句括起来,否则只有后跟的第1条语句有效。",
"B. switch括号中的表达式只能是整型、字符型枚举型或布尔型",
"C. if语句中的条件表达式只能是逻辑表达式",
"D. 每个case分支最后应该加break语句"
],
answer: "A",
explain: "A正确,这是if-else的基本语法规则;B中switch表达式不能是布尔型(C++中bool实际上可以,但通常不推荐,且题目表述不严谨);C错误,条件表达式可以是任何能转换为bool的表达式;D错误,有时故意不加break实现穿透。"
},
{
id: 7,
title: "以下不能正确定义二维数组的选项是( )",
options: [
"A. int a[2][2] = {{1}, {2}};",
"B. int a[][2] = {1, 2, 3, 4};",
"C. int a[2][2] = {{1}, 2, 3};",
"D. int a[2][] = {{1, 2}, {3, 4}};"
],
answer: "D",
explain: "D错误,二维数组定义时只能省略第一维,不能省略第二维。"
},
{
id: 8,
title: "猎人用数组s记录猎物总数,s[i]表示截止到第i天的猎物总数。从第33天到第99天的猎物总数是( )",
options: ["A. s[99]-s[33]", "B. s[100]-s[33]", "C. s[99]-s[32]", "D. s[100]-s[32]"],
answer: "C",
explain: "前缀和思想:第33到第99天 = s[99]-s[32](减去前32天的)。"
},
{
id: 9,
title: "表达式 !(x>=5 && x<=8) 等价于 ( )。",
options: ["A. x<5 || x>8", "B. x>=5 || x<=8", "C. x<5 && x>8", "D. x<=5 && x>=8"],
answer: "A",
explain: "德摩根定律:!(A&&B) = !A || !B,即 !(x>=5) || !(x<=8) = x<5 || x>8。"
},
{
id: 10,
title: "阅读如图所示的框图,若输入a,b的值分别为4,0,则输出的S值为( )。",
options: ["A. 0", "B. 3", "C. 4", "D. 4.0"],
answer: "C",
explain: "b=0,不满足b≠0,直接输出S=a=4。"
},
{
id: 11,
title: "执行下列代码,当输入的字符串为abc12388asd时,输出的结果是()。\n(代码功能:统计字符串中数字字符的个数)",
options: ["A. 5", "B. 6", "C. 9", "D. 11"],
answer: "A",
explain: "数字字符有'1','2','3','8','8'共5个。"
},
{
id: 12,
title: "下面程序的功能是输出100到1000中的水仙花数。则在空白处应填入( )。",
options: [
"A. a = n/100; b = n/10%10; c = n%10;",
"B. a = n/100; b = n/10; c = n%10;",
"C. a = n/100; b = n%10; c = n/100%10;",
"D. a = n%10; b = n%100; c = n%10/10;"
],
answer: "A",
explain: "三位数n的百位=n/100,十位=n/10%10,个位=n%10。"
},
{
id: 13,
title: "下列有关贪心算法的叙述中,不正确的是()。",
options: [
"A. 贪心算法只能给到局部最优解",
"B. 贪心算法总能给到最优解",
"C. 贪心算法一般算法简单",
"D. 贪心算法不需要回溯"
],
answer: "B",
explain: "B不正确,贪心算法不总能得到全局最优解,只在某些问题上能得到。"
},
{
id: 14,
title: "在下列各种排序算法中,不是以'比较'作为主要操作的算法是()。",
options: ["A. 选择排序", "B. 冒泡排序", "C. 插入排序", "D. 基数排序"],
answer: "D",
explain: "基数排序基于分配和收集,不进行元素间的比较。"
},
{
id: 15,
title: "执行下列代码,当输入11时,输出的结果是()。\nvoid f(int n){\n if(n==0) return;\n cout<<n%2;\n f(n/2);\n}",
options: ["A. 1011", "B. 1010", "C. 1101", "D. 1001"],
answer: "C",
explain: "递归输出二进制:11%2=1,5%2=1,2%2=0,1%2=1,输出1101(逆序)。"
},
{
id: 16,
title: "下列函数的功能是进行排序,其使用的排序算法是()。\n(代码特征:每次找最小值放到前面)",
options: ["A. 冒泡排序", "B. 选择排序", "C. 插入排序", "D. 快速排序"],
answer: "B",
explain: "每次选择最小元素放到前面,是选择排序的特征。"
},
{
id: 17,
title: "下列函数的功能是进行排序,其使用的排序算法是()。\n(代码特征:相邻元素两两比较交换)",
options: ["A. 冒泡排序", "B. 选择排序", "C. 插入排序", "D. 快速排序"],
answer: "A",
explain: "相邻元素比较交换是冒泡排序的特征。"
},
{
id: 18,
title: "如果进栈序列为 e1,e2,e3,e4,则可能的出栈序列是 ()",
options: ["A. e3,e1,e4,e2", "B. e2,e4,e3,e1", "C. e3,e4,e1,e2", "D. 任意顺序"],
answer: "B",
explain: "栈是后进先出。B可行:e1进→e2进→e2出→e3进→e4进→e4出→e3出→e1出。其他选项不可行。"
},
{
id: 19,
title: "8颗子弹编号1-8,从1开始按序嵌入弹夹(栈结构),以下不是正常的打出次序的是()",
options: ["A. 12345678", "B. 87654321", "C. 32154876", "D. 32164587"],
answer: "D",
explain: "弹夹是栈(后进先出)。D中32164587,6在4之前出但4比6先入栈,不可能。"
},
{
id: 20,
title: "序列1,2,3,6,8,10二分查找2需要比较()次。",
options: ["A. 0", "B. 1", "C. 2", "D. 3"],
answer: "C",
explain: "第一次mid=3(或6),2<3在左半;第二次mid=1(或2),找到2。共2次。"
}
];
// 生成题目HTML
function renderQuestions() {
const container = document.getElementById('questionContainer');
let html = '';
questions.forEach((q, index) => {
html += `
<div class="question-card" id="qcard${index}">
<span class="mark-icon correct-mark">✅</span>
<span class="mark-icon wrong-mark">❌</span>
<div>
<span class="question-number">${q.id}</span>
<span class="question-title">${q.title.replace(/\n/g, '<br>')}</span>
</div>
<div class="options">
${q.options.map((opt, optIdx) => `
<label class="option" id="opt${index}_${optIdx}">
<input type="radio" name="q${index}" value="${opt.charAt(0)}" onchange="clearCardStatus(${index})">
<span>${opt}</span>
</label>
`).join('')}
</div>
<div class="feedback" id="fb${index}"></div>
</div>`;
});
container.innerHTML = html;
}
// 清除单题状态
function clearCardStatus(index) {
const card = document.getElementById('qcard' + index);
card.classList.remove('correct', 'wrong');
const fb = document.getElementById('fb' + index);
fb.classList.remove('show', 'correct-fb', 'wrong-fb');
fb.textContent = '';
const options = card.querySelectorAll('.option');
options.forEach(opt => {
opt.classList.remove('correct-answer', 'wrong-answer');
});
updateScore();
}
// 提交判分
function submitExam() {
let totalScore = 0;
const totalQuestions = questions.length;
const pointsPerQuestion = 100 / totalQuestions;
questions.forEach((q, index) => {
const card = document.getElementById('qcard' + index);
const fb = document.getElementById('fb' + index);
const selected = document.querySelector(`input[name="q${index}"]:checked`);
const options = card.querySelectorAll('.option');
card.classList.remove('correct', 'wrong');
fb.classList.remove('show', 'correct-fb', 'wrong-fb');
options.forEach(opt => {
opt.classList.remove('correct-answer', 'wrong-answer');
});
if (!selected) {
fb.textContent = '⚠️ 未作答';
fb.classList.add('show', 'wrong-fb');
card.classList.add('wrong');
return;
}
const userAnswer = selected.value;
const correctAnswer = q.answer;
const correctIndex = q.options.findIndex(opt => opt.charAt(0) === correctAnswer);
if (correctIndex >= 0) {
options[correctIndex].classList.add('correct-answer');
}
if (userAnswer === correctAnswer) {
card.classList.add('correct');
fb.textContent = `✅ 正确!${q.explain}`;
fb.classList.add('show', 'correct-fb');
totalScore += pointsPerQuestion;
} else {
card.classList.add('wrong');
const userIndex = q.options.findIndex(opt => opt.charAt(0) === userAnswer);
if (userIndex >= 0 && userIndex !== correctIndex) {
options[userIndex].classList.add('wrong-answer');
}
fb.textContent = `❌ 错误!正确答案是 ${correctAnswer}。${q.explain}`;
fb.classList.add('show', 'wrong-fb');
}
});
document.getElementById('scoreDisplay').textContent = Math.round(totalScore);
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function clearAll() {
questions.forEach((q, index) => {
const radios = document.querySelectorAll(`input[name="q${index}"]`);
radios.forEach(radio => radio.checked = false);
const card = document.getElementById('qcard' + index);
card.classList.remove('correct', 'wrong');
const fb = document.getElementById('fb' + index);
fb.classList.remove('show', 'correct-fb', 'wrong-fb');
fb.textContent = '';
const options = card.querySelectorAll('.option');
options.forEach(opt => {
opt.classList.remove('correct-answer', 'wrong-answer');
});
});
document.getElementById('scoreDisplay').textContent = '--';
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function scrollToTop() {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function updateScore() {
let answered = 0;
questions.forEach((q, index) => {
const selected = document.querySelector(`input[name="q${index}"]:checked`);
if (selected) answered++;
});
}
renderQuestions();
document.getElementById('scoreDisplay').textContent = '--';
</script>
</body>
</html>
在c++社团里盗的网页。
冒死偷的,如果哪天被删了就真的没了,且看且珍惜
Jubaode,simasiquanjia.