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

seo排名工具快速提高大连做网站优化公司

seo排名工具快速提高,大连做网站优化公司,建设网官网住房和城乡厅官网,好用app制作一.前言 上次带大家认识了一下顺序表#xff0c;其实我们可以在顺序表的基础上实现一个通讯录的小项目#xff0c;通讯录的本质仍然是顺序表#xff0c;所以如果下面的代码你有问题的话#xff0c;先去看看我的上篇文章哦~。 通讯录的功能大家应该都知道吧#xff0c;这次…一.前言 上次带大家认识了一下顺序表其实我们可以在顺序表的基础上实现一个通讯录的小项目通讯录的本质仍然是顺序表所以如果下面的代码你有问题的话先去看看我的上篇文章哦~。 通讯录的功能大家应该都知道吧这次我们就要用C语言实现一个通讯录的基本功能 储存人的信息 其中每个人的信息包括 名字 性别 年龄 地址 电话号码 增加人的信息删除指定人的信息修改指定人的信息查找指定人的信息查看通讯录的信息 二.功能实现 1.通讯录信息格式的初始化  #pragma once //#includestdio.h //#includeSeqList.h #define NAME_MAX 100 #define GENDER_MAX 12 #define TEL_MAX 12 #define ADDR_MAX 100 //通讯录数据类型 typedef struct PersonInfo {char name[NAME_MAX];int age;char gender[GENDER_MAX];char tel[TEL_MAX];char addr[ADDR_MAX]; }Info;struct SeqList; typedef struct SeqList Contact; //通讯录提供的操作//通讯录的初始化和销毁 void ContactInit(Contact*pcon); void ContactDestory(Contact* pcon);//增删修查 void ContactAdd(Contact* pcon); void ContactDel(Contact* pcon); void ContactModify(Contact* pcon); void ContactFind(Contact* pcon); void ContactShow(Contact* pcon);2.通讯录初始化 void ContactInit(Contact* pcon) {SLInit(pcon); } //SLInit(pcon)函数的伪代码如下 void SLInit(SL* ps) {ps-arr NULL;ps-size ps-capacity 0; } 3.添加联系人 void ContactAdd(Contact* pcon) {Info info;printf(请输入联系人姓名:\n);scanf(%s, info.name);printf(请输入联系人年龄:\n);scanf(%d, info.age);printf(请输入联系人性别:\n);scanf(%s, info.gender);printf(请输入联系人电话:\n);scanf(%s, info.tel);printf(请输入联系人地址:\n);scanf(%s, info.addr);//保存数据到通讯录里通讯录SLPushBack(pcon,info); } 4.删除联系人 void ContactDel(Contact* pcon) {//删除之前先查找printf(请输入联系人姓名\n);char name[NAME_MAX];scanf(%s, name);int findIndex FindByName(pcon,name);if (findIndex 0){printf(要删除的联系人不存在\n);return;}SLErase(pcon, findIndex);printf(联系人删除成功\n);} //FindByName(pcon,name)函数的伪代码如下 int FindByName(Contact*pcon,char name[]) {for (int i0;ipcon-size;i){if (strcmp(pcon-arr[i].name, name) 0){return i;}}return -1; } 5.修改联系人信息 void ContactModify(Contact* pcon) {printf(请输入联系人姓名\n);char name[NAME_MAX];scanf(%s, name);int findIndex FindByName(pcon, name);if (findIndex 0){printf(要修改的联系人不存在\n);return;}//找到了printf(请输入联系人姓名:\n);scanf(%s, pcon-arr[findIndex].name);printf(请输入联系人年龄:\n);scanf(%d, pcon-arr[findIndex].age);printf(请输入联系人性别:\n);scanf(%s, pcon-arr[findIndex].gender);printf(请输入联系人电话:\n);scanf(%s, pcon-arr[findIndex].tel);printf(请输入联系人地址:\n);scanf(%s, pcon-arr[findIndex].addr);printf(联系人修改成功\n);}6.查找联系人信息 void ContactFind(Contact*pcon) {char name[NAME_MAX];printf(请输入要查找的联系人的姓名\n);scanf(%s,name);int findIndex FindByName(pcon, name);if (findIndex 0){printf(要查找的联系人不存在\n);return;}printf(%s %s %s %s %s\n,姓名,年龄,性别,电话,住址);printf(%s %d %s %s %s\n,pcon-arr[findIndex].name,pcon-arr[findIndex].age,pcon-arr[findIndex].gender,pcon-arr[findIndex].tel,pcon-arr[findIndex].addr);} 7.打印通讯录信息 void ContactShow(Contact* pcon) {printf(%s %s %s %s %s\n, 姓名, 年龄, 性别, 电话, 住址);for (int i 0; i pcon-size; i){printf(%s %d %s %s %s\n,pcon-arr[i].name,pcon-arr[i].age,pcon-arr[i].gender,pcon-arr[i].tel,pcon-arr[i].addr);} } 三.SeqList.h #define _CRT_SECURE_NO_WARNINGS 1 #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #includestdio.h #includestdlib.h #includeassert.h #includeContact.h//静态顺序表//#define N 100 //struct SeqList //{ // SLDataType a[N]; // int size; //};//动态顺序表//typedef int SLDataType; typedef Info SLDataType;typedef struct SeqList {SLDataType* arr; //存储数据的底层结构int capacity; //记录顺序表的空间大小int size; //记录顺序表当前有效的数据个数 }SL;//typedef struct SeqList SL;//初始化和销毁 void SLInit(SL* ps); void SLDestroy(SL* ps); void SLPrint(SL* ps); //保持接口一致性//顺序表的头部/尾部插入 void SLPushBack(SL* ps, SLDataType x); void SLPushFront(SL* ps, SLDataType x);//顺序表的头部/尾部删除 void SLPopBack(SL* ps); void SLPopFront(SL* ps);//指定位置之前插入数据 //删除指定位置数据 void SLInsert(SL* ps, int pos, SLDataType x); void SLErase(SL* ps, int pos); int SLFind(SL* ps, SLDataType x);四.SeqList.c #define _CRT_SECURE_NO_WARNINGS 1 #includeSeqList.h //初始化和销毁 void SLInit(SL* ps) {ps-arr NULL;ps-size ps-capacity 0; }void SLCheckCapacity(SL* ps) {if (ps-size ps-capacity) {int newCapacity ps-capacity 0 ? 4 : 2 * ps-capacity;SLDataType* tmp (SLDataType*)realloc(ps-arr, newCapacity * sizeof(SLDataType));if (tmp NULL) {perror(realloc fail!);exit(1);}//扩容成功ps-arr tmp;ps-capacity newCapacity;} }//顺序表的头部/尾部插入 void SLPushBack(SL* ps, SLDataType x) {//断言--粗暴的解决方式//assert(ps ! NULL);assert(ps);//if判断--温柔的解决方式//if (ps NULL) {// return;//}//空间不够扩容SLCheckCapacity(ps);//空间足够直接插入ps-arr[ps-size] x;//ps-size; } void SLPushFront(SL* ps, SLDataType x) {assert(ps);//判断是否扩容SLCheckCapacity(ps);//旧数据往后挪动一位for (int i ps-size; i 0; i--) //i 1{ps-arr[i] ps-arr[i - 1]; //ps-arr[1] ps-arr[0]}ps-arr[0] x;ps-size; }//顺序表的头部/尾部删除 void SLPopBack(SL* ps) {assert(ps);assert(ps-size);//顺序表不为空//ps-arr[ps-size - 1] -1;ps-size--; } void SLPopFront(SL* ps) {assert(ps);assert(ps-size);//不为空执行挪动操作for (int i 0; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }//指定位置之前插入数据 void SLInsert(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);SLCheckCapacity(ps);//pos及之后的数据往后挪动一位pos空出来for (int i ps-size; i pos; i--){ps-arr[i] ps-arr[i - 1]; //ps-arr[pos1] ps-arr[pos]}ps-arr[pos] x;ps-size; } //删除指定位置数据 void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);//pos以后的数据往前挪动一位for (int i pos; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];//ps-arr[i-2] ps-arr[i-1];}ps-size--; } //查找x //int SLFind(SL* ps, SLDataType x) //{ // assert(ps); // for (int i 0; i ps-size; i) // { // if (ps-arr[i] x) // return i; // } // return -1; //} void SLDestroy(SL* ps) {assert(ps);if (ps-arr){free(ps-arr);}ps-arr NULL;ps-size ps-capacity 0; }void SLPrint(SL* ps) {for (int i 0; i ps-size; i){printf(%d , ps-arr[i]);}printf(\n); } 五.Contact.h #pragma once //#includestdio.h //#includeSeqList.h #define NAME_MAX 100 #define GENDER_MAX 12 #define TEL_MAX 12 #define ADDR_MAX 100 //通讯录数据类型 typedef struct PersonInfo {char name[NAME_MAX];int age;char gender[GENDER_MAX];char tel[TEL_MAX];char addr[ADDR_MAX]; }Info;struct SeqList; typedef struct SeqList Contact; //通讯录提供的操作//通讯录的初始化和销毁 void ContactInit(Contact*pcon); void ContactDestory(Contact* pcon);//增删修查 void ContactAdd(Contact* pcon); void ContactDel(Contact* pcon); void ContactModify(Contact* pcon); void ContactFind(Contact* pcon); void ContactShow(Contact* pcon); 六.Contact.c #define _CRT_SECURE_NO_WARNINGS 1 #includeContact.h #includeSeqList.h //通讯录的初始化和销毁 void ContactInit(Contact* pcon) {SLInit(pcon); } void ContactDestory(Contact* pcon) {SLDestroy(pcon); }//增删修查 void ContactAdd(Contact* pcon) {Info info;printf(请输入联系人姓名:\n);scanf(%s, info.name);printf(请输入联系人年龄:\n);scanf(%d, info.age);printf(请输入联系人性别:\n);scanf(%s, info.gender);printf(请输入联系人电话:\n);scanf(%s, info.tel);printf(请输入联系人地址:\n);scanf(%s, info.addr);//保存数据到通讯录里通讯录SLPushBack(pcon,info); } int FindByName(Contact*pcon,char name[]) {for (int i0;ipcon-size;i){if (strcmp(pcon-arr[i].name, name) 0){return i;}}return -1; } //void ContactFind(Contact* pcon) //{ // //} void ContactDel(Contact* pcon) {//删除之前先查找printf(请输入联系人姓名\n);char name[NAME_MAX];scanf(%s, name);int findIndex FindByName(pcon,name);if (findIndex 0){printf(要删除的联系人不存在\n);return;}SLErase(pcon, findIndex);printf(联系人删除成功\n);} void ContactModify(Contact* pcon) {printf(请输入联系人姓名\n);char name[NAME_MAX];scanf(%s, name);int findIndex FindByName(pcon, name);if (findIndex 0){printf(要修改的联系人不存在\n);return;}//找到了printf(请输入联系人姓名:\n);scanf(%s, pcon-arr[findIndex].name);printf(请输入联系人年龄:\n);scanf(%d, pcon-arr[findIndex].age);printf(请输入联系人性别:\n);scanf(%s, pcon-arr[findIndex].gender);printf(请输入联系人电话:\n);scanf(%s, pcon-arr[findIndex].tel);printf(请输入联系人地址:\n);scanf(%s, pcon-arr[findIndex].addr);printf(联系人修改成功\n);}void ContactShow(Contact* pcon) {printf(%s %s %s %s %s\n, 姓名, 年龄, 性别, 电话, 住址);for (int i 0; i pcon-size; i){printf(%s %d %s %s %s\n,pcon-arr[i].name,pcon-arr[i].age,pcon-arr[i].gender,pcon-arr[i].tel,pcon-arr[i].addr);} } void ContactFind(Contact*pcon) {char name[NAME_MAX];printf(请输入要查找的联系人的姓名\n);scanf(%s,name);int findIndex FindByName(pcon, name);if (findIndex 0){printf(要查找的联系人不存在\n);return;}printf(%s %s %s %s %s\n,姓名,年龄,性别,电话,住址);printf(%s %d %s %s %s\n,pcon-arr[findIndex].name,pcon-arr[findIndex].age,pcon-arr[findIndex].gender,pcon-arr[findIndex].tel,pcon-arr[findIndex].addr);}七.Contest.c #define _CRT_SECURE_NO_WARNINGS 1 //#includeContact.h #includeSeqList.h void menu() {printf(*****************通讯录***************\n);printf(*******1.添加联系人 2.删除联系人*****\n);//ctrldprintf(*******3.修改联系人 4.查找联系人*****\n);//ctrldprintf(*******5.查看通讯录 0. 退 出 ******\n);//ctrldprintf(**************************************\n); } int main() {int op 0;//创建通讯录结构Contact con;ContactInit(con);do{menu();printf(请输入需要的操作\n);scanf(%d,op);switch (op){case 1:ContactAdd(con);break;case 2:ContactDel(con);break;case 3:ContactModify(con);break;case 4:ContactFind(con);break;case 5:ContactShow(con);break;case 0:printf(通讯录退出中\n);break;default:break;}} while (op);//销毁通讯录ContactDestory(con);return 0; }
http://www.pierceye.com/news/815028/

