此代码运行正常,但没有用于存储用户输入的内存。
我还需要以数组格式将等级分类到各自的列中,具有“S / N,类别和计数”,我不知道如何去做。任何帮助将不胜感激。
namespace ExamScore
{
class YourExamScore
{
private static string GetGrade(int examScore)
{
if (examScore >= 90 && examScore <= 100)
return "Excellent";
if (examScore >= 70 && examScore <= 89)
return "Good";
if (examScore >= 50 && examScore <= 69)
return "Satisfactory";
if (examScore >= 0 && examScore <= 49)
return "Unsatisfactory";
return "Invalid";
}
static void Main(string[] args)
{
// Print a greeting message. After all, why not?
Console.WriteLine("Welcome to ExamScore Calculator!");
Console.WriteLine("Input Your Exam Score...");
Console.WriteLine("Press -2 when you have inputed all scores");
while (true)
{
var examScore = Convert.ToInt32(Console.ReadLine());
if (examScore == -2)
{
break;
}
var grade = GetGrade(examScore);
Console.WriteLine(grade);
}
Console.WriteLine("\n\nProccessing Scores... Please Wait...");
Console.ReadLine();
}
}
}
答案 0 :(得分:0)
好吧它看起来像是一个家庭作业,所以我不打算直接帮助代码,
用于存储商标,您可以按照任何一种方式
如果您知道要使用多少输入,请使用固定大小array
var marks = new int [10];
如果没有。输入没有修复,那么你可以使用List<int>
var marks = new List();
答案 1 :(得分:0)
我不确定我是否理解正确,但我认为你要求跟踪属于特定类别的成绩数量。在这种情况下,我会这样做。
您需要跟踪一系列整数(int[]
),并为每个类别添加一个条目,以跟踪到目前为止该类别中的成绩数量。因此,您首先必须创建一个大小为4的静态数组,它将自动初始化为零。从语义上讲,每个索引代表一个类别(例如0表示优秀,1表示好,等等)。然后,在GetGrade
方法中,每个类别应该在返回之前增加正确的类别。
答案 2 :(得分:0)
要将用户输入存储在内存中,您可以使用数组或列表(List<MyData>
更好,如果您需要经常插入,Hashtable
如果您想快速搜索,MyData[]
- 最少内存通过索引等最快的访问。)
输入-2
后,您可能希望以某种方式存储(序列化)数据,因此数据将在运行之间保持不变。它可以是xml文件(XmlSerializer
),自己的格式文本/二进制文件,数据库等。
您还需要定义如何处理数据:它们是在输入后立即保存(然后数据库本身是存储器存储),还是在退出时,删除/纠正可能性等。
最后,您可以添加统计信息和报告,查询您的数据并生成结果。
有点不清楚是什么
“S / N,类别和计数”
代表。你能详细说说吗?您的代码要求score
并生成grade
。您可以计算有多少用户拥有哪个等级,总用户数,多少等级(所有这些都是“计数”),但“S / N”和“类别”令人困惑。
例如,您只想打印有多少用户属于不同的成绩。
1)非常手动的方法,在进入(使用)时计算发生次数(统计)
int grade90plus; // fields
int grade70plus;
...
// inside GetGrade
if(examScore > 90)
{
grade90plus++;
return "Excellent";
}
else
if(examScore > 70)
{
grade70plus++;
return "Good";
}
...
// report
Console.WriteLine("Excellent: " + grade90plus);
Console.WriteLine("Good: " + grade90plus);
2)High tec(序列化不友好)
public class Grade
{
public string Name;
public int Count;
public int ScoreMin;
public int ScoreMax;
public bool Test(int score) { return score >= ScoreMin && score <= ScoreMax; }
public static readonly Grade Excellent = new Grade() {Name = "Excellent", ScoreMin = 90, ScoreMax = 100};
public static readonly Grade Good = new Grade() {Name = "Good", ScoreMin = 70, ScoreMax = 89};
public static readonly Grade[] GetAll = new Grade[] { Excellent, Good };
}
private static string GetGrade(int examScore)
{
foreach(var grade in Grade.GetAll)
if(grade.Test)
{
grade.Count++;
return grade.Name;
}
return "Invalid";
}
// report
foreach(var grade in Grade.GetAll)
Console.WriteLine(grade.Name + "," + grade.Count);
您肯定可以改进这些解决方案或自行解决方案(序列化友好,利用数据库,使用Test
的表达式等)。