现在给出一批学生信息,包括学号,姓名,手机号和邮箱地址,要求能实现按指定条件查询学生记录。输入包括四部分 第一部分:一个整数m(1<=m<=1000),代表有m条学生记录 第二部分:m行,每一行代表一条学生记录,包括学号(由8位数字组成),姓名(不超过10个字符),手机号(11位数字)和邮箱(不超过20位字符) 第三部分:一个整数n(1<=m<=100),代表有n次查询 第四部分:n行,每一行包括两部分:一个整数k(代表查询方式,1按学号,2按手机号,3按邮箱)和一串字符(长度大于0小于20,代表查询关键字的值)输出n行,代表n次查询结果。如果按照指定的查询方式和查询条件找到该条记录则输出其位序,否则输出Not Found。使用C语言写一个代码
时间: 2024-03-10 12:44:36 浏览: 81
以下是一个简单的C语言代码实现,可以实现按指定条件查询学生记录:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 1000
#define MAX_NAME_LENGTH 11
#define MAX_EMAIL_LENGTH 21
#define MAX_PHONE_LENGTH 12
struct student {
char id[9];
char name[MAX_NAME_LENGTH];
char phone[MAX_PHONE_LENGTH];
char email[MAX_EMAIL_LENGTH];
};
struct student_list {
struct student students[MAX_STUDENT_NUM];
int count;
};
// 根据指定条件查询学生记录
int search_students(struct student_list *list, int type, char *value) {
int i;
for (i = 0; i < list->count; i++) {
struct student s = list->students[i];
switch (type) {
case 1: // 按学号查询
if (strcmp(s.id, value) == 0) {
return i + 1;
}
break;
case 2: // 按手机号查询
if (strcmp(s.phone, value) == 0) {
return i + 1;
}
break;
case 3: // 按邮箱查询
if (strcmp(s.email, value) == 0) {
return i + 1;
}
break;
default:
break;
}
}
return -1; // 没有找到
}
int main() {
struct student_list list;
int m, n, i, type, result;
char value[21];
// 输入学生信息
scanf("%d", &m);
list.count = m;
for (i = 0; i < m; i++) {
scanf("%s %s %s %s", list.students[i].id, list.students[i].name, list.students[i].phone, list.students[i].email);
}
// 查询学生信息
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %s", &type, value);
result = search_students(&list, type, value);
if (result > 0) {
printf("%d\n", result);
} else {
printf("Not Found\n");
}
}
return 0;
}
```
在这个代码中,我们先定义了一个 `student` 结构体来保存每个学生的信息,包括学号、姓名、手机号和邮箱。然后我们定义了一个 `student_list` 结构体来保存所有学生的信息,包括学生数量和一个保存学生信息的数组。
在 `search_students` 函数中,我们按照指定的查询方式(学号、手机号或邮箱)和查询关键字(value)遍历所有学生记录,如果找到匹配的记录则返回该学生的位序(即数组下标+1),否则返回-1。
在 `main` 函数中,我们先读取输入的学生信息并保存到 `student_list` 中,然后读取查询次数并根据查询方式和查询关键字查询学生记录,最后输出查询结果或 Not Found。
阅读全文