龙岗网站app建设免费网页游戏手机版

diannao/2025/10/21 0:56:45/文章来源:
龙岗网站app建设,免费网页游戏手机版,移动互联网营销的目标是( ),电影介绍网页设计代码前言 通讯录是一种记录联系人信息的工具#xff0c;包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同#xff0c;可以直接看第四章改造内容。 此通讯录是基于通讯录1.0#xff08;静态版#xff09;的基础上进行改进#xff0c;请先看系列文字第…前言 通讯录是一种记录联系人信息的工具包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同可以直接看第四章改造内容。 此通讯录是基于通讯录1.0静态版的基础上进行改进请先看系列文字第一篇再看本篇博客。 ****** 有需要源代码见文章末尾 ****** 系列文章目录 第一篇【C语言】通讯录1.0 静态版 第二篇【C语言】通讯录2.0 动态增长版 第三篇【C语言】通讯录2.0 文件存储版 文章目录 前言系列文章目录一、什么是通讯录二、静态版、动态增长版和文件存储版的区别1. 静态版2. 动态增长版3. 文件存储版 三、通讯录模块组成图文1. 通讯录文件构成2. 通讯录个人信息3. 通讯录功能模块 四、如何改造通讯录1.0改造目标1. 改造目标2. 需要的改造部分 五、如何改进代码演示1. 通讯录结构模块2. 通讯录初始化函数3. 增加联系人函数4. 添加内存释放函数 六、所有文件代码1. 头文件2. 函数文件3. 测试逻辑文件 总结 一、什么是通讯录 通讯录是一种记录联系人信息的工具包括姓名、电话号码、电子邮件地址、住址等。通讯录可以帮助人们管理自己的联系人让人们更轻松地与他人保持联系。通讯录可以在手机、电脑、笔记本等设备上保存也可以在云端储存和同步方便用户随时查看和更新联系人信息。 二、静态版、动态增长版和文件存储版的区别 C语言静态版、动态增长版和文件存储版的区别如下 1. 静态版 静态版在程序编译时就确定了内存大小程序运行期间内存大小不会发生变化因此对于需要处理大量数据或者不确定数据大小的情况不适用。 2. 动态增长版 动态增长版可以在程序运行期间根据需要动态增加内存大小因此适用于处理不确定数据大小的情况。但是动态增长的内存需要手动释放否则会导致内存泄漏。 3. 文件存储版 文件存储版将数据存储在文件中可以持久保存数据并随时读取。但是存储在文件中的数据需要进行IO操作因此相比于内存操作来说效率较低。此外文件存储版不适用于需要频繁修改的数据。 三、通讯录模块组成图文 1. 通讯录文件构成 2. 通讯录个人信息 3. 通讯录功能模块 四、如何改造通讯录1.0改造目标 1. 改造目标 通讯录的空间不是固定的大小是可以调整的默认能放3个人的信息如果不够就每次增加2个人的信息 2. 需要的改造部分 五、如何改进代码演示 1. 通讯录结构模块 将通讯录的存储方式改成动态增长用指针来调用需要增加通讯录的现有的容量值 //动态版 typedef struct Contact {PeoInfo* data;int sz;int capacity;}Contact;2. 通讯录初始化函数 本来初始化通讯录是使用内存函数memset来实现现在由malloc动态内存函数来动态开辟内存初始化设置容量为3个联系人的容量 //动态版 void InitContact(Contact* pc) {assert(pc);pc-data (PeoInfo*)malloc(3 * sizeof(PeoInfo));if (pc-data NULL){perror(InitContact);return;}pc-capacity 3;pc-sz 0; }3. 增加联系人函数 本来前提是判断是否通讯录已满现在改为判断当通讯录容量满的时候增加动态内存需要写一个函数来判断容量是否已满当容量已满的时候。使用realloc动态内存函数来增加动态内存 //动态版 void AddContact(Contact* pc) {assert(pc); //断言if (determine(pc) 0){return;}printf(请输入姓名);scanf(%s, pc-data[pc-sz].name);printf(请输入年龄);scanf(%d, (pc-data[pc-sz].age));printf(请输入性别);scanf(%s, pc-data[pc-sz].sex);printf(请输入电话);scanf(%s, pc-data[pc-sz].tele);printf(请输入地址);scanf(%s, pc-data[pc-sz].addr);pc-sz; //通讯录加1printf(联系人增加成功\n); }//判断内存是否已满函数 int determine(Contact* pc) {assert(pc);if (pc-capacity pc-sz){PeoInfo* ptr (PeoInfo*)realloc(pc-data, (pc-capacity 2) * sizeof(PeoInfo));if (ptr NULL){perror(determine);return 0;}else{pc-capacity 2;pc-data ptr;printf(增容成功\n);return 1;}}return 1; }4. 添加内存释放函数 在通讯录菜单栏选择退出 0 通讯录时要释放内存也要将容量和size 归零需要写一个函数来进行这个操作 void DestroyContact(Contact* pc) {free(pc-data);pc-data NULL;pc-capacity 0;pc-sz; }六、所有文件代码 1. 头文件 #pragma once #includestdio.h #includeassert.h #includestring.h #includestdlib.h#define MAX 100 #define NAME 10 #define SEX 5 #define TELE 12 #define ADDR 30 //使用枚举 定义选择 enum OPTION {EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT };//个人信息类型声明 typedef struct PeoInfo {char name[NAME];int age;char sex[SEX];char tele[TELE];char addr[ADDR]; }PeoInfo;//建立通讯录 //静态版 //typedef struct Contact //{ // PeoInfo data[MAX]; //通讯录数量 // int sz; //目前通讯录内的人数 //}Contact; //动态版 typedef struct Contact {PeoInfo* data;int sz;int capacity;}Contact;//函数声明//初始化通讯录 void InitContact(Contact* pc);//增加联系人 void AddContact(Contact* pc);//显示所有联系人的信息 void ShowContact(const Contact* pc);//删除指定联系人 void DelContact(Contact* pc);//查找指定联系人 void SearchContact(const Contact* pc);//修改指定联系人 void ModifyContact(Contact* pc);//释放内存void DestroyContact(Contact* pc);2. 函数文件 #define _CRT_SECURE_NO_WARNINGS 1 #include addbook.hint determine(Contact* pc) {assert(pc);if (pc-capacity pc-sz){PeoInfo* ptr (PeoInfo*)realloc(pc-data, (pc-capacity 2) * sizeof(PeoInfo));if (ptr NULL){perror(determine);return 0;}else{pc-capacity 2;pc-data ptr;printf(增容成功\n);return 1;}}return 1; } //静态版 //void InitContact(Contact* pc) //{ // assert(pc); //断言 // memset(pc-data, 0, sizeof(pc-data)); //内存函数 data初始化为0 // pc-sz 0; //} //动态版 void InitContact(Contact* pc) {assert(pc);pc-data (PeoInfo*)malloc(3 * sizeof(PeoInfo));if (pc-data NULL){perror(InitContact);return;}pc-capacity 3;pc-sz 0; } //动态版 void AddContact(Contact* pc) {assert(pc); //断言if (determine(pc) 0){return;}printf(请输入姓名);scanf(%s, pc-data[pc-sz].name);printf(请输入年龄);scanf(%d, (pc-data[pc-sz].age));printf(请输入性别);scanf(%s, pc-data[pc-sz].sex);printf(请输入电话);scanf(%s, pc-data[pc-sz].tele);printf(请输入地址);scanf(%s, pc-data[pc-sz].addr);pc-sz; //通讯录加1printf(联系人增加成功\n); }//静态版 //void AddContact(Contact* pc) //{ // assert(pc); //断言 // if (pc-sz MAX) //如果通讯录已经满了 则返回 // { // printf(通讯录已满无法添加\n); // return; // } // printf(请输入姓名); // scanf(%s, pc-data[pc-sz].name); // printf(请输入年龄); // scanf(%d, (pc-data[pc-sz].age)); // printf(请输入性别); // scanf(%s, pc-data[pc-sz].sex); // printf(请输入电话); // scanf(%s, pc-data[pc-sz].tele); // printf(请输入地址); // scanf(%s, pc-data[pc-sz].addr); // pc-sz; //通讯录加1 // printf(联系人增加成功\n); //} //搜索名字找通讯录函数 static int Findname(const Contact* pc, char na[]) {int i 0;assert(pc na);for (i 0; i pc-sz; i){if (strcmp(pc-data[i].name, na) 0){return i;}}return -1; } void DelContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME] { 0 };assert(pc);//输入要查找的联系人名字printf(请输入要查找的名字);scanf(%s, name);//找到要查找的联系人int del Findname(pc, name);//删除坐标位子的联系人 将后面的联系人进行代替其位置if (del -1){printf(找不到此人不存在\n);return;}else{int i 0;for (i del; i pc-sz; i){pc-data[i] pc-data[i 1];}pc-sz--;}printf(成功删除联系人\n); } void ShowContact(const Contact* pc) {assert(pc);printf(%-10s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);int i 0;for (i 0; i pc-sz; i){printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);}printf(通讯录展示完毕\n); } void SearchContact(const Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME] { 0 };assert(pc);//输入要查找的联系人名字printf(请输入要查找的名字);scanf(%s, name);//找到要查找的联系人int i Findname(pc, name);if (i -1){printf(找不到此人不存在\n);return;}else{printf(%-10s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);}printf(成功找到联系人\n); } void ModifyContact(Contact* pc) {assert(pc);char name[NAME] { 0 };printf(请输入要修改人的名字:);scanf(%s, name);int mod Findname(pc, name);if (mod -1){printf(找不到,不存在\n);return;}else{printf(请输入姓名);scanf(%s, pc-data[mod].name);printf(请输入年龄);scanf(%d, (pc-data[mod].age));printf(请输入性别);scanf(%s, pc-data[mod].sex);printf(请输入电话);scanf(%s, pc-data[mod].tele);printf(请输入地址);scanf(%s, pc-data[mod].addr);printf(联系人修改成功\n);} } void DestroyContact(Contact* pc) {free(pc-data);pc-data NULL;pc-capacity 0;pc-sz; }3. 测试逻辑文件 #define _CRT_SECURE_NO_WARNINGS 1 #includeaddbook.h void menu() {printf(********************************\n);printf(***** 1. ADD 2. DEL *****\n);printf(***** 3. SEARCH 4. MODIFY *****\n);printf(***** 5. SHOW 6. SORT *****\n);printf(***** 0. EXIT *****\n);printf(********************************\n);}void test() {int input 0;Contact con;InitContact(con);do{menu();printf(请选择);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DEL:DelContact(con);break;case SEARCH:SearchContact(con);break;case MODIFY:ModifyContact(con);break;case SHOW:ShowContact(con);break;case SORT:printf(功能待开发\n);break;case EXIT:DestroyContact(con);printf(成功退出通讯录\n);break;default:printf(输入错误请重新输入\n);break;}} while (input);} int main() {test();return 0; }总结 本期博客是通讯录2.0动态增长版是对前面所学知识进行复习编写通讯录时有助于理解自定义类型和动态内存管理的学习和了解,后期会对现在的通讯录进行更新 如这篇博客对大家有帮助的话希望 三连 支持一下 如果有错误感谢大佬的斧正 如有 其他见解发到评论区一起学习 一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天水网站建设惠普招标网站哪个好用