相关文章:

  • 国内建网站费用青岛网站建设公司排行
  • 石台做网站策略网页游戏排行榜
  • 注册网站怎么做网站深圳网站设计公司怎么样
  • 网站备案后有什么好处个人主页网页设计
  • 网站搭建上海wordpress主题范例
  • 网站内容建设出现的问题马鞍山人才网
  • 上海正规做网站公司电话演示 又一个wordpress站点
  • 建设银行网站特色完整网站开发视频教程
  • 株洲做网站渠道电话设计师培训生招聘
  • 四川阿坝建设招标网站wordpress调整文章编辑界面
  • 福州seo计费优化设计的答案
  • 网站建设教程网什么是oa系统软件
  • 建设一个网站app需要多少钱哪个做问卷网站佣金高
  • 宁夏网站设计公司网页视频怎么下载ios
  • 滁州建设厅网站工程建设施工企业质量管理规范
  • 从事网站建设的职业wordpress 外网
  • 百度百度上海百度seo
  • 山西网站的公司广东省住房与城乡建设厅网站
  • 怎么查看网站是用什么编程语言开发的品牌软文范文
  • 能够沟通业务的网站wordpress 主题 恢复
  • 动态域名做网站在线查询企业
  • 绍兴企业网站推广建设通是什么网站
  • 网站设计制作太原抖音seo怎么做的
  • 北京网站代理备案上海跨境电商网站开发公司排名
  • 您的网站未备案 或者原备案号被取消开发一个微信小程序多少钱
  • 如何用记事本做网站南宁做网站哪家好
  • 优秀网站首页百度账号怎么改名字
  • 杭州做网站排名软件碧桂园房地产最新消息
  • 上传网站空间天津专门做网站的公司
  • 无锡企业做网站大庆油田内网主页网址