一个简单的学生管理系统(C语言)
程序员文章站
2022-03-08 22:49:16
...
功能:手动输入学生个数,然后录入各项数据后,排序后按分数由小到大输出数据。
#include <stdio.h>
#include <malloc.h>
struct Student
{
char name[20];
int num;
float score;
};
int main(void)
{
void input(struct Student *p, int n1);
void sort(struct Student *s, int m);
void output(struct Student *q, int n2);
int len;
struct Student *stu; //定义结构体指针变量
stu = (struct Student *)malloc(len * sizeof(struct Student)); //动态构造一维数组
printf("请输入学生个数len = ");
scanf("%d", &len);
printf("请输入学生信息:\n\n");
input(stu, len);
sort(stu, len);
printf("\n");
output(stu, len);
return 0;
}
void input(struct Student *p, int n1) //数据录入
{
int i;
for (i = 0; i < n1; i++)
{
printf("请输入第%d个学生的信息\n", i+1);
printf("请输入学生姓名:\n");
printf("name = ");
scanf("%s", p[i].name); //name 是数组名,本省就是首元素地址,不能再加&
printf("请输入学生学号:\n");
printf("number = ");
scanf("%d", &p[i].num);
printf("请输入学生分数:\n");
printf("score = ");
scanf("%f", &p[i].score);
printf("\n");
}
}
void output(struct Student *q, int n2) //数据输出
{
int i;
for (i = 0; i < n2; i++)
{
printf("排序后第%d个学生的信息是:\n", i+1);
printf("name = %s\n", q[i].name);
printf("number = %d\n", q[i].num);
printf("score = %.1f\n", q[i].score);
printf("\n");
}
}
void sort(struct Student *s, int m) //冒泡排序,按学生成绩升序排序
{
int i, j;
struct Student temp;
for (i = 0; i < m-1; i++)
{
for(j = 0; j < m-1-i; j++)
{
if (s[j].score > s[j+1].score) //注意:比较的是分数,但交换的是结构体变量
{
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
运行结果
上一篇: JavaScript中的事件
下一篇: JavaScript中的事件