定义描述学生信息(学号、姓名、性别、出生日期、4门课程成绩和平均分)的结构体类型如下:
struct date
{ int month;
int day;
int year;
};
struct stu
{
int num;
char name[20];
char sex;
struct date birthday;
float score[4];
float ave;
};
1)定义输入单个学生信息的函数Input(struct stu *a) ;
2)定义输出单个学生信息的函数Output(struct stu a) ;
3)定义输入一批学生信息的函数Inputarray(struct stu a[ ],int n);
4)定义输出一批学生信息的函数Outputarray(struct stu a[ ],int n));
5)请编写按姓名进行查找的函数Searchname,若找到,返回表示该学生的信息,不排除有有同名同姓的情况;否则,返回 查无此人。
6)请编写函数Sortname,它的功能是:按每个学生的名字由小到大输出学生的记录。
编程建立的结构体数组通过输入输入存放全班(最多50人)学生信息,按学生的姓名从到大排序,输出学生的所有信息。
#include <stdio.h>
#include <string.h>
char str10[] = "查无此人";
char str11[] = "查找到该学生的信息";
struct date {
int month;
int day;
int year;
};
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("请输入出生日期(格式为:月 日 年):");
scanf("%d %d %d", &a->birthday.month, &a->birthday.day, &a->birthday.year);
printf("请输入4门课程成绩:"); a->ave = 0;
for (int i = 0; i < 4; i++) {
scanf("%f", &a->score[i]);
a->ave += a->score[i];
}
a->ave /= 4.0;
}
void Output(struct stu a) {
printf("学号:%d\n", a.num);
printf("姓名:%s\n", a.name);
printf("性别:%c\n", a.sex);
printf("出生日期:%d年%d月%d日\n", a.birthday.year, a.birthday.month, a.birthday.day);
printf("4门课程成绩:%.2f %.2f %.2f %.2f\n", a.score[0], a.score[1], a.score[2], a.score[3]);
printf("平均分:%.2f\n", a.ave);
}
void Inputarray(struct stu a[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
Input(&a[i]);
}
}
void Outputarray(struct stu a[], int n) {
for (int i = 0; i < n; i++) {
printf("第%d个学生的信息:\n", i + 1);
Output(a[i]);
printf("\n");
}
}
char* Searchname(struct stu a[], int n, char name[]) {
for (int i = 0; i < n; i++) {
if (strcmp(a[i].name, name) == 0) {
char* p2 = str11;
return p2;
}
}char* p1 = str10;
return p1;
}
void Sortname(struct stu a[], int n) {
struct stu temp;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (strcmp(a[i].name, a[j].name) > 0) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main() {
struct stu class1[50];
int n;
printf("请输入班级人数(最多50人):");
scanf("%d", &n);
Inputarray(class1, n);
Sortname(class1, n);
Outputarray(class1, n);
char name[20];
printf("请输入要查找的姓名:");
scanf("%s", name);
printf("%s\n", Searchname(class1, n, name));
return 0;
}