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

时间: 2023-03-24 17:01:49 浏览: 131
很抱歉,我的回答只能用中文或英文进行,以下是用中文回答的: 如果您想用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语言写出一个为宿舍管理人员的一个宿舍管理查询软件, 要求: 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; } ```

用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`函数中手动输入学生信息,也可以从文件或数据库中读取,然后按照学生姓名查找学生信息。在查找的过程中,我们可以通过输出比较次数来分析平均查找长度。
阅读全文

相关推荐

最新推荐

recommend-type

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

详解C语言正确使用extern关键字 extern关键字是C语言中一个重要的关键字,用于在一个文件中引用另一个文件中的变量或者函数。下面将通过实例代码详细介绍extern关键字的使用方法和注意事项。 一、引用同一个文件中...
recommend-type

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

基于C语言航班信息查询与检索 本文将详细介绍基于C语言的航班信息查询与检索系统,主要包括航班信息的存储、查询和检索等方面的知识点。 1. 航班信息存储结构 在本系统中,我们使用了静态链表来存储航班信息。...
recommend-type

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

C语言文件操作常用函数及读写文件代码举例 C语言文件操作是编程中的一项基本技能,掌握C语言文件操作可以让开发者更好地处理文件和数据。下面将详细说明C语言文件操作常用函数及读写文件代码。 一、文件操作常用...
recommend-type

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

在C语言中,搜索文件夹中的文件并按关键字查找是一项常见的任务,这通常涉及到文件操作和字符串处理。这里我们提供了两种方法来实现这个功能。 **方法1:使用库** 这种方法利用了C语言的`_findfirst`和`_findnext`...
recommend-type

C语言程序设计实现区号查询系统C语言程序设计实现

在本次的《C语言程序设计》课程设计中,学生被要求构建一个区号查询系统,该系统具备多种功能,如添加、删除、显示、查找和修改区号信息。以下是关于这个系统及其设计实现的详细说明。 1. **设计内容** - **结构体...
recommend-type

掌握HTML/CSS/JS和Node.js的Web应用开发实践

资源摘要信息:"本资源摘要信息旨在详细介绍和解释提供的文件中提及的关键知识点,特别是与Web应用程序开发相关的技术和概念。" 知识点一:两层Web应用程序架构 两层Web应用程序架构通常指的是客户端-服务器架构中的一个简化版本,其中用户界面(UI)和应用程序逻辑位于客户端,而数据存储和业务逻辑位于服务器端。在这种架构中,客户端(通常是一个Web浏览器)通过HTTP请求与服务器端进行通信。服务器端处理请求并返回数据或响应,而客户端负责展示这些信息给用户。 知识点二:HTML/CSS/JavaScript技术栈 在Web开发中,HTML、CSS和JavaScript是构建前端用户界面的核心技术。HTML(超文本标记语言)用于定义网页的结构和内容,CSS(层叠样式表)负责网页的样式和布局,而JavaScript用于实现网页的动态功能和交互性。 知识点三:Node.js技术 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它允许开发者使用JavaScript来编写服务器端代码。Node.js是非阻塞的、事件驱动的I/O模型,适合构建高性能和高并发的网络应用。它广泛用于Web应用的后端开发,尤其适合于I/O密集型应用,如在线聊天应用、实时推送服务等。 知识点四:原型开发 原型开发是一种设计方法,用于快速构建一个可交互的模型或样本来展示和测试产品的主要功能。在软件开发中,原型通常用于评估概念的可行性、收集用户反馈,并用作后续迭代的基础。原型开发可以帮助团队和客户理解产品将如何运作,并尽早发现问题。 知识点五:设计探索 设计探索是指在产品设计过程中,通过创新思维和技术手段来探索各种可能性。在Web应用程序开发中,这可能意味着考虑用户界面设计、用户体验(UX)和用户交互(UI)的创新方法。设计探索的目的是创造一个既实用又吸引人的应用程序,可以提供独特的价值和良好的用户体验。 知识点六:评估可用性和有效性 评估可用性和有效性是指在开发过程中,对应用程序的可用性(用户能否容易地完成任务)和有效性(应用程序是否达到了预定目标)进行检查和测试。这通常涉及用户测试、反馈收集和性能评估,以确保最终产品能够满足用户的需求,并在技术上实现预期的功能。 知识点七:HTML/CSS/JavaScript和Node.js的特定部分使用 在Web应用程序开发中,开发者需要熟练掌握HTML、CSS和JavaScript的基础知识,并了解如何将它们与Node.js结合使用。例如,了解如何使用JavaScript的AJAX技术与服务器端进行异步通信,或者如何利用Node.js的Express框架来创建RESTful API等。 知识点八:应用领域的广泛性 本文件提到的“基准要求”中提到,通过两层Web应用程序可以实现多种应用领域,如游戏、物联网(IoT)、组织工具、商务、媒体等。这说明了Web技术的普适性和灵活性,它们可以被应用于构建各种各样的应用程序,满足不同的业务需求和用户场景。 知识点九:创造性界限 在开发Web应用程序时,鼓励开发者和他们的合作伙伴探索创造性界限。这意味着在确保项目目标和功能要求得以满足的同时,也要勇于尝试新的设计思路、技术方案和用户体验方法,从而创造出新颖且技术上有效的解决方案。 知识点十:参考资料和文件结构 文件名称列表中的“a2-shortstack-master”暗示了这是一个与作业2相关的项目文件夹或代码库。通常,在这样的文件夹结构中,可以找到HTML文件、样式表(CSS文件)、JavaScript脚本以及可能包含Node.js应用的服务器端代码。开发者可以使用这些文件来了解项目结构、代码逻辑和如何将各种技术整合在一起以创建一个完整的工作应用程序。
recommend-type

