华清数据结构day2 24-7-17
1> 完成班级的创建,创建时,需要传递班级实际人数
2> 完成班级学生的信息录入工作
3> 完成将班级学生按成绩进行降序排序工作
4> 输出班级中成绩最好和最差学生的信息
5> 完成信息的输出工作
6> 完成班级的销毁工作
要求:班级创建在堆区,尽量分文件编译完成
zy.h文件
#ifndef ZY_H
#define ZY_H
#define MAX 100 //最大容量
//定义学生类型
struct Stu
{
char name[20];
int age;
double score;
};
//定义班级类型
struct Class
{
struct Stu student[MAX]; //存放学生的容器
int size; //实际人数
};
int *create( int size);
void input(struct Class *ptr , int size); //录入函数
void sort(struct Class *ptr , int size) ; //降序排序函数
void maxandmin(struct Class *ptr, int size); //输出最好和最差的学生
void output(struct Class *ptr , int size); //输出学生
void destroy(struct Class *ptr ); //释放内存的函数
#endif
zy.c文件
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100 //最大容量
//定义学生类型
struct Stu
{
char name[20];
int age;
double score;
};
//定义班级类型
struct Class
{
struct Stu student[MAX]; //存放学生的容器
int size; //实际人数
};
int *create( int size)
{
struct Class *ptr = (struct Class* *)malloc(sizeof(struct Class*) * size);
if (ptr == NULL)
{
printf("申请失败\n");
return NULL;
}
memset(ptr, 0, sizeof(int)*size);
return ptr;
}
void input(struct Class *ptr , int size) //录入函数
{
if (ptr == NULL)
{
printf("申请失败\n");
return ;
}
for (int i = 0; i < size; i++)
{
printf("请输入第%d个学生的姓名,年龄,成绩(空格分开):",i+1);
scanf("%s %d %lf",ptr->student[i].name,&ptr->student[i].age,&ptr->student[i].score);
}
}
void sort(struct Class *ptr , int size) //降序排序函数
{
if (ptr == NULL)
{
printf("申请失败\n");
return ;
}
for (int i = 1; i < size; i++)
{
for (int j = 0; j < size -i ; j++)
{
if (ptr->student[j].score<ptr->student[j+1].score)
{
struct Stu temp = ptr->student[j];
ptr->student[j] = ptr->student[j + 1];
ptr->student[j + 1] = temp;
}
}
}
}
void maxandmin(struct Class *ptr, int size) //输出最好和最差的学生
{
if (ptr == NULL)
{
printf("申请失败\n");
return ;
}
int max = 0,min = 0;
for (int i = 1; i < size; i++)
{
if (ptr->student[max].score<ptr->student[i].score)
{
max = i;
}
if (ptr->student[min].score>ptr->student[i].score)
{
min = i;
}
}
printf("最好的学生的姓名=%s,年龄=%d,成绩=%.2lf:\n",ptr->student[max].name,ptr->student[max].age,ptr->student[max].score);
printf("最差的学生的姓名=%s,年龄=%d,成绩=%.2lf:\n",ptr->student[min].name,ptr->student[min].age,ptr->student[min].score);
}
void output(struct Class *ptr , int size) //输出学生
{
if (ptr == NULL)
{
printf("申请失败\n");
return ;
}
printf("输出学生信息:\n");
for (int i = 0; i < size; i++)
{
printf("第%d个学生的姓名=%s,年龄=%d,成绩=%.2lf:\n",i+1,ptr->student[i].name,ptr->student[i].age,ptr->student[i].score);
}
}
void destroy(struct Class *ptr ) //释放内存的函数
{
free(ptr);
}
zymain.h文件
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"zy.h"
int main(int argc, char const *argv[])
{
int size = 0;
printf("请输入你要输入的人数:");
scanf("%d",&size);
struct Class * P = create(size);
//调用录入函数
input(P,size);
//降序排序函数
sort(P,size);
//输出最好和最差的学生
maxandmin(P,size);
//输出学生
output(P,size);
//释放内存的函数
destroy(P);
P = NULL;
return 0;
}
原文地址:https://blog.csdn.net/m0_62859255/article/details/140505135
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!