定义一个结构体类型,其成员包括:学号、姓名、性别、年龄、籍贯、入学年份、所在学院。编写查询函数seek(),通过键盘输入的学生姓名,查询该学生的各种数据;若此同学不存在,则输出“No found”。如:输入“Marry”,则输出1003号学生各项数据;输入“Machael”,则输出“No found”。
函数接口定义:
void seek_name(student stu[],int n,char *name);//根据学生姓名进行查找
其中 stu 、 n和 name都是用户传入的参数。 stu[] 是创建的学生信息数组; n 是学生的总人数;name是待查找的学生姓名。
裁判测试程序样例:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 1000 //学生可能达到的最大长度
typedef struct student
{
int num; //学号
char name[20]; //姓名
char sex; //性别(char型,f表示女,m表示男)
int age; //年龄
char province[20];//籍贯
int year;//入学年份
char depart[20];//所在学院
}student;
void input(student stu[],int n);/*细节在此不表*/
void output(student stu[],int n);/*细节在此不表*/
void seek_name(student stu[],int n,char *name);//根据学生姓名进行查找
int main()
{
student stu[N];
int n;
scanf("%d",&n);//输入学生人数
if (n>N) {printf("overflow!");return 0;}
input(stu,n);
char name[20];
scanf("%s",name);
seek_name(stu,n,name);
return 0;
}
/* 请在这里填写答案 */
输入样例1:
第一行输入学生的个数n的值,后续输入n行学生的信息(学号、姓名、性别、年龄、籍贯、入学年份、所在学院),每个学生信息占一行,学号、姓名、性别、年龄、籍贯、入学年份、所在学院用空格分隔,所在学院之后没有空格。最后一行输入待查找学生的姓名。
5
1001 Jack f 20 湖北 2019 理学院
1002 Sam m 19 江西 2019 信息学院
1003 Marry f 21 湖南 2019 外语学院
1004 David m 20 安徽 2019 资环学院
1005 Susan f 21 广西 2019 计算机学院
Marry
输出样例1:
显示查找到的学生的信息(学号、姓名、性别、年龄、籍贯、入学年份、所在学院),用空格分隔。
1003 Marry f 21 湖南 2019 外语学院
输入样例2:
5
1001 Jack f 20 湖北 2019 理学院
1002 Sam m 19 江西 2019 信息学院
1003 Marry f 21 湖南 2019 外语学院
1004 David m 20 安徽 2019 资环学院
1005 Sam f 21 广西 2019 计算机学院
Sam
输出样例2:
1002 Sam m 19 江西 2019 信息学院
void seek_name(student stu[], int n, char *name)
{
int found = 0; // 用于记录是否找到匹配的学生
for (int i = 0; i < n; i++)
{
if (strcmp(stu[i].name, name) == 0)
{
// 找到匹配的学生姓名,输出学生信息
printf("%d %s %c %d %s %d %s\n",
stu[i].num,
stu[i].name,
stu[i].sex,
stu[i].age,
stu[i].province,
stu[i].year,
stu[i].depart);
found = 1; // 标记找到了匹配的学生
}
}
if (!found)
{
printf("No found\n"); // 未找到匹配的学生姓名
}
}