You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#多选题测验:如何统计对错答案并按每题25分计算分数

C#多选题测验:分数统计与逻辑实现方案

需求说明

开发包含4道题的C#多选题测验,每题分值25分,满分100分;需基于现有单题代码,实现答案对错统计与分数计算功能。

优化实现思路

通过封装题目信息、引入分数变量循环处理每道题,避免重复代码的同时完成分数统计:

  1. 用结构体封装每道题的题干、选项、正确答案及分值
  2. 初始化总分变量,答对一题累加对应分值
  3. 循环遍历所有题目,统一处理答题、判断对错与分数更新
  4. 最后输出最终得分

完整代码实现

using System;

namespace MCQuiz
{
    // 封装题目信息的结构体
    struct Question
    {
        public string Title;
        public string[] Options;
        public string CorrectAnswer;
        public int Score;
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 初始化4道题目
            Question[] questions = new Question[]
            {
                new Question
                {
                    Title = "Q1-C#语言中每条语句必须以什么结尾?",
                    Options = new string[] { "a.  ;", "b.  ,", "c. .", "d.  ?" },
                    CorrectAnswer = "a",
                    Score = 25
                },
                new Question
                {
                    Title = "Q2-以下哪一个是C#中的引用类型?",
                    Options = new string[] { "a. int", "b. string", "c. bool", "d. char" },
                    CorrectAnswer = "b",
                    Score = 25
                },
                new Question
                {
                    Title = "Q3-C#中用于定义常量的关键字是?",
                    Options = new string[] { "a. const", "b. readonly", "c. static", "d. var" },
                    CorrectAnswer = "a",
                    Score = 25
                },
                new Question
                {
                    Title = "Q4-用于从控制台读取一行输入的方法是?",
                    Options = new string[] { "a. Console.Read()", "b. Console.Write()", "c. Console.ReadLine()", "d. Console.WriteLine()" },
                    CorrectAnswer = "c",
                    Score = 25
                }
            };

            int totalScore = 0;

            foreach (var question in questions)
            {
                // 输出题目和选项
                Console.WriteLine(question.Title);
                foreach (var option in question.Options)
                {
                    Console.WriteLine($"     {option}");
                }
                Console.WriteLine();

                // 获取用户答案
                Console.Write("请输入正确选项的字母(a, b, c, d):");
                string userAnswer = Console.ReadLine()?.Trim().ToLower(); // 处理空输入并统一小写

                // 判断对错并更新分数
                if (userAnswer == question.CorrectAnswer)
                {
                    Console.WriteLine($"你的答案'{userAnswer}'正确,加{question.Score}分");
                    totalScore += question.Score;
                }
                else
                {
                    Console.WriteLine($"你的答案'{userAnswer}'错误,正确答案是'{question.CorrectAnswer}'");
                }
                Console.WriteLine();
                Console.WriteLine("****************************************");
                Console.WriteLine();
            }

            // 输出最终得分
            Console.WriteLine($"测验完成!你的总得分是:{totalScore}/100");
            Console.ReadKey();
        }
    }
}

关键细节说明

  • 封装题目信息:使用Question结构体将每道题的相关信息整合,后续新增/修改题目只需调整结构体数组,代码扩展性更强
  • 分数统计:初始化totalScore为0,每答对一题就累加对应分值,最后统一输出总分
  • 输入处理:对用户输入做Trim()和ToLower()处理,避免因空格或大小写导致的判断错误
  • 代码复用:通过循环遍历题目数组,避免重复编写单题处理逻辑,减少冗余

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:01:09