#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void PutInFun(struct Student * pArr,int len);
void OutPutFun(struct Student * pArr,int len);
void SortByScore(struct Student * pArr,int len);
struct Student
{
char name[100];
int age;
float score;
};
int main(void)
{
struct Student * pArr;
int len;
//动态构造一维数组
printf("请输入数组的个数:\n");
printf("len=");
scanf("%d",&len);
//pArr是数组名,存放了数组第一个元素的首地址
pArr=(struct Student *)malloc(len*sizeof(struct Student));
//输入学生信息
PutInFun(pArr,len);
//按学生成绩升序排序
SortByScore(pArr,len);
//输出学生信息
printf("\n===================按成绩升序排序后的学生信息是==================\n");
OutPutFun(pArr,len);
system("pause");
return 0;
/*
请输入数组的个数:
len=3
请输入第1个学生的信息:
name=张三
age=20
score=89
请输入第2个学生的信息:
name=李四
age=24
score=85
请输入第3个学生的信息:
name=王五
age=26
score=95
===================按成绩升序排序后的学生信息是==================
学生李四的信息是:
age=24 score=85.000000
学生张三的信息是:
age=20 score=89.000000
学生王五的信息是:
age=26 score=95.000000
请按任意键继续. . .
*/
}
void PutInFun(struct Student * pArr,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("name=");
//name是数组名本身就已经是数组首元素的地址,所以这里不能写成&,pArr[i].name
scanf("%s",pArr[i].name);
printf("age=");
scanf("%d",&pArr[i].age);
printf("score=");
scanf("%f",&pArr[i].score);
}
}
void OutPutFun(struct Student * pArr,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("学生%s的信息是:\n",pArr[i].name);
printf("age=%d ",pArr[i].age);
printf("score=%f \n",pArr[i].score);
}
}
//按学生成绩升序排序,冒泡算法
void SortByScore(struct Student * pArr,int len)
{
int i,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;
}
}
}
}
C语言学习笔记(22结构体综合应用学生信息管理)
最新推荐文章于 2022-05-26 13:12:06 发布