当前位置: 首页 > news >正文

进阶C语言-通讯录的实现

在这里插入图片描述

通讯录

  • 🎈1.设计要求
  • 🎈2.程序实现
    • 🔭2.1打印菜单及初始化通讯录
    • 🔭2.2显示所有联系人
    • 🔭2.3查找指定的联系人
    • 🔭2.4删除指定的联系人
    • 🔭2.5查找指定的联系人
    • 🔭2.6修改指定联系人
    • 🔭2.7按照年龄排序(以此为例)
  • 🎈3.全部源码以及实现

🎈1.设计要求

🌞通过前面关于结构体及相关自定义类型的学习,我们就可以写上一个通讯录这样的程序,该程序有如下要求

  1. 可以保存100个人的信息。
  2. 增加人的信息。
  3. 删除指定联系人的信息。
  4. 查找指定联系人的信息。
  5. 修改指定联系人的信息。
  6. 排序通讯录的信息。
  7. 显示所有联系人的信息。

🎈人的信息:

  • 姓名
  • 年龄
  • 性别
  • 电话
  • 地址

✅为了使咱们的程序更加的清晰易懂,我们可以将该工程分为三个文件:

  • test.c-测试代码
  • contact.h-声明
  • contact.c-实现

🎈2.程序实现

🔭2.1打印菜单及初始化通讯录

contact.h

#pragma once
//类型的声明
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define Max 100
#define NAME_MAX 10
typedef struct PepInfo
{char name[NAME_MAX];int age;char sex[5];char tele[12];char addr[20];
}PInfo;typedef struct Contact
{PInfo data[Max];int sz;//用于记录当前通讯录中存放了多少个人的信息
}Contact;//初始化通讯录
void InitContact(Contact* c);

contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
void InitContact(Contact *c)
{assert(c);c->sz = 0;memset(c->data, 0, sizeof(c->data));
}

test.c

//文件用于测试通讯录的基本功能。
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"//自己定义的头文件用""
void menu()
{printf("***********************************\n");printf("********1.增加联系人***************\n");printf("                                   \n");printf("********2.删除指定联系人的信息*****\n");printf("                                   \n");printf("********3.查找指定联系人的信息*****\n");printf("                                   \n");printf("********4.修改指定联系人的信息*****\n");printf("                                   \n");printf("********5.排序通讯录的信息*********\n");printf("                                   \n");printf("********6.显示所有联系人的信息*****\n");printf("                                   \n");printf("********0.退出程序*****************\n");printf("***********************************\n");
}
enum Option
{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT
};
int main()
{int input = 0;Contact con;//初始化函数InitContact(&con);do{menu();printf("请输入你的选择:>");scanf("%d", &input);switch (input){case ADD:break;case DEL:break;case SEARCH:break;case MODIFY:break;case SHOW:break;case SORT:break;case EXIT:printf("退出通讯录\n");break;default:break;}} while (input);return 0;
}

🔭2.2显示所有联系人

contact.h

//显示所有联系人
void ShowContact(const Contact* c);

contact.c

void ShowContact(const Contact* c)
{assert(c);if (c->sz == 0){printf("通讯录为空,无需打印!\n");}int i = 0;printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");for (int i = 0; i < c->sz; i++){printf("%-20s%-5s%-5s%-12s%-30s\n",c->data[i].name, c->data[i].age, c

相关文章:

进阶C语言-通讯录的实现

通讯录 🎈1.设计要求🎈2.程序实现🔭2.1打印菜单及初始化通讯录🔭2.2显示所有联系人🔭2.3查找指定的联系人🔭2.4删除指定的联系人🔭2.5查找指定的联系人🔭2.6修改指定联系人🔭2.7按照年龄排序(以此为例)🎈3.全部源码以及实现🎈1.设计要求 🌞通过前面…...

STM32单片机的基本原理与应用(七)

超声波测距实验 基本原理 超声波测距实验是STM32单片机通过控制HC-SR04超声波模块&#xff0c;使其发送超声波&#xff0c;遇到物体反射回超声波来实现距离测量&#xff0c;其原理就是在发射超声波到接收超声波会有一段时间&#xff0c;而超声波在空气中传播的速度为声速&…...

LLM应用开发与落地:使用gradio十分钟搭建聊天UI

一、背景 如果你是做LLM应用开发的&#xff0c;特别是做后端开发&#xff0c;你一定会遇到怎么快速写一个聊天UI界面来调试prompt或agent的问题。这时候的你可能在苦恼中&#xff0c;毕竟react.js, next.js, css, html也不是每个人都那么熟练&#xff0c;对吧&#xff1f;即使…...

智慧城市:打造低碳未来,引领城市数字化转型新篇章

在“万物皆可数字化”的新时代浪潮下&#xff0c;智慧城市作为未来城市发展的先锋方向&#xff0c;正在以前所未有的速度和规模重塑我们的城市面貌。 智慧城市不仅是一个技术革新的标志&#xff0c;更是城市治理、民生服务等领域全面升级的重要引擎。 一、智慧城市的多元应用领…...

ChatGPT之制作短视频

引言 今天带来了如何使用 ChatGPT和剪映来制作简单的短视频教程&#xff0c;在这其中 ChatGPT的作用主要是帮我们生成文案&#xff0c;剪映的功能就是根据文案自动生成视频&#xff0c;并配上一些图片、动画、字幕和解说。 ChatGPT生成文案 首先&#xff0c;我们需要使用提示…...

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(二)

三、简配版集群&#xff0c;适用于demo环境 1.集群架构设计 主机名角色配置(核数&#xff0c;内存&#xff0c;磁盘)MasterRKE,controlplane,etcd,worker,rancher-master2C 8G 40GSlaver1controlplane,worker,rancher-master2C 8G 40GSlaver2controlplane,worker,rancher-mas…...

智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码) 源码设计 clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000;...

