您的位置:首页 > 其它

学生成绩管理系统_结构体、指针、存储、排序、动态内存分配

2017-08-16 09:47 351 查看
#include<stdio.h>

#include<malloc.h>

//定义结构体

struct Student

{
int age ;
float score;
char name[100];

};

int main(void)

{
//函数的声明
void LeaveStudent(struct Student * p_1,int len_1);
void sort(struct Student * p_2,int len_2);
void OutputStudent(struct Student * p_3,int len_3);

//定义变量以及动态内存分配定义
int sum;
struct Student * p_sum; 
p_sum = (struct Student *)malloc(sum * sizeof(struct Student));

printf("请用户输入学生的个数:\n");
printf("sum= ");
scanf("%d",&sum);
printf("\n");

LeaveStudent(p_sum,sum);
sort(p_sum,sum);
OutputStudent(p_sum,sum);

return 0;

}

//接受保存数据的函数

void LeaveStudent(struct Student * p_1,int len_1)

{
int i = 0;

for(i=0; i<len_1; ++i)
{
printf("请依次输入第%d个学生的成绩信息:\n",i +1);
printf("age = ");
scanf("%d",&p_1[i].age);
printf("name = ");
scanf("%s",p_1[i].name);//这里代表数组名,所以不用取地址符号
printf("score = ");
scanf("%f",&p_1[i].score);
}

}

//按照分数的降序进行排序

void sort(struct Student * p_2,int len_2)

{
int i,j;
struct Student   t;

for(i=0; i<len_2-1; ++i)
{
for(j=0; j<len_2-1-i; ++j)
{
if(p_2[j].score < p_2[j+1].score)  // >表示升序,<表示降序
{
t = p_2[j];
p_2[j] = p_2[j+1];
p_2[j+1] = t;
}
}
}

}

//输出结果函数

void OutputStudent(struct Student * p_3,int len_3)

{
printf("成绩排序后结果为:\n");
int i;
for(i=0; i<len_3; ++i)
{
printf("依次输出第%d个学生的成绩信息:\n",i +1);
printf("age = ");
printf("%d \n",p_3[i].age);
printf("name = ");
printf("%s \n",p_3[i].name);//这里代表数组名,所以不用取地址符号
printf("score = ");
printf("%f \n",p_3[i].score);
printf("\n");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: