定义描述学生信息(学号、姓名、性别、出生日期、4门课程成绩和平均分)的结构体类型。 struct date{ int year; int month; int day; }; struct stu{ int num; char name[20]; char sex; struct date birthday; float score[4]; float ave; }; 定义输入单个学生信息的函数Input(struct stu *a) ; 定义输出单个学生信息的函数Output(struct stu a) ;编写按姓名进行查找的函数Searchname,若找到,返回表示该学生的信息, 不排除有有同名同姓的情况;否则,返回查无此人。 编写函数Sortname,它的功能是:按每个学生的名字由小到大输出学生的记录。
时间: 2023-05-31 12:07:48 浏览: 140
//定义结构体类型
struct date{
int year;
int month;
int day;
};
struct stu{
int num;
char name[20];
char sex;
struct date birthday;
float score[4];
float ave;
};
//定义输入单个学生信息的函数
void Input(struct stu *a){
printf("请输入学号:");
scanf("%d",& a->num);
printf("请输入姓名:");
scanf("%s", a->name);
printf("请输入性别:");
scanf(" %c",& a->sex);
printf("请输入出生日期,格式:xxxx年-xx月-xx日\n");
scanf("%d-%d-%d", & a->birthday.year,& a->birthday.month,& a->birthday.day);
printf("请输入4门课程成绩:");
for(int i=0;i<4;i++){
scanf("%f",& a->score[i]);
}
a->ave=(a->score[0]+a->score[1]+a->score[2]+a->score[3])/4;
}
//定义输出单个学生信息的函数
void Output(struct stu a){
printf("学号:%d 姓名:%s 性别:%c 出生日期:%d年%d月%d日 4门课程成绩:%.1f %.1f %.1f %.1f 平均分:%.1f\n",
a.num,a.name,a.sex,a.birthday.year,a.birthday.month,a.birthday.day,a.score[0],a.score[1],a.score[2],a.score[3],a.ave);
}
//定义按姓名进行查找的函数
void Searchname(struct stu *stulist,int n,char *name){
int flag=0; //查找结果标记
for(int i=0;i<n;i++){
if(strcmp(stulist[i].name,name)==0){ //如果学生姓名相同
Output(stulist[i]); //输出该学生信息
flag=1; //查找到结果,将标记置为1
}
}
if(!flag){ //如果没有查找到结果
printf("查无此人。\n");
}
}
//定义函数Sortname,按每个学生的名字由小到大输出学生的记录
void Sortname(struct stu *stulist,int n){
struct stu tmp;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(strcmp(stulist[i].name,stulist[j].name)>0){
//如果第i个学生的名字比第j个学生的名字大,就交换两个学生的信息
tmp=stulist[i];
stulist[i]=stulist[j];
stulist[j]=tmp;
}
}
}
//输出排好序的学生信息
printf("按姓名排序后的学生信息为:\n");
for(int i=0;i<n;i++){
Output(stulist[i]);
}
}
阅读全文