<!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.