21xrx.com
2024-12-22 23:29:39 Sunday
登录
文章检索 我的文章 写文章
【教程】如何使用C语言的struct记录学生成绩并按名字顺序排列
2023-06-16 10:12:13 深夜i     --     --
C语言 struct 学生成绩记录

【教程】如何使用C语言的struct记录学生成绩并按名字顺序排列?

在C语言中,struct是一种非常有用的数据类型,可以用来表示复杂的数据结构和对象。利用struct记录学生成绩需要在定义结构体的时候把学生的基本信息以及成绩分数都写进去。当有多个学生需要记录时,我们可以使用数组将多个struct组合在一起。而按名字顺序排序可使用快排等算法进行排序。

下面是使用struct记录学生成绩的代码示例:


#include

#include

#include

#define MAX_STUDENT_NUM 100

#define MAX_NAME_LEN 50

struct Student {

  char name[MAX_NAME_LEN];

  int math;

  int english;

  int chinese;

};

int student_cmp(const void *a, const void *b) {

  struct Student *s1 = (struct Student*)a;

  struct Student *s2 = (struct Student*)b;

  return strcmp(s1->name, s2->name);

}

int main() {

  int n;

  struct Student students[MAX_STUDENT_NUM];

  printf("请输入学生人数:");

  scanf("%d", &n);

  for (int i = 0; i < n; i++) {

    printf("请输入第%d个学生的姓名,数学成绩,英语成绩和语文成绩,例如:张三 80 90 70\n", i + 1);

    scanf("%s %d %d %d", students[i].name, &students[i].math, &students[i].english, &students[i].chinese);

  }

  qsort(students, n, sizeof(struct Student), student_cmp);

  printf("按名字顺序排序后的结果如下:\n");

  for (int i = 0; i < n; i++) {

    struct Student *s = &students[i];

    printf("%s %d %d %d\n", s->name, s->math, s->english, s->chinese);

  }

  return 0;

}

以上代码中,我们使用了一个结构体Student来记录每个学生的信息。在main函数中,我们首先输入学生的基本信息和成绩,并将其存储在一个Student数组中。然后使用qsort函数对这个数组进行排序,排序的方法是使用了一个比较函数student_cmp,该函数按照学生的名字进行比较。最后输出按名字顺序排列后的所有学生的信息。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复