(四)编写程序学生数据包括:学号、姓名和3门课程的成绩。现有5个学生,请定义一个结构体并定义相应的变量;对定义的变量从键盘输入所需的具体数据,然后输出学生的平均成绩,输出项包括学生的学号、姓名及平均成绩;对5名学生按照平均成绩进行排序后输出。
using System;
class Student
{
public int id { get; set; }
public string name { get; set; }
public int score1 { get; set; }
public int score2 { get; set; }
public int score3 { get; set; }
public double average { get { return (score1 + score2 + score3) / 3.0; } }
}
class Program
{
static void Main(string[] args)
{
Student[] students = new Student[5];
for (int i = 0; i < students.Length; i++)
{
Console.WriteLine("请输入第 {0} 个学生的信息:", i + 1);
students[i] = new Student();
Console.Write("学号:");
students[i].id = int.Parse(Console.ReadLine());
Console.Write("姓名:");
students[i].name = Console.ReadLine();
Console.Write("成绩1:");
students[i].score1 = int.Parse(Console.ReadLine());
Console.Write("成绩2:");
students[i].score2 = int.Parse(Console.ReadLine());
Console.Write("成绩3:");
students[i].score3 = int.Parse(Console.ReadLine());
Console.WriteLine();
}
Console.WriteLine("学生平均成绩如下:");
foreach (Student student in students)
{
Console.WriteLine("{0}\t{1}\t{2:F2}", student.id, student.name, student.average);
}
Console.WriteLine();
Array.Sort(students, (x, y) => x.average.CompareTo(y.average));
Console.WriteLine("按平均成绩排序后的学生信息如下:");
foreach (Student student in students)
{
Console.WriteLine("{0}\t{1}\t{2:F2}", student.id, student.name, student.average);
}
}
}
所以,我补一个C语言的
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 5
#define MAX_NAME_LEN 20
// 定义学生结构体
struct Student {
char id[10];
char name[MAX_NAME_LEN];
float grades[3];
float avg_grade;
};
// 计算平均成绩
void calculate_avg_grade(struct Student *student) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += student->grades[i];
}
student->avg_grade = sum / 3.0;
}
// 学生排序函数
int student_cmp(const void *a, const void *b) {
const struct Student *stu_a = (const struct Student *) a;
const struct Student *stu_b = (const struct Student *) b;
if (stu_a->avg_grade < stu_b->avg_grade) {
return 1;
} else if (stu_a->avg_grade == stu_b->avg_grade) {
return 0;
} else {
return -1;
}
}
int main() {
struct Student students[NUM_STUDENTS];
// 从键盘输入数据
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("Enter student %d's id: ", i + 1);
scanf("%s", students[i].id);
printf("Enter student %d's name: ", i + 1);
scanf("%s", students[i].name);
printf("Enter student %d's grades for three courses: ", i + 1);
for (int j = 0; j < 3; j++) {
scanf("%f", &students[i].grades[j]);
}
// 计算平均成绩
calculate_avg_grade(&students[i]);
}
// 按照平均成绩进行排序
qsort(students, NUM_STUDENTS, sizeof(struct Student), student_cmp);
// 输出学生信息
printf("\nSorted students by average grade:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("Student %d - id: %s, name: %s, average grade: %.2f",
i + 1, students[i].id, students[i].name, students[i].avg_grade);
}
return 0;
}