思维导图
小练习:
定义一个数组,用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】
1>封装函数 录入5个学生信息
2>封装函数 显示学生信息
3>封装函数 删除第几个学生信息,删除后调用显示学生信息函数 显示
4> 封装函数 按照学生的成绩 进行降序,降序后调用显示学生信息函数 显示
要求:多文件编译完成。
头文件、源文件、测试文件(mian)
源文件:5.c
#include <stdio.h>
#include <string.h>
#include "5.h"//头文件
void sca(struct student stu[],int a)//输入数据
{for(int i=0;i<a;i++){printf("请输入第%d个学生的姓名,性别,年龄,成绩\n",i+1);scanf("%s%s%d%f",stu[i].name,stu[i].sex,&stu[i].age,&stu[i].grdae);}
}
void put(struct student *p,int a)//输出成绩
{for(int j=0;j<a;j++){printf("第%d位学生的姓名为:%s 性别为:%s 年龄为:%d 成绩为:%.1f\n",j+1,(p+j)->name,(p+j)->sex,(p+j)->age,(p+j)->grdae);}
}
void del(struct student stu[],int a,int n)//删除(把需要删除的放到最后,再打印前面的数据)
{for(int i=n-1;i<a-1;i++){stu[i]=stu[i+1];}put(stu,a-1);
}
void swap(struct student stu[],int a)//降序排序
{struct student temp;for(int i=0;i<a;i++){for(int j=0;j<a-1-i;j++){if(stu[j].grdae<stu[j+1].grdae)//冒泡排序{temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}}printf("排序后的结果为:\n");put(stu,a-1);
}
头文件:5.h
#ifndef __5__//防止重引用
#define __5__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#endif
struct student// 结构体
{char name[30];char sex[10];int age;float grdae;
};void sca(struct student stu[],int a);//输入
void put(struct student *p,int a);//输出
void del(struct student stu[],int a,int n);//删除
void swap(struct student stu[],int a);//排序
测试文件(mian):6.c
#include <stdio.h>
#include <string.h>
#include"5.h"//引用头文件int main(int argc, const char *argv[])
{printf("请输入学生数量:\n");int a;scanf("%d",&a);struct student stu[a];sca(stu,a);//输入put(stu,a);//输出printf("请输入删除第几位学生 :");int n;scanf("%d",&n);del(stu,a,n);//删除swap(stu,a);//排序return 0;
}
运行截图: