zuoye.c
#include "zuoye.h"
int main(int argc, char const *argv[])
{
int menu=0;
struct Class *ptr=create();
while(1)
{
print_menu();
printf("请输入需要的功能:");
scanf("%d",&menu);
switch (menu)
{
case 1:
{
stu_scan(ptr);
}break;
case 4:
{
stu_print(ptr);
}break;
case 2:
{
stu_jiang(ptr);
stu_print(ptr);
}break;
case 3:
{
stu_max(ptr);
}break;
case 5:
{
stu_bomm(&ptr);
stu_print(ptr);
}
case 0:goto END;
}
}
END:
return 0;
}
zuoye1.c
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#define MAX 100
struct Stu
{
char name[20];
int age;
int score;
};
struct Class
{
struct Stu stu[MAX];
int size;
};
void print_menu()
{
printf("\t\t=====1.班级创建 学生信息录入=====\n");
printf("\t\t=====2.按成绩降序=====\n");
printf("\t\t=====3.成绩中最好最差的学生=====\n");
printf("\t\t=====4.学生信息输出=====\n");
printf("\t\t=====5.班级销毁=====\n");
printf("\t\t=====0.退出=====\n");
}
int *create()
{
int *ptr = (int *)malloc(3204); //Stu结构体占32字节 Class占36字节 10个学生加人数4字节 3204
if(ptr==NULL)
{
printf("申请失败!\n");
return NULL;
}
memset(ptr,0,3204);
return ptr;
}
void stu_scan(struct Class *ptr)
{
printf("请输入班级的人数:");
scanf("%d",&ptr->size);
for(int i=0;i<ptr->size;i++)
{
getchar();
printf("请输入第%d位学生的名字:",i+1);
scanf("%s",ptr->stu[i].name);
printf("请输入第%d位学生的年龄:",i+1);
scanf("%d",&ptr->stu[i].age);
printf("请输入第%d位学生的成绩:",i+1);
scanf("%d",&ptr->stu[i].score);
}
}
void stu_print(struct Class *ptr)
{
if(NULL == ptr)
{
printf("error\n");
return ;
}
printf("姓名\t年龄\t成绩\t\n");
for(int i=0;i<ptr->size;i++)
{
printf("%s\t%d\t%d\t\n",ptr->stu[i].name,ptr->stu[i].age,ptr->stu[i].score);
}
}
void stu_jiang(struct Class *ptr)
{
for(int i=1;i<ptr->size;i++)
{
for(int j=0;j<ptr->size-i;j++)
{
if(ptr->stu[j].score>ptr->stu[j+1].score)
{
int temp=ptr->stu[j].score;
ptr->stu[j].score=ptr->stu[j+1].score;
ptr->stu[j+1].score=temp;
}
}
}
}
void stu_max(struct Class *ptr)
{
int max=ptr->stu[0].score;
int maxi=0;
int min=ptr->stu[ptr->size-1].score;
int mini=ptr->size-1;
for(int i=0;i<ptr->size;i++)
{
if(ptr->stu[i].score>max)
{
max=ptr->stu[i].score;
maxi=i;
}
if(ptr->stu[i].score<min)
{
min=ptr->stu[i].score;
mini=i;
}
}
printf("成绩最好:%s\t%d\t%d\t\n",ptr->stu[maxi].name,ptr->stu[maxi].age,ptr->stu[maxi].score);
printf("成绩最差:%s\t%d\t%d\t\n",ptr->stu[mini].name,ptr->stu[mini].age,ptr->stu[mini].score);
}
void stu_bomm(struct Class **ptr)
{
if(NULL != *ptr)
{
free(*ptr); //释放空间
*ptr = NULL;
}
}
zuoye.h
#ifndef test_h
#define test_h
struct Stu;
struct Class;
void print_menu();
int *create();
void stu_scan(struct Class *ptr);
void stu_print(struct Class *pt);
void stu_jiang(struct Class *pt);
void stu_max(struct Class *pt);
void stu_bomm(struct Class **ptr);
#endif