管理建模和仿真的文件

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

计算机体系结构概述:基础概念与发展趋势

![计算机体系结构概述:基础概念与发展趋势](https://img-blog.csdnimg.cn/6ed523f010d14cbba57c19025a1d45f9.png) # 摘要 计算机体系结构作为计算机科学的核心领域,经历了从经典模型到现代新发展的演进过程。本文从基本概念出发,详细介绍了冯·诺依曼体系结构、哈佛体系结构以及RISC和CISC体系结构的设计原则和特点。随后,文章探讨了现代计算机体系结构的新发展,包括并行计算体系结构、存储体系结构演进和互连网络的发展。文中还深入分析了前沿技术如量子计算机原理、脑启发式计算以及边缘计算和物联网的结合。最后,文章对计算机体系结构未来的发展趋
recommend-type

int a[][3]={{1,2},{4}}输出这个数组

`int a[][3]={{1,2},{4}}` 定义了一个二维数组,它有两行三列,但是只填充了前两行的数据。第一行是 {1, 2},第二行是 {4}。 当你尝试输出这个数组时,需要注意的是,由于分配的空间是固定的,所以对于只填充了两行的情况,第三列是未初始化的,通常会被默认为0。因此,常规的打印方式会输出类似这样的结果: ``` a[0][0]: 1 a[0][1]: 2 a[1][0]: 4 a[1][1]: (未初始化,可能是0) ``` 如果需要展示所有元素,即使是未初始化的部分,可能会因为语言的不同而有不同的显示方式。例如,在C++或Java中,你可以遍历整个数组来输出: `
recommend-type

勒玛算法研讨会项目:在线商店模拟与Qt界面实现

资源摘要信息: "lerma:算法研讨会项目" 在本节中,我们将深入了解一个名为“lerma:算法研讨会项目”的模拟在线商店项目。该项目涉及多个C++和Qt框架的知识点,包括图形用户界面(GUI)的构建、用户认证、数据存储以及正则表达式的应用。以下是项目中出现的关键知识点和概念。 标题解析: - lerma: 看似是一个项目或产品的名称,作为算法研讨会的一部分,这个名字可能是项目创建者或组织者的名字,用于标识项目本身。 - 算法研讨会项目: 指示本项目是一个在算法研究会议或研讨会上呈现的项目,可能是为了教学、展示或研究目的。 描述解析: - 模拟在线商店项目: 项目旨在创建一个在线商店的模拟环境,这涉及到商品展示、购物车、订单处理等常见在线购物功能的模拟实现。 - Qt安装: 项目使用Qt框架进行开发,Qt是一个跨平台的应用程序和用户界面框架,所以第一步是安装和设置Qt开发环境。 - 阶段1: 描述了项目开发的第一阶段,包括使用Qt创建GUI组件和实现用户登录、注册功能。 - 图形组件简介: 对GUI组件的基本介绍,包括QMainWindow、QStackedWidget等。 - QStackedWidget: 用于在多个页面或视图之间切换的组件,类似于标签页。 - QLineEdit: 提供单行文本输入的控件。 - QPushButton: 按钮控件,用于用户交互。 - 创建主要组件以及登录和注册视图: 涉及如何构建GUI中的主要元素和用户交互界面。 - QVBoxLayout和QHBoxLayout: 分别表示垂直和水平布局,用于组织和排列控件。 - QLabel: 显示静态文本或图片的控件。 - QMessageBox: 显示消息框的控件,用于错误提示、警告或其他提示信息。 - 创建User类并将User类型向量添加到MainWindow: 描述了如何在项目中创建用户类,并在主窗口中实例化用户对象集合。 - 登录和注册功能: 功能实现,包括验证电子邮件、用户名和密码。 - 正则表达式的实现: 使用QRegularExpression类来验证输入字段的格式。 - 第二阶段: 描述了项目开发的第二阶段,涉及数据的读写以及用户数据的唯一性验证。 - 从JSON格式文件读取和写入用户: 描述了如何使用Qt解析和生成JSON数据,JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - 用户名和电子邮件必须唯一: 在数据库设计时,确保用户名和电子邮件字段的唯一性是常见的数据完整性要求。 - 在允许用户登录或注册之前,用户必须选择代表数据库的文件: 用户在进行登录或注册之前需要指定一个包含用户数据的文件,这可能是项目的一种安全或数据持久化机制。 标签解析: - C++: 标签说明项目使用的编程语言是C++。C++是一种高级编程语言,广泛应用于软件开发领域,特别是在性能要求较高的系统中。 压缩包子文件的文件名称列表: - lerma-main: 这可能是包含项目主要功能或入口点的源代码文件或模块的名称。通常,这样的文件包含应用程序的主要逻辑和界面。 通过这些信息,可以了解到该项目是一个采用Qt框架和C++语言开发的模拟在线商店应用程序,它不仅涉及基础的GUI设计,还包括用户认证、数据存储、数据验证等后端逻辑。这个项目不仅为开发者提供了一个实践Qt和C++的机会,同时也为理解在线商店运行机制提供了一个良好的模拟环境。