mysql如何备份某些库的某些表

MySQL备份数据库 mysql如何备份某些库的某些表 要备份某个库里的部分表&#xff0c;该如何操作&#xff1f; 例如&#xff1a;要备份db01库里的20张表&#xff0c;表很多又不想备份整个库 或者要备份多个库里的不同表&#xff0c;又如何操作&#xff1f; 例如&#xff1a;备份…...

C++类和对象入门(三)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 前言 在c中&#xff0c;类型分为两类&#xff0c;一类是内置类型&#xff0c;另一类是自定义类型。 1.内置类型&#xf…...

【0255】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(一)

文章目录 1. 前言2. MyBackendId分配机制2.1 全局变量MyBackendId2.2 共享缓存无效内存段(shared inval buffer)2.2.1 shmInvalBuffer缓冲区2.2.2 shmInvalBuffer初始化1. 前言 MyBackendId的数据类型是BackendId(backendid.h src/include/storage),它表示“当前活动的后…...

Python爬虫requests库详解

使用 requests 上一节中&#xff0c;我们了解了 urllib 的基本用法&#xff0c;但是其中确实有不方便的地方&#xff0c;比如处理网页验证和 Cookies 时&#xff0c;需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作&#xff0c;就有了更为强大的库 requests&…...

【漏洞复现】EPON上行A8-C政企网关信息泄露漏洞

Nx01 产品简介 EPON上行A8-C政企网关是一款终端产品&#xff0c;提供企业网络解决方案。 Nx02 漏洞描述 EPON上行A8-C政企网关敏感信息泄露漏洞&#xff0c;攻击者通过敏感信息泄露获取管理员密码。 Nx03 产品主页 fofa-query: "ZXECS" && title"Web…...

发送get请求并且发送请求头(header),java实现

发送get请求时&#xff0c;发送请求头&#xff08;Header&#xff09;中的内容 方便第二次调用其他url时传递参数&#xff0c;例如userCode或者租户编码 调用方式 Autowired private HttpServletRequest request;先注入HttpServletRequestpublic xxx xxx(){String url &quo…...

介绍docker

一&#xff1a;介绍docker&#xff1a; Docker 并没有单独的图形界面&#xff0c;它主要通过命令行来进行管理和操作 1、 docker ps&#xff1a;显示正在运行的容器。 docker images&#xff1a;显示本地的镜像。 docker run&#xff1a;创建并启动一个新容器。 docker stop&a…...

Web课程学习笔记--CSS盒模型

CSS 盒模型 盒模型 网页设计中常听的属性名&#xff1a;内容(content)、填充(padding)、边框(border)、边界(margin)&#xff0c; CSS盒子模式都具备这些属性。 这些属性我们可以把它转移到我们日常生活中的盒子&#xff08;箱子&#xff09;上来理解&#xff0c;日常生活中所…...

中学一级教师是什么职称等级

在教育的世界里&#xff0c;每一个角色都肩负着不可或缺的使命。其中&#xff0c;中学一级教师这一职称&#xff0c;就如同武侠小说里的“隐藏高手”&#xff0c;不显山不露水&#xff0c;却拥有着举重若轻的实力。 中学一级教师究竟是个怎样的职称等级呢&#xff1f;今天&…...

2024年2月CCF-全国精英算法大赛题目

第一次参加这种比赛&#xff0c;虽然是c类赛事&#xff0c;但是是ccf主办的&#xff0c;难度还是有点的&#xff0c;主要是前面签到题主要是思想&#xff0c;后面的题目难度太高&#xff0c;身为力扣只刷了一百多道题目的我解决不了&#xff0c;这几道我只做了B,C题,E题超时了&…...

arm 汇编积累

C语言函数与汇编对应关系 一、MOV 系列指令 1、指令格式 MOV{条件}{S} 目的寄存器&#xff0c;源操作数 2、含义解析&#xff1a; &#xff08;1&#xff09;&#xff1a;mov 指令传送数据 案例&#xff1a; MOV R0,R1 ; R0 R1; MOV PC,R14 ;PC R14; MOV R0,R…...

SpringBoot整理-安全(Spring Security)

在 Spring Boot 应用中实现安全性通常涉及到集成 Spring Security 框架。Spring Security 是一个功能强大且高度可定制的认证和访问控制框架,非常适合用于保护 Spring Boot 应用。 核心特性 认证: 认证是确认某个实体的身份,Spring Security 支持多种认证机制,如表单登录、L…...

【技能树学习】Git入门——练习题解析

前言 本篇文章给出了Git入门技能树中部分的练习题解析&#xff0c;包括分支管理&#xff0c;Git标签&#xff0c;在Mac和Windows上使用GitVSCode的步骤。强调了git cherry-pick不直接支持从标签中选择提交&#xff0c;git tag -d只能删除本地标签&#xff0c;Mac系统的终端可以…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...