“超级AI助手:全新提升!中文NLP训练框架,快速上手,海量训练数据,ChatGLM-v2、中文Bloom、Dolly_v2_3b助您实现更智能的应用!” 1.简介 目标:基于pytorch、transformers做中文领域的nlp开箱即用…

哪个网站的旅游板块做的好汕头市研发网站建设

“找不到服务器IP地址”错误是Chrome浏览器用户的常见问题,导致404消息和无法访问网页 一、错误解释:找不到服务器 IP 地址 当您在浏览器的地址栏中输入域名时,如果输入的域名与相应的 Internet 协议地址(IP 地址)不…

网站的设计制作与维护无锡 学校网站建设

我使用Maven网站已有一段时间了,对此我感到非常满意。 我不想在Maven 3之后更新我的项目,但是没关系,Maven 3带来了许多新奇的东西。 但是,有两件事使我感到烦恼:缺乏美观和现代的外观,以及浏览复杂代码的J…

专业网站定制公司大学生动漫主题网页制作

前两天,看到一篇“湖北恩施的一名学生早读课上大汗淋漓”的文章,不禁想起了我们班的早读。01早读情况除周一升旗以外,其余的学习日都是有早读的,但是早读的利用率有多少就不得而知了。一般在前一天布置作业的时候,作业…

