用c语言写出关键字查询学号,姓名,电话,基本信息的代码

时间: 2023-03-24 17:01:49 浏览: 78
很抱歉,我的回答只能用中文或英文进行,以下是用中文回答的: 如果您想用C语言编写一个关键字查找程序,可以使用以下代码: ```c #include <stdio.h> #include <string.h> int main() { char keyword[20]; printf("请输入要查找的关键字:"); scanf("%s", keyword); if (strcmp(keyword, "学号") == 0) { printf("您要查找的是学号。\n"); } else if (strcmp(keyword, "姓名") == 0) { printf("您要查找的是姓名。\n"); } else if (strcmp(keyword, "电话") == 0) { printf("您要查找的是电话。\n"); } else if (strcmp(keyword, "基本信息") == 0) { printf("您要查找的是基本信息。\n"); } else { printf("对不起,未找到您要查找的关键字。\n"); } return 0; } ``` 这是一个简单的程序,它可以让用户输入关键字,然后查找关键字是否在程序中预先定义的关键字列表中出现。如果找到了关键字,则输出对应的信息,如果没有找到,则输出未找到的提示信息。您可以根据需要修改关键字列表和输出信息。
相关问题

用c语言写一个代码实现针对同班同学信息设计一个通讯录,学生信息有姓名,学号,电话号码等。以学生姓名为关键字设计哈希表,并完成相应的建表和查表程序,并分析平均查找长度(姓名以汉语拼音形式,待填入哈希表的人名不低于30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。)

好的,以下是我给你提供的代码,其中包含了哈希表的建立、查找和哈希函数的设计。在本代码中,我使用的是链地址法处理哈希冲突。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define HASHSIZE 101 //哈希表长度,选择一个大质数 struct student { char name[20]; int id; char phone[12]; struct student *next; }; struct student *hashtable[HASHSIZE]; int hash(char *name) //哈希函数,将姓名转化为数字 { unsigned int hashval = 0; while (*name != '\0') hashval = *name++ + hashval * 31; return hashval % HASHSIZE; } void insert(struct student *newstu) //向哈希表中插入新学生信息 { int index = hash(newstu->name); newstu->next = hashtable[index]; hashtable[index] = newstu; } void search(char *name) //按姓名查找学生信息 { int index = hash(name); struct student *p = hashtable[index]; int count = 0; while (p != NULL) { count++; if (strcmp(p->name, name) == 0) { printf("学生姓名:%s 学号:%d 电话号码:%s\n", p->name, p->id, p->phone); printf("比较次数:%d\n", count); return; } p = p->next; } printf("找不到该学生信息!\n"); } int main() { int i; char name[20], phone[12]; struct student *newstu; //手动输入学生信息,也可以读取文件或从数据库中获取 for (i = 0; i < 30; i++) { newstu = (struct student *)malloc(sizeof(struct student)); printf("请输入第%d个学生的姓名、学号和电话号码:", i + 1); scanf("%s%d%s", newstu->name, &newstu->id, newstu->phone); insert(newstu); } //按姓名查找学生信息 printf("请输入要查找的学生姓名:"); scanf("%s", name); search(name); return 0; } ``` 在上面的代码中,我们定义了一个结构体`student`,包含了学生的姓名、学号和电话号码等信息,同时也定义了`hashtable`哈希表数组。在`insert`函数中,我们将新学生信息插入到哈希表中,如果出现哈希冲突,我们使用链地址法将新学生信息挂在冲突的链表后面。在`search`函数中,我们按照哈希函数计算出学生姓名对应的哈希值,然后在哈希表中查找该学生信息,如果找到则输出学生信息和比较次数,否则输出“找不到该学生信息!”。 最后,我们可以在`main`函数中手动输入学生信息,也可以从文件或数据库中读取,然后按照学生姓名查找学生信息。在查找的过程中,我们可以通过输出比较次数来分析平均查找长度。

设计一个算法并用c语言写出一个为宿舍管理人员的一个宿舍管理查询软件, 要求: A.采用交互工作方式 B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种) ,查询菜单: (用二分查找实现以下操作) A.按姓名查询 B.按学号查询 C.按房号查询 ,打印任一查询结果(可以连续操作)

