解释代码void chazhao2(lianxiren*head) {if(head==NULL) { printf("电话簿为空,请重新创建\n"); return; } char number[20]; printf("请输入电话号码:");gets(number); while(strcmp(number,head->number)!=0) {head=head->next; if(head==NULL){printf("电话簿未有此联系人\n"); return;} } printf("%s的主人为:",number); puts(head->name); printf("\n住址:");puts(head->home); printf("\n邮编:");puts(head->email); }//通过电话号码查找

时间: 2024-01-18 11:03:45 浏览: 21
这段代码实现了通过电话号码在一个链表中查找联系人信息的功能。首先判断链表是否为空,如果为空则输出提示信息并返回。然后通过 gets() 函数获取用户输入的电话号码,使用 while 循环遍历链表,查找与输入号码相同的联系人信息,如果找到则输出该联系人的姓名、住址和邮编信息。如果遍历完链表仍未找到,则输出提示信息表示电话簿中未有此联系人。需要注意的是,gets() 函数存在安全问题,建议使用 fgets() 替换。
相关问题

struct chexinxi *chazhao(struct chexinxi *head) { char chexinghao[N]; char chepaihao[N]; char chexinghao1[N]; char chepaihao1[N]; int n,m; struct chexinxi *p; p=head; printf("\t\t\t\t请选择查找方式(1.车型号,2.车牌号):"); scanf("%d",&n); if(n==1) { printf("\t\t\t\t请输入车型号:"); scanf("%s",chexinghao); while(p!=NULL) { if(strcmp(chexinghao,p->chexinghao)==0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n",p->chexinghao,p->chepaihao); printf("\t\t\t\t是否进行修改(1.是,2.否):"); scanf("%d",&m); if(m==1) { printf("\t\t\t\t车型号:"); scanf("%s",&chexinghao1); strcpy(p->chexinghao,chexinghao1); printf("\t\t\t\t车牌号:"); scanf("%s",&chepaihao1); strcpy(p->chepaihao,chepaihao1); } break; } p=p->next; } if(p==NULL) { printf("\t\t\t\t未找到该车型号的车辆信息!\n"); } } else if(n==2) { printf("\t\t\t\t请输入车编号:"); scanf("%s",chepaihao); while(p!=NULL) { if(strcmp(chepaihao,p->chepaihao)==0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n",p->chexinghao,p->chepaihao); break; } } if(p==NULL) printf("\t\t\t\t未找到该车牌号的车辆信息!\n"); } return head; }优化从文件中查找

