C程序以结构体存储学生记录,并按姓名进行排序

前言

计算机程序开发是一项需要细致、耐心和专注的工作,涉及到许多知识点。其中,C语言是一种十分实用的编程语言,掌握它不仅可以编写出高效的程序,还可以让我们更好地理解计算机底层的工作原理。本文主要介绍如何利用C语言实现以结构体存储学生记录,并按照姓名进行排序的功能。

什么是结构体

结构体是C语言中一种自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。它的定义方式如下:

struct Student{

int id; //学号

char name[20]; //姓名

int age; //年龄

float score; //成绩

};

上述代码定义了一个名为Student的结构体,其中包含了学生记录中的四个基本信息:学号、姓名、年龄和成绩。每一个成员变量都有对应的数据类型,可以按需求进行修改和补充。

存储学生记录

输入信息

首先,我们需要输入学生的信息,并将其保存到结构体数组中。具体实现如下:

#include<stdio.h>

#include<string.h>

#define N 100 //最大学生数

struct Student{

int id; //学号

char name[20]; //姓名

int age; //年龄

float score; //成绩

};

int main(){

struct Student stu[N]; //定义结构体数组

int i, n;

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

scanf("%d", &n);

for(i=0; i

printf("请输入第%d个学生的信息:\n", i+1);

printf("学号:");

scanf("%d", &stu[i].id);

printf("姓名:");

scanf("%s", stu[i].name);

printf("年龄:");

scanf("%d", &stu[i].age);

printf("成绩:");

scanf("%f", &stu[i].score);

}

//输出学生信息

printf("---------------------------\n");

printf("学号\t姓名\t年龄\t成绩\n");

for(i=0; i

printf("%d\t%s\t%d\t%.2f\n", stu[i].id, stu[i].name, stu[i].age, stu[i].score);

}

return 0;

}

在上述代码中,我们首先定义了一个最大学生数N,然后定义了一个名为stu的结构体数组,数组元素个数为n。通过输入函数scanf,我们可以逐一输入每个学生的信息,包括学号、姓名、年龄和成绩。输入完成后,我们将学生信息按照指定格式输出。

存储信息

接下来,我们将已输入的学生信息按照姓名的字典序进行排序,并将结果输出。具体方法是使用冒泡排序法,通过比较相邻的两个元素,依次将字典序较小的元素向前移动,最终得到一个升序的排序结果。

#include<stdio.h>

#include<string.h>

#define N 100 //最大学生数

struct Student{

int id; //学号

char name[20]; //姓名

int age; //年龄

float score; //成绩

};

//冒泡排序函数

void sort(struct Student stu[], int n){

int i, j;

struct Student temp;

for(i=0; i

for(j=0; j

if(strcmp(stu[j].name, stu[j+1].name)>0){

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1] = temp;

}

}

}

}

int main(){

struct Student stu[N]; //定义结构体数组

int i, n;

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

scanf("%d", &n);

for(i=0; i

printf("请输入第%d个学生的信息:\n", i+1);

printf("学号:");

scanf("%d", &stu[i].id);

printf("姓名:");

scanf("%s", stu[i].name);

printf("年龄:");

scanf("%d", &stu[i].age);

printf("成绩:");

scanf("%f", &stu[i].score);

}

//排序学生信息

sort(stu, n);

//输出学生信息

printf("---------------------------\n");

printf("学号\t姓名\t年龄\t成绩\n");

for(i=0; i

printf("%d\t%s\t%d\t%.2f\n", stu[i].id, stu[i].name, stu[i].age, stu[i].score);

}

return 0;

}

在上述代码中,我们定义了一个名为sort的排序函数,其参数为结构体数组stu和数组长度n。sort函数中,我们通过stricmp函数比较相邻的两个元素的姓名,如果前者的字典序较大,则将两者的位置交换。通过不断进行这样的比较和交换,最终得到一个按照姓名升序排序的结果。在主函数中,我们先通过输入函数scanf输入学生的信息,然后调用排序函数sort得到排序结果,最后输出排序后的学生信息。

总结

通过以上的实例,我们不仅了解了如何定义结构体,还学会了如何利用结构体存储学生记录,并按照姓名进行排序的方法。在C语言编程中,结构体是一种非常实用的数据类型,可以让我们更好地组织和管理程序中的数据。通过不断练习和实践,我们可以深入了解C语言编程的核心理念和技巧,提升自己的编程能力。

后端开发标签