C语言学习笔记(22结构体综合应用学生信息管理)

来源:互联网 发布:财富赢家炒股票软件 编辑:程序博客网 时间:2024/06/05 14:14
#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=20score=89请输入第2个学生的信息:name=李四age=24score=85请输入第3个学生的信息:name=王五age=26score=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].namescanf("%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;}}}}