做电台用啥什么网站怎么做网站发货

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近在项目中需要用到3DUI的展示,之前一般会用TextMeshPro进行展示: 但是,后面又需要添加按钮、Toggle等…

建站公司郑州外贸网站推广外包

本篇文章我们介绍4种网站分析中最常用,也是最有效的分析方法。他们分别是细分分析,对比分析,对比分析,质与量分析。这些分析方法在实际工作中经常组合使用。我们先来看下细分分析。 1, 细分分析 单一的指标数据或大维度…

效果图网站排行开源网站 做镜像 如何做

keras中可以使用 from keras.utils import plot_model plot_model(model,to_filemodel_auth.png,show_shapesTrue) #show_shapesTrue可以把输入输出的shape一起打印 注意,最好是给每个层命名,命名好之后打印出来的才会带名字。程序运行的时候也有一定的指…

正规网站建设公司一般要多少钱西宁网站建设平台公司

我已经是IntelliJ IDEA的长期用户(和客户)。 我想我是在2005年或2006年(版本5.0)左右开始使用它的。 那时我是Eclipse用户。 我的一些同事向我推荐了它,起初我没有被说服,但是在尝试之后我印象深刻。 现在…

备案个人网站做广告公司网站建设

目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…

网站备案时间怎么查询系统学生个人网页优秀模板

