看c语言郝斌老师的网课,对于学生管理系统那节的例子自己进行了升级
用到了结构体,指针,函数,malloc函数动态构造一维数组,for循环,if条件语句 等c语言部分知识 ,还有冒泡排序 。
一些犯的小问题和对一些语句的解释自己用注释标明了,要注意犯的小问题
该程序已成功运行,希望以后自己能随着深入学习找到更好的方法。
#include <stdio.h>
#include <malloc.h>
int i;
struct Student
{
char name[100];
int age;
float score;
};
void input(struct Student *parr, int len);
void output(struct Student *parr, int len);
void sort(struct Student *parr, int len);
int main(void)
{
int len;
struct Student *parr;
printf("请输入学生的个数:\n");
printf("len = ");
scanf("%d", &len);
parr = (struct Student*)malloc(len*sizeof (struct Student));
input(parr, len);
sort(parr, len);
printf("\n\n学生的信息是:\n");
output(parr, len);
return 0;
}
void input(struct Student *parr, int len)
{
for (i=0; i<len; ++i)
{
printf("请输入第%d个学生的信息:\n", i+1);
printf("name = ");
scanf("%s", parr[i].name);
printf("age = ");
scanf("%d", &parr[i].age);
printf("score = ");
scanf("%f", &parr[i].score);
}
}
void sort(struct Student *parr, int len)
{
int j;
struct Student t;
for (i=0; i<len-1; ++i)
for (j=0; j<len-1-i; ++j)
if (parr[j].score > parr[j+1].score)
{
t = parr[j];
parr[j] = parr[j+1];
parr[j+1] = t;
}
}
void output(struct Student *parr, int len)
{
for (i=0; i<len; ++i)
{
printf("第%d个学生的信息是:\n", i+1);
printf("name = %s\n", parr[i].name);
printf("age = %d\n", parr[i].age);
printf("score = %f\n", parr[i].score);
printf("\n");
}
}