C# 程序生成学生成绩单

csharpserver side programmingprogramming更新于 2025/9/18 8:49:00

简介

有很多方法可以为学生生成成绩单。今天我们将学习其中一种。在本文中,我们将学习一个 C# 程序来生成学生的成绩单。让我们先学习算法。

算法

让我们讨论一下编写生成学生成绩单的程序的算法。学生必须向系统提供输入,然后生成成绩单。

步骤 1 − 首先,我们声明用于存储不同数据的整数变量,例如学生的学号和科目的分数。

步骤 2− 接下来我们声明一个浮点变量来存储学生的百分比。

步骤 3 − 接下来我们声明一个字符串变量来存储学生的姓名。

步骤 4 − 现在我们从用户那里获得输入,即学生的学号、姓名和各科成绩。

步骤 5 − 然后我们将各科成绩相加,计算出学生的百分比。我们使用 Convert.ToInt32(),这是一个显式转换,用于将输入转换为 32 位有符号整数。

步骤 6 − 现在,我们将百分比与成绩表进行比较,并告知学生的成绩并关闭程序。

现在,是时候查看算法的代码了。

示例

// C# 程序生成学生的成绩单
using System;
using System.Collections.Generic; 
using System.Linq;
using System.Text;
class tpt{

   static void Main(string[] args) {

        // 声明变量以收集不同数据
        int rollnum, marksub1, marksub2, marksub3, marksub4, marksub5, totalmark;
        
        // 声明百分比变量
        float stud_percent;
        
        // 声明字符串变量以存储学生姓名
        string name;
        
        // 获取学生的学号
        Console.WriteLine("输入学生的学号:");
        rollnum = Convert.ToInt32(Console.ReadLine());
        
        // 获取学生的姓名
        Console.WriteLine("输入学生的姓名:");
        name = Console.ReadLine();
        
        // 获取学生的第一门科目成绩
        Console.WriteLine("输入第一门科目的成绩:");
        marksub1 = Convert.ToInt32(Console.ReadLine());
        
        // 获取学生的第二门科目成绩
        Console.WriteLine("输入第二门科目的成绩:");
        marksub2 = Convert.ToInt32(Console.ReadLine());
        
        // 获取学生第三门科目的成绩
        Console.WriteLine("输入第三门科目的成绩:");
        marksub3 = Convert.ToInt32(Console.ReadLine());
        
        // 获取学生第四门科目的成绩
        Console.WriteLine("输入第四门科目的成绩:");
        marksub4 = Convert.ToInt32(Console.ReadLine());
        
        // 获取学生第五门科目的成绩
        Console.WriteLine("输入第五门科目的成绩:");
        marksub5 = Convert.ToInt32(Console.ReadLine());
        
        // 将学生的总成绩相加
        totalmark = marksub1 + marksub2 + marksub3 + marksub4 + marksub5;
        
        // 计算学生的百分比
        stud_percent = totalmark / 5.0f;
        
        // 显示学生的总分和百分比
        Console.WriteLine("{0} 的最终结果是 : ", name);
        Console.WriteLine("总分 : " + totalmark);
        Console.WriteLine("百分比 : " + stud_percent);
        
        // 用于计算学生成绩的块
        if (stud_percent <= 35) {
         Console.WriteLine("Grade : F");
        }
        else if (stud_percent >= 34 && stud_percent <= 39) {
         Console.WriteLine("Grade : D");
        }
        else if (stud_percent >= 40 && stud_percent <= 59) {
         Console.WriteLine("Grade : C");
        }
        else if (stud_percent >= 60 && stud_percent <= 69) {
         Console.WriteLine("Grade : B");
        }
        else if (stud_percent >= 70 && stud_percent <= 79) {
         Console.WriteLine("Grade : B+");
        }
        else if (stud_percent >= 80 && stud_percent <= 90) {
         Console.WriteLine("Grade : A");
        }
        else if (stud_percent >= 91) {
         Console.WriteLine("Grade : A+");
        }
   }
} 

输出

输入学生的学号:
7
输入学生姓名:
Leo
输入第一门科目的成绩:
10
输入第二门科目的成绩:
30
输入第三门科目的成绩:
21
输入第四门科目的成绩:
7
输入第五门科目的成绩:
11
Leo 的最终成绩为:
总分:79
百分比:15.8
Grade : F 

现在还有另一种方法,如果科目数量不固定,并且随着每个学生而变化,那么我们可以使用数组的概念。

示例

// C# 程序生成学生的成绩单
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class tpt{

   static void Main(string[] args) {

        // 声明变量以收集不同数据
        int rollnum, subnum, totalmark=0;
        int[] marksub=new int[25];
        
        // 声明百分比变量
        float stud_percent;
        
        // 声明字符串变量以存储学生姓名
        string name;
        
        // 获取学生的学号
        Console.WriteLine("输入学生的学号:");
        rollnum = Convert.ToInt32(Console.ReadLine());
        
        // 获取学生的姓名
        Console.WriteLine("输入学生的姓名:");
        name = Console.ReadLine();
        
        // 获取科目数
        Console.WriteLine("输入科目数:");
        subnum = Convert.ToInt32(Console.ReadLine());
        
        //获取学生的科目分数
        for(int i=1; i<=subnum; i++) {
        Console.WriteLine("输入 {0} 科目的分数: ",+i);
        marksub[i] = Convert.ToInt32(Console.ReadLine());
        totalmark=totalmark+marksub[i];
        }
        
        // 计算学生的百分比
        stud_percent = totalmark / subnum;
        
        // 显示学生的总分和百分比
        Console.WriteLine("{0} 的最终结果是: ", name);
        Console.WriteLine("总分: " + totalmark);
        Console.WriteLine("百分比: " + stud_percent);
        
        // 计算学生成绩的块
        if (stud_percent <= 35) {
         Console.WriteLine("Grade : F");
        }
        else if (stud_percent >= 34 && stud_percent <= 39) {
         Console.WriteLine("Grade : D");
        }
        else if (stud_percent >= 40 && stud_percent <= 59) {
         Console.WriteLine("Grade : C");
        }
        else if (stud_percent >= 60 && stud_percent <= 69) {
         Console.WriteLine("Grade : B");
        }
        else if (stud_percent >= 70 && stud_percent <= 79) {
         Console.WriteLine("Grade : B+");
        }
        else if (stud_percent >= 80 && stud_percent <= 90) {
         Console.WriteLine("Grade : A");
        }
        else if (stud_percent >= 91) {
         Console.WriteLine("Grade : A+");
        }
   }
}

输出

输入学生的学号:
7
输入学生姓名:
Cris
输入科目数:
2
输入 1 门科目的分数:
89
输入 2 门科目的分数:
77
Cris 的最终成绩为:
总分:166
百分比:83
Grade:A

时间复杂度

第一个已知科目数的代码没有循环,数据大小固定,因此时间复杂度为 O(1)。

第二个代码有一个用于存储科目数的数组。因此,输入科目数后,循环运行以获取科目的分数并将其添加到用户输入的科目数中,即 n 次。因此,时间复杂度为 O(N)。现在,让我们总结一下这篇文章。

结论

在本文中,我们学习了编写一个 C# 程序,以两种不同的方式生成学生的成绩单。一种是已知科目数,另一种是未知科目数。因此,我们以此结束本文。我们希望本文能增强您对 C# 的了解。


相关文章