起因&#xff1a;最近公司要发票自动匹配&#xff0c; 比如财务输入10000W块&#xff0c;找到发票中能凑10000的。然后可以快速核销。 废话不多&#xff0c; 一 官方文档 https://developers.google.cn/optimization/pack/knapsack?hlzh-cn 二 POM文件 <!--google 算法包…

汕头网站设计怎么做企业营销型网站推广

思科加强生成树性能的属性&#xff08;Portfast/Uplinkfast/BackboneFast&#xff09;与RSTP的关系本文截自于博主CCNP交换技术稿件内容4.2.6思科加强生成树性能的属性&#xff08;Portfast/Uplinkfast/BackboneFast&#xff09;与RSTP的关系首先说明一下&#xff0c;为什么笔者…

如何查网站的空间wordpress改logo不显示

在数字化阅读日益盛行的今天&#xff0c;各种电子文献格式层出不穷&#xff0c;其中CAJ和PDF无疑是两种最为常见的格式。CAJ是中国知网推出的一种专用全文阅读格式&#xff0c;而PDF则因其跨平台、不易被修改的特性&#xff0c;受到了广大读者的青睐。因此&#xff0c;将CAJ格式…

便宜建站空间开发公司产品部课件

<?phpheader("Content-Type:text/html;charsetutf-8");/*无限级分类。牵扯2个应用0是-找指定栏目的子栏目1是-找指定栏目的子孙栏目&#xff0c;即子孙树2是-找指定栏目的父栏目/父父栏目....顶级栏目&#xff0c;即家谱树*/$aarr array(array(id>1,name>…

网站建设类毕业设计江西网站建设公司哪家好

时钟周期是一个时间的量&#xff0c;人们规定10纳秒&#xff08;ns&#xff09;为一个时钟周期。时钟周期表示了SDRAM所能运行的最高频率。更小的时钟周期就意味着更高的工作频率。对于PC100规格的内存来说&#xff0c;它的运行时钟周期应该不高于10纳秒。纳秒与工作频率之间的…

网站怎么做有创意帝国网站数据库配置文件

题目描述 给定一个正整数 n&#xff0c;对 n 分解质因数。 设 np1​p2​p3​⋯px​&#xff0c;其中 pi​ 均为质数。 如果 pi​ 均为奇数&#xff0c;则称 n 为『只因数』。 现在&#xff0c;给出若干个 n&#xff0c;请你判断 n 是不是『只因数』。 输入格式 本题单测试…

昆明移动端网站建设安卓下载软件

2月9日在洛杉矶举行的第11届网络搜索与数据挖掘国际会议&#xff08;WSDM 2018&#xff09;上&#xff0c;公布了今年的WSDM Cup竞赛成绩&#xff0c;来自阿里巴巴的AliOS团队凭借优秀的算法能力&#xff0c;摘得榜眼。这是该赛事举办11届以来&#xff0c;中国企业在该赛事上首…

网站购物车功能怎么做网站设计的性能需求

今天小编给广大用户分享搜狐视频怎么下载到电脑。搜狐视频有海量的视频让我们可以不断的去浏览&#xff0c;而且这些资源是 跟搜狐视频网站同步。搜狐视频有占用内存小、耗电小、交互简单、播放流畅的优势&#xff0c;无论你是千元机还是几千元的高中低档手机中均能完美运行&am…

网站ftp空间做旅游网站目的和意义

HashMap头插死循环是指在JDK1.7中&#xff0c;多线程环境下&#xff0c;HashMap进行扩容时由于多个线程一起执行扩容&#xff0c;可能会导致某一结点被错误插入头部并形成一个循环链表。 发生死循环的源码如下&#xff1a; // hashmap由数组链表构成 void transfer(Entry[] ne…

网站商城怎么做的中国发达国家还有多远

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

四川外国语大学网站建设系wordpress 3.5 官方中文版

前言C# 对类型系统进行改进一直都没有停过&#xff0c;这是一个长期的过程。C# 8 之后则主要围绕扩展性方面进行各种改进&#xff0c;目前即将发布的 C# 11 中自然也包含该方面的进度。这些改进当然还没有做完&#xff0c;本文则介绍一下已经推出和即将推出的关于这方面改进的新…