#include<stdio.h> #include<string.h> #define N 10 typedef struct date { int year; int month; int day; }DATE; typedef struct student { int num; char name[20]; char sex; DATE birthday; float score; }STUDENT; void input(STUDENT *s); void output(STUDENT s); void outputarr(STUDENT s[ ], int n); int equal (STUDENT a, STUDENT b) ; int serach(STUDENT a[],int n,STUDENT x); int main() { STUDENT b[N]={ {10010,"Liyi",'M',2000,5,23,45}, {10020,"Lier",'M',2001,2,3,62.5}, {10030,"Lisan",'F',2000,10,14,92.5}, {10040,"Lisi",'F',2002,7,23,87}, {10050,"Liwu",'M',1999,8,6,78} }; STUDENT x; int n = 0; //printf("请输入查找的学生信息:\n"); input(&x); n = serach(b,5,x); outputarr(b,5); if(n>=0) { printf("查找成功,是第%d个学生,该学生信息如下:\n",n+1); output(b[n]); } else { printf("查无此人。\n"); } return 0; } void input(STUDENT *s) { //printf("请输入学生学号:"); scanf("%d",&(*s).num); //printf("请输入学生姓名:"); scanf("%s",(*s).name); //printf("请输入学生性别:"); scanf(" %c",&(*s).sex); //printf("请输入学生出生日期:"); scanf("%d%d%d",&(*s).birthday.year,& (*s).birthday.month, &(*s).birthday.day); //printf("请输入学生成绩:"); scanf("%f",&(*s).score); } void output(STUDENT s) { printf("学号:%d\t姓名:%s\t性别:%c\t", s.num,s.name,s.sex); printf("出生日期:%d-%d-%d\t", s.birthday.year,s.birthday.month, s.birthday.day); printf("成绩:%.1f\n", s.score); } void outputarr(STUDENT s[],int n) { } int equal (STUDENT a, STUDENT b) { } int serach(STUDENT a[],int n,STUDENT x) { } 完成此代码
时间: 2024-01-20 08:02:05 浏览: 24
这段代码是一个学生信息管理系统,包含了学生的学号、姓名、性别、出生日期和成绩等信息。主函数中定义了一个学生数组b,包含了5个学生的信息,然后调用了serach函数进行查询,查询结果将会输出在屏幕上。serach函数用于在学生数组中查找指定的学生信息,如果找到了就返回该学生在数组中的下标,否则返回-1。
下面是完整代码:
```c
#include<stdio.h>
#include<string.h>
#define N 10
typedef struct date {
int year;
int month;
int day;
} DATE;
typedef struct student {
int num;
char name[20];
char sex;
DATE birthday;
float score;
} STUDENT;
void input(STUDENT *s);
void output(STUDENT s);
void outputarr(STUDENT s[], int n);
int equal(STUDENT a, STUDENT b);
int serach(STUDENT a[], int n, STUDENT x);
int main() {
STUDENT b[N] = {
{10010, "Liyi", 'M', 2000, 5, 23, 45},
{10020, "Lier", 'M', 2001, 2, 3, 62.5},
{10030, "Lisan", 'F', 2000, 10, 14, 92.5},
{10040, "Lisi", 'F', 2002, 7, 23, 87},
{10050, "Liwu", 'M', 1999, 8, 6, 78}
};
STUDENT x;
int n = 0;
printf("请输入查找的学生信息:\n");
input(&x);
n = serach(b, 5, x);
outputarr(b, 5);
if(n >= 0) {
printf("查找成功,是第%d个学生,该学生信息如下:\n", n + 1);
output(b[n]);
} else {
printf("查无此人。\n");
}
return 0;
}
void input(STUDENT *s) {
printf("请输入学生学号:");
scanf("%d", &(*s).num);
printf("请输入学生姓名:");
scanf("%s", (*s).name);
printf("请输入学生性别:");
scanf(" %c", &(*s).sex);
printf("请输入学生出生日期:");
scanf("%d%d%d", &(*s).birthday.year, &(*s).birthday.month, &(*s).birthday.day);
printf("请输入学生成绩:");
scanf("%f", &(*s).score);
}
void output(STUDENT s) {
printf("学号:%d\t姓名:%s\t性别:%c\t", s.num, s.name, s.sex);
printf("出生日期:%d-%d-%d\t", s.birthday.year, s.birthday.month, s.birthday.day);
printf("成绩:%.1f\n", s.score);
}
void outputarr(STUDENT s[], int n) {
printf("学号\t姓名\t性别\t出生日期\t成绩\n");
for(int i = 0; i < n; i++) {
printf("%d\t%s\t%c\t%d-%d-%d\t%.1f\n", s[i].num, s[i].name, s[i].sex, s[i].birthday.year, s[i].birthday.month, s[i].birthday.day, s[i].score);
}
}
int equal(STUDENT a, STUDENT b) {
if(a.num == b.num && strcmp(a.name, b.name) == 0 && a.sex == b.sex && a.birthday.year == b.birthday.year && a.birthday.month == b.birthday.month && a.birthday.day == b.birthday.day && a.score == b.score) {
return 1;
} else {
return 0;
}
}
int serach(STUDENT a[], int n, STUDENT x) {
for(int i = 0; i < n; i++) {
if(equal(a[i], x)) {
return i;
}
}
return -1;
}
```