每个学生有三个元素,姓名,年龄,成绩,均可以输入,之后将按成绩将他们从小到大输出。
代码实现如下:
#include <stdio.h>
#include <malloc.h>
struct student{
int age;
float score;
char name[10];
};
int main()
{
int len;//学生的人数
struct student *parr;//指向结构体的指针
int i,j;
struct student t;
//动态构建一维数组
printf("请输入学生的个数:\n");
printf("len=");
scanf("%d",&len);
parr=(struct student *)malloc(len*sizeof(struct student));
//输入学生的信息
for(i=0;i<len;++i){
printf("请输入第%d个学生的信息:\n",i+1);
printf("age=");
scanf("%d",&parr[i].age);
printf("name=");
scanf("%s",parr[i].name);//name是数组名,本身就是数组首元素的地址
printf("score=");
scanf("%f",&parr[i].score);
}
//按成绩升序排序
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;
}
}
}
printf("\n\n学生的信息是:\n");
//输出
for(i=0;i<len;++i){
printf("第%d个学生的信息是:\n",i+1);
printf("age=%d\n",parr[i].age);
printf("name=%s\n",parr[i].name);
printf("score=%f\n",parr[i].score);
printf("\n");
}
return 0;
}