好的,这个题目比较综合,我们可以分步实现。首先需要设计数据结构,然后实现排序算法,最后实现查询功能。 数据结构设计: 我们可以设计一个结构体来存储每一个宿舍的信息,包括姓名、学号、房号等。然后我们再用一个数组来存储所有宿舍的信息。 ```c #define MAX_LENGTH 100 struct dormitory { char name[MAX_LENGTH]; char id[MAX_LENGTH]; char room_number[MAX_LENGTH]; }; struct dormitory all_dormitories[MAX_LENGTH]; ``` 排序算法实现: 这里我们选择冒泡排序算法,按照宿舍的姓名、学号、房号进行排序。 ```c void bubble_sort(struct dormitory arr[], int n, int sort_by) { int i, j; struct dormitory temp; for (i = 0; i < n-1; i++) { for (j = 0; j < n-i-1; j++) { if (sort_by == 1) { if (strcmp(arr[j].name, arr[j+1].name) > 0) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } else if (sort_by == 2) { if (strcmp(arr[j].id, arr[j+1].id) > 0) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } else if (sort_by == 3) { if (strcmp(arr[j].room_number, arr[j+1].room_number) > 0) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } } ``` 查询功能实现: 这里我们选择二分查找算法,按照姓名、学号、房号进行查询。 ```c int binary_search(struct dormitory arr[], int n, char key[], int search_by) { int left = 0, right = n-1, mid; while (left <= right) { mid = (left + right) / 2; if (search_by == 1) { if (strcmp(arr[mid].name, key) == 0) { return mid; } else if (strcmp(arr[mid].name, key) < 0) { left = mid + 1; } else { right = mid - 1; } } else if (search_by == 2) { if (strcmp(arr[mid].id, key) == 0) { return mid; } else if (strcmp(arr[mid].id, key) < 0) { left = mid + 1; } else { right = mid - 1; } } else if (search_by == 3) { if (strcmp(arr[mid].room_number, key) == 0) { return mid; } else if (strcmp(arr[mid].room_number, key) < 0) { left = mid + 1; } else { right = mid - 1; } } } return -1; } ``` 完整代码: ```c #include <stdio.h> #include <string.h> #define MAX_LENGTH 100 struct dormitory { char name[MAX_LENGTH]; char id[MAX_LENGTH]; char room_number[MAX_LENGTH]; }; struct dormitory all_dormitories[MAX_LENGTH]; void bubble_sort(struct dormitory arr[], int n, int sort_by) { int i, j; struct dormitory temp; for (i = 0; i < n-1; i++) { for (j = 0; j < n-i-1; j++) { if (sort_by == 1) { if (strcmp(arr[j].name, arr[j+1].name) > 0) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } else if (sort_by == 2) { if (strcmp(arr[j].id, arr[j+1].id) > 0) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } else if (sort_by == 3) { if (strcmp(arr[j].room_number, arr[j+1].room_number) > 0) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } } int binary_search(struct dormitory arr[], int n, char key[], int search_by) { int left = 0, right = n-1, mid; while (left <= right) { mid = (left + right) / 2; if (search_by == 1) { if (strcmp(arr[mid].name, key) == 0) { return mid; } else if (strcmp(arr[mid].name, key) < 0) { left = mid + 1; } else { right = mid - 1; } } else if (search_by == 2) { if (strcmp(arr[mid].id, key) == 0) { return mid; } else if (strcmp(arr[mid].id, key) < 0) { left = mid + 1; } else { right = mid - 1; } } else if (search_by == 3) { if (strcmp(arr[mid].room_number, key) == 0) { return mid; } else if (strcmp(arr[mid].room_number, key) < 0) { left = mid + 1; } else { right = mid - 1; } } } return -1; } int main() { int n, i, sort_by, search_by, result_index; char key[MAX_LENGTH]; printf("请输入宿舍数量:"); scanf("%d", &n); printf("请依次输入每个宿舍的信息(姓名、学号、房号):\n"); for (i = 0; i < n; i++) { scanf("%s %s %s", all_dormitories[i].name, all_dormitories[i].id, all_dormitories[i].room_number); } printf("请选择排序方式:\n"); printf("1.按姓名排序\n"); printf("2.按学号排序\n"); printf("3.按房号排序\n"); scanf("%d", &sort_by); bubble_sort(all_dormitories, n, sort_by); printf("排序后的宿舍信息如下:\n"); for (i = 0; i < n; i++) { printf("%s %s %s\n", all_dormitories[i].name, all_dormitories[i].id, all_dormitories[i].room_number); } while (1) { printf("请选择查询方式:\n"); printf("1.按姓名查询\n"); printf("2.按学号查询\n"); printf("3.按房号查询\n"); scanf("%d", &search_by); printf("请输入要查询的关键字:"); scanf("%s", key); result_index = binary_search(all_dormitories, n, key, search_by); if (result_index == -1) { printf("没有找到匹配结果。\n"); } else { printf("查询结果如下:\n"); printf("%s %s %s\n", all_dormitories[result_index].name, all_dormitories[result_index].id, all_dormitories[result_index].room_number); } printf("是否继续查询?(1-是,0-否)"); scanf("%d", &i); if (i == 0) { break; } } return 0; } ```

相关推荐

最新推荐

recommend-type

详解C语言正确使用extern关键字

主要介绍了C语言正确使用extern关键字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

基于C语言航班信息查询与检索

主要为大家详细介绍了基于C语言航班信息查询与检索,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

c语言文件操作常用函数及读写文件代码举列

文章主要例举一个c语言文件操作常用函数及读写文件的代码,感性趣的朋友可以看看。
recommend-type

C语言按关键字搜索文件夹中文件的方法

主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
recommend-type

C语言实现电话簿管理系统

主要为大家详细介绍了C语言实现电话簿管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。