可以将车辆信息保存到文件中,然后在程序运行时从文件中读取车辆信息,进行查找和修改操作。以下是一个示例代码,用于从文件中读取车辆信息,并实现车辆信息的查找和修改功能。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 20 struct chexinxi { char chexinghao[N]; char chepaihao[N]; struct chexinxi *next; }; void save(struct chexinxi *head) { FILE *fp; struct chexinxi *p; p = head; fp = fopen("chexinxi.txt", "w"); if (fp == NULL) { printf("\t\t\t\t文件打开失败!\n"); exit(1); } while (p != NULL) { fprintf(fp, "%s %s\n", p->chexinghao, p->chepaihao); p = p->next; } fclose(fp); } struct chexinxi *load() { FILE *fp; struct chexinxi *head, *p, *q; head = NULL; fp = fopen("chexinxi.txt", "r"); if (fp == NULL) { printf("\t\t\t\t文件打开失败!\n"); exit(1); } while (!feof(fp)) { p = (struct chexinxi *)malloc(sizeof(struct chexinxi)); fscanf(fp, "%s %s", p->chexinghao, p->chepaihao); p->next = NULL; if (head == NULL) { head = p; } else { q->next = p; } q = p; } fclose(fp); return head; } struct chexinxi *chazhao(struct chexinxi *head) { char chexinghao[N]; char chepaihao[N]; char chexinghao1[N]; char chepaihao1[N]; int n, m; struct chexinxi *p; p = head; printf("\t\t\t\t请选择查找方式(1.车型号,2.车牌号):"); scanf("%d", &n); if (n == 1) { printf("\t\t\t\t请输入车型号:"); scanf("%s", chexinghao); while (p != NULL) { if (strcmp(chexinghao, p->chexinghao) == 0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n", p->chexinghao, p->chepaihao); printf("\t\t\t\t是否进行修改(1.是,2.否):"); scanf("%d", &m); if (m == 1) { printf("\t\t\t\t车型号:"); scanf("%s", &chexinghao1); strcpy(p->chexinghao, chexinghao1); printf("\t\t\t\t车牌号:"); scanf("%s", &chepaihao1); strcpy(p->chepaihao, chepaihao1); save(head); // 保存修改后的车辆信息到文件中 } break; } p = p->next; } if (p == NULL) { printf("\t\t\t\t未找到该车型号的车辆信息!\n"); } } else if (n == 2) { printf("\t\t\t\t请输入车牌号:"); scanf("%s", chepaihao); while (p != NULL) { if (strcmp(chepaihao, p->chepaihao) == 0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n", p->chexinghao, p->chepaihao); break; } p = p->next; } if (p == NULL) printf("\t\t\t\t未找到该车牌号的车辆信息!\n"); } return head; } int main() { struct chexinxi *head; int n; head = load(); // 从文件中读取车辆信息 while (1) { printf("\n\t\t\t\t请输入操作代码(1.查找车辆信息,2.退出程序):"); scanf("%d", &n); if (n == 1) { head = chazhao(head); // 查找车辆信息 } else if (n == 2) { save(head); // 退出程序前,保存车辆信息到文件中 break; } } return 0; } ``` 在这个示例代码中,我们通过 `load()` 函数从文件中读取车辆信息,并将其保存到一个链表中。在程序运行时,通过 `chazhao()` 函数实现车辆信息的查找和修改功能。当用户选择修改车辆信息时,我们将修改后的车辆信息保存到文件中,以便下次程序运行时能够读取到最新的车辆信息。在程序退出前,我们通过 `save()` 函数保存车辆信息到文件中。

struct chexinxi *chazhao(struct chexinxi *head) { char chexinghao[N]; char chepaihao[N]; char chexinghao1[N]; char chepaihao1[N]; int n,m; struct chexinxi *p; p=head; printf("\t\t\t\t请选择查找方式(1.车型号,2.车牌号):"); scanf("%d",&n); if(n==1) { printf("\t\t\t\t请输入车型号:"); scanf("%s",chexinghao); while(p!=NULL) { if(strcmp(chexinghao,p->chexinghao)==0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n",p->chexinghao,p->chepaihao); printf("\t\t\t\t是否进行修改(1.是,2.否):"); scanf("%d",&m); if(m==1) { printf("\t\t\t\t车型号:"); scanf("%s",&chexinghao1); strcpy(p->chexinghao,chexinghao1); printf("\t\t\t\t车牌号:"); scanf("%s",&chepaihao1); strcpy(p->chepaihao,chepaihao1); } break; } p=p->next; } if(p==NULL) { printf("\t\t\t\t未找到该车型号的车辆信息!\n"); } } else if(n==2) { printf("\t\t\t\t请输入车编号:"); scanf("%s",chepaihao); while(p!=NULL) { if(strcmp(chepaihao,p->chepaihao)==0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n",p->chexinghao,p->chepaihao); break; } } if(p==NULL) printf("\t\t\t\t未找到该车牌号的车辆信息!\n"); } return head; }优化查找文件内容

可以对该函数进行优化,提高其执行效率和代码质量。具体优化方法如下: 1. 减少重复输入。可以在函数开始时,先让用户选择查找方式,并根据不同的查找方式提示用户输入相应的信息,以避免用户重复输入信息。 2. 使用指针传参。可以将链表的头指针作为参数传入函数中,以便函数能够修改链表节点的值。 3. 简化逻辑结构。可以将两种查找方式分别写成两个函数,以减少函数的复杂度。 4. 增加错误处理机制。可以在函数中加入错误处理机制,以便在出现错误时能够及时提示用户并退出函数。 优化后的代码如下: ``` struct chexinxi* chaxun_chexinghao(struct chexinxi* head) { char chexinghao[N]; char chexinghao1[N]; char chepaihao[N]; char chepaihao1[N]; int m; printf("\t\t\t\t请输入车型号:"); scanf("%s", chexinghao); struct chexinxi* p = head; while (p != NULL) { if (strcmp(chexinghao, p->chexinghao) == 0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n", p->chexinghao, p->chepaihao); printf("\t\t\t\t是否进行修改(1.是,2.否):"); scanf("%d", &m); if (m == 1) { printf("\t\t\t\t车型号:"); scanf("%s", &chexinghao1); strcpy(p->chexinghao, chexinghao1); printf("\t\t\t\t车牌号:"); scanf("%s", &chepaihao1); strcpy(p->chepaihao, chepaihao1); } return head; } p = p->next; } printf("\t\t\t\t未找到该车型号的车辆信息!\n"); return head; } struct chexinxi* chaxun_chepaihao(struct chexinxi* head) { char chepaihao[N]; printf("\t\t\t\t请输入车牌号:"); scanf("%s", chepaihao); struct chexinxi* p = head; while (p != NULL) { if (strcmp(chepaihao, p->chepaihao) == 0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n", p->chexinghao, p->chepaihao); return head; } p = p->next; } printf("\t\t\t\t未找到该车牌号的车辆信息!\n"); return head; } struct chexinxi* chazhao(struct chexinxi* head) { int n; printf("\t\t\t\t请选择查找方式(1.车型号,2.车牌号):"); scanf("%d", &n); if (n == 1) { head = chaxun_chexinghao(head); } else if (n == 2) { head = chaxun_chepaihao(head); } else { printf("\t\t\t\t输入错误!\n"); } return head; } ``` 优化后的代码结构更加清晰,易于阅读和维护,并且能够提高程序的执行效率和代码质量。

相关推荐

package 软件本科9班小罗; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.Statement; import java.sql.*; import javax.swing.*; public class Java06 extends JFrame implements ActionListener{ JButton Button; JLabel s1; JTextField text; JTextArea ta; Connection conn; java.sql.Statement stat1; java.sql.Statement stat2; ResultSet rs1,rs2; public Java06() { super("中英文查询"); Button=new JButton("查询"); Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { chazhao(); } }); s1=new JLabel("输入要查询的单词:"); text =new JTextField("word",20); ta = new JTextArea("工作",7,36); JPanel panel=new JPanel(); panel.add(s1); panel.add(text); panel.add(Button); JPanel panel2=new JPanel(); panel2.add(ta); Container con=getContentPane(); con.add(panel,BorderLayout.NORTH); con.add(panel2); setSize(400,200); } public void chazhao() { String i; try { Class.forName("com.mysql.jdbc.Driver");//加载连接驱动; conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sys?serverTimezone=UTC", "root", "123456"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("加载驱动失败"); } catch (SQLException e) { System.out.println("获取连接失败"); } String sql1="select 中文 from book where 英文="+"\""+text+"\""; String sql2="select 英文 from book where 中文="+"\""+text+"\""; try { stat1=conn.createStatement(); rs1=stat1.executeQuery(sql1); stat2=conn.createStatement(); rs2=stat2.executeQuery(sql2); while(rs1.next()) { System.out.println(rs1.getString("中文")); } while (rs2.next()) { System.out.println(rs2.getString("英文")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { new Java06().setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==Button) { String text=ta.getText(); ta.setText(text);; } } }这个代码中哪里有错呀,运行不了,还连接不成数据库

最新推荐

recommend-type

grpcio-1.63.0-cp38-cp38-linux_armv7l.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

SQLyog-13.1.3-0.x86Community.exe

SQLyog-13.1.3-0.x86Community
recommend-type

VB自动出题题库系统设计(源代码+系统).rar

计算机专业毕业设计VB精品论文资源
recommend-type

debugpy-1.0.0b2-cp35-cp35m-manylinux1_i686.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

实战自学python如何成为大佬(目录):https://blog.csdn.net/weixin-67859959/artic

实战自学python如何成为大佬(目录):https://blog.csdn.net/weixin-67859959/artic
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

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

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