如何实现学生姓名与成绩的两列列表?现有代码仅输出一组数据求助
问题解决:学生成绩列表输入与输出修正
原代码问题点
- 未使用数组存储成绩,仅靠单个变量
grd,最终只能保留最后一个输入的成绩 - 多余的外层
inc循环会重复触发输入流程,完全不符合需求 - 输出逻辑仅打印最后一次输入的姓名和成绩,没有遍历展示所有学生信息
修正后的完整代码
static void Main(string[] args) { Console.WriteLine("Welcome to the grade book input the student and grades \n"); // 用数组分别存储姓名和成绩,对应索引关联 string[] students = new string[5]; // 测试用5个,如需26个改数字即可 int[] grades = new int[5]; Console.WriteLine("Names \t\t Grades"); // 循环处理每个学生的姓名和成绩输入 for (int i = 0; i < 5; i++) { Console.WriteLine($"Please enter name for student {i+1}"); students[i] = Console.ReadLine(); Console.WriteLine($"Please enter grade for {students[i]}"); bool valid; int grd; do { valid = int.TryParse(Console.ReadLine(), out grd); if (!valid || grd > 100 || grd < 0) Console.WriteLine("Please enter a grade between 0-100"); else Console.WriteLine($"Your grade is {grd}"); } while (!valid || grd > 100 || grd < 0); grades[i] = grd; } // 打印所有学生的姓名和成绩列表 Console.WriteLine("\n--- Final Grade List ---"); Console.WriteLine("Names \t\t Grades"); for (int i = 0; i < 5; i++) { Console.WriteLine($"{students[i]} \t\t {grades[i]}"); } }
关键修正说明
- 新增
int[] grades数组,与students数组通过索引一一对应,确保每个学生的成绩不会丢失 - 移除多余的外层循环,改用单个循环依次处理每个学生的输入,流程更清晰
- 输入完成后统一遍历数组打印所有信息,保证两列列表的对应关系
- 数组索引从0开始,符合C#的数组规范,避免索引越界风险
内容的提问来源于stack exchange,提问作者Spic
相关产品推荐
相关产品推荐

