📌  相关文章
📜  C程序将学生记录存储为结构并按名称对它们进行排序(1)

📅  最后修改于: 2023-12-03 15:00:13.078000             🧑  作者: Mango

以C程序将学生记录存储为结构并按名称对它们进行排序

本篇介绍如何使用C语言创建一个简单的程序,以将学生记录存储为结构,并按照学生姓名对它们进行排序。此程序可以被用作学生管理系统的一部分,或以其他方式应用。

项目功能

本项目的主要功能是:

  • 将学生信息存储为结构体。
  • 通过输入学生信息,将其添加到结构体中。
  • 按照学生姓名对学生信息进行排序。
  • 按名称顺序输出学生信息,包括名称、年龄和成绩等。
代码实现

为了实现这个程序,需要创建一个名为"student.h"的头文件,并在该文件中定义学生结构。结构将包括学生姓名、年龄和成绩等信息。

/* student.h */

struct student {
    char name[50];
    int age;
    float grade;
};

接下来,在"main.c"文件中定义主函数。主函数将包括以下步骤:

  1. 定义结构体数组,并初始化其大小。
  2. 通过循环,从控制台输入学生信息,并将其添加到结构体数组中。
  3. 调用sort()函数,以按名称排序学生信息。
  4. 循环遍历结构体数组,以依次输出学生信息。
/* main.c */

#include <stdio.h>
#include <string.h>
#include "student.h"

void sort(struct student *, int);

void main(void) {

    struct student students[100];
    int n, i;

    printf("Enter the number of students: ");
    scanf("%d", &n);

    for (i = 0; i < n; i++) {
        printf("Enter information for student %d:\n", i+1);
        printf("Enter name: ");
        scanf("%s", students[i].name);
        printf("Enter age: ");
        scanf("%d", &students[i].age);
        printf("Enter grade: ");
        scanf("%f", &students[i].grade);
    }

    sort(students, n);

    printf("\nStudent Details:\n\n");
    for (i = 0; i < n; i++)
        printf("Name: %s\nAge: %d\nGrade: %.2f\n\n", students[i].name, students[i].age, students[i].grade);
}

void sort(struct student *s, int n) {
    int i, j; 
    struct student temp;

    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (strcmp(s[i].name, s[j].name) > 0) {
                temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }
}

排序函数sort()使用冒泡排序法,按名称对结构体数组进行排序。最后,在主函数中,循环遍历结构体数组以输出排好序的学生信息。

运行结果

根据输入的学生信息,程序将以名称排序的方式输出这些信息。例如:

Enter the number of students: 3 Enter information for student 1: Enter name: Alex Enter age: 19 Enter grade: 90 Enter information for student 2: Enter name: Bob Enter age: 20 Enter grade: 85 Enter information for student 3: Enter name: Charles Enter age: 18 Enter grade: 95

Student Details:

Name: Alex Age: 19 Grade: 90.00

Name: Bob Age: 20 Grade: 85.00

Name: Charles Age: 18 Grade: 95.00

总结

本项目介绍了如何使用C语言创建一个简单的程序,以将学生记录存储为结构,并按照学生姓名对它们进行排序。通过构建一个这样的学生管理系统,可以简单地维护和操作学生信息。