C#多选题测验:如何统计对错答案并按每题25分计算分数
C#多选题测验:分数统计与逻辑实现方案
需求说明
开发包含4道题的C#多选题测验,每题分值25分,满分100分;需基于现有单题代码,实现答案对错统计与分数计算功能。
优化实现思路
通过封装题目信息、引入分数变量循环处理每道题,避免重复代码的同时完成分数统计:
- 用结构体封装每道题的题干、选项、正确答案及分值
- 初始化总分变量,答对一题累加对应分值
- 循环遍历所有题目,统一处理答题、判断对错与分数更新
- 最后输出最终得分
完整代码实现
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
相关产品推荐
相关产品推荐

