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

手机ppt在哪个网站做广州海珠区好玩的地方

手机ppt在哪个网站做,广州海珠区好玩的地方,5h制作网站,网上买吃的网站做代理目录 通讯录项目要求#xff1a; 引言#xff1a; 步骤如下#xff1a; 用户的数据类型#xff1a; 初始化循序表#xff1a; 菜单#xff1a; 添加联系人#xff1a; 删除联系人#xff1a; 修改联系人#xff1a; 查找联系人#xff1a; 查看通讯录 引言 步骤如下 用户的数据类型 初始化循序表 菜单 添加联系人 删除联系人 修改联系人 查找联系人 查看通讯录 头文件 1Contact.h 2Seqlist.h .c文件 1Contact.c 2Contest.c 3SeqList.c 结语 通讯录项目要求 c语言基础要求结构体动态内存管理循序表 通讯录功能要求 1至少能够存储100个人的通讯信息 2能够保存用户信息名字性别年龄电话地址等 3增加联系人 4查找指定联系人 5删除指定联系人 6修改指定联系人 7显示联系人信息 引言 随着c语言结构体和顺序表的逐渐学习深入我们就可以完成一个通讯录的小项目通过实现它来检查自己的学习情况和查缺补漏。 步骤如下 说明由于通讯录是由循序表的基本运算构成的故下面的各种操作都只给出在顺序表基础上的完成的在文章最后会给出循序表的基本运算。 基本运算的函数名如下 void SLInit(SL* ps) 初始化 void SLDestroy(SL* ps) 销毁 void SLPrint(SL* ps) 打印 void SLCheckCapacity(SL* ps) 扩容 void SLPushBack(SL* ps, ElemType x)尾插 void SLInsert(SL* ps, int pos, ElemType x)指定插入 void SLErase(SL* ps, int pos)删除指定数据 用户的数据类型 //用户数据 typedef struct PersonInfo {char name[NAME_MAX];char sex[SEX_MAX];int age;char number[TEL_MAX];char address[ADDR_MAX]; }PeoInfo; 初始化循序表 基本运算如上面给出的。 void InitContact(contact* con) {SLInit(con); } 菜单 void menu() {printf(********************通讯录******************\n);printf(*********1.添加联系人 2.删除联系人*******\n);printf(*********3.修改联系人 4.查找联系人*******\n);printf(*********5.查看通讯录 0. 退 出 *******\n);printf(********************************************\n); } 效果如下 添加联系人 peoinfo是自定义的数据结构 void AddContact(contact* con) {PeoInfo e;printf(请输入联系人姓名\n);scanf(%s, e.name);printf(请输入联系人年龄\n);scanf(%d, e.age);printf(请输入联系人性别\n);scanf(%s, e.sex);printf(请输入联系人电话\n);scanf(%s, e.number);printf(请输入联系人住址\n);scanf(%s, e.address);SLPushBack(con, e); } 运行结果如下 删除联系人 用一个name数组来存储输入的字符串和通讯录对比若findindex大于0说明该联系人存在删除成功若小于0说明不存在该联系人删除失败。 查找联系人的函数如下 int FindNAME(contact* con, char name[]) {     for (int i 0; i con-size; i)     {         if (strcmp(con-arr[i].name, name) 0)             return i;     }     return -1; } void DelContact(contact* con) {char name[NAME_MAX];printf(请输入要查找的联系人姓名\n);//char name[NAME_MAX];scanf(%s,name);int findindex FindNAME(con, name);if (findindex 0){SLErase(con, findindex);printf(删除联系人成功\n);}elseprintf(删除联系人失败\n); } 运行结果如下 修改联系人 先查找联系人在进行修改和输入新的联系人和上面的删除差不多。 void ContactModify(contact*con) {char name[NAME_MAX];printf(请输入要修改联系人名称\n);scanf(%s, name);int findindex FindNAME(con, name);if (findindex 0){printf(无此联系人\n);return;}else{printf(请输入联系人姓名\n);scanf(%s, con-arr[findindex].name);printf(请输入联系人年龄\n);scanf(%d, con-arr[findindex].age);printf(请输入联系人性别\n);scanf(%s, con-arr[findindex].sex);printf(请输入联系人电话\n);scanf(%s, con-arr[findindex].number);printf(请输入联系人住址\n);scanf(%s, con-arr[findindex].address);printf(修改联系人成功\n);}} 运行结果如下 查找联系人 先输入要查找联系人的姓名后通过FindNAME函数找到联系人对应的下标进行判断最后在把联系人对应的信息输出。 void ContactFind(contact* con) {printf(请输入要查找的姓名\n);char name[NAME_MAX];scanf(%s, name);int findindex FindNAME(con, name);if (findindex 0){printf(查无此人\n);return;}else{printf(%s %s %s %s %s\n, 姓名, 性别, 年龄, 电话, 住址);printf(%s %s %d %s %s\n,con-arr[findindex].name,con-arr[findindex].sex,con-arr[findindex].age,con-arr[findindex].number,con-arr[findindex].address);}} 运行如下 查看通讯录 void ShowContact(contact* con) {printf(%s %s %s %s %s\n, 姓名, 性别, 年龄, 电话, 住址);for (int i 0; i con-size; i){printf(%s %s %d %s %s\n,con-arr[i].name,con-arr[i].sex,con-arr[i].age,con-arr[i].number,con-arr[i].address);} } 运行结果如下 由于是个项目故要进行个功能的函数分装和头文件的引用故下面我给出头文件和.c文件大家按照我给出的名字在编译器上创建即可运行。 头文件 1Contact.h 声明通讯录的各种函数及结构体内容。 #pragma once #define NAME_MAX 100 #define SEX_MAX 4 #define TEL_MAX 11 #define ADDR_MAX 100//前置声明//用户数据 typedef struct PersonInfo {char name[NAME_MAX];char sex[SEX_MAX];int age;char number[TEL_MAX];char address[ADDR_MAX]; }PeoInfo; struct SeqList; typedef struct SeqList contact; //初始化通讯录 void InitContact(contact* con); //添加通讯录数据 void AddContact(contact* con); //删除通讯录数据 void DelContact(contact* con); //展示通讯录数据 void ShowContact(contact* con); //查找通讯录数据 void FindContact(contact* con); //修改通讯录数据 void ModifyContact(contact* con); //销毁通讯录数据 void DestroyContact(contact* con);2Seqlist.h 循序表的基本运算 #pragma once //PeoInfo #include Contact.h #include stdio.h #include assert.h #include stdlib.h #include string.h typedef PeoInfo ElemType; typedef struct SeqList {ElemType* arr;int capacity;int size; }SL; //初始化和销毁 void SLInit(SL* ps); void SLDestroy(SL* ps); void SLPrint(SL* ps); //扩容 void SLCheckCapacity(SL* ps); //头部插入删除 / 尾部插入删除 void SLPushBack(SL* ps, ElemType x); void SLPopBack(SL* ps); void SLPushFront(SL* ps, ElemType x); void SLPopFront(SL* ps);//指定位置之前插入/删除数据 void SLInsert(SL* ps, int pos, ElemType x); void SLErase(SL* ps, int pos); //int SLFind(SL* ps, ElemType x); .c文件 1Contact.c 通讯录的函数具体实现。 #define _CRT_SECURE_NO_WARNINGS 1 #include Contact.h #include Seqlist.h void InitContact(contact* con) {SLInit(con); } void AddContact(contact* con) {PeoInfo e;printf(请输入联系人姓名\n);scanf(%s, e.name);printf(请输入联系人年龄\n);scanf(%d, e.age);printf(请输入联系人性别\n);scanf(%s, e.sex);printf(请输入联系人电话\n);scanf(%s, e.number);printf(请输入联系人住址\n);scanf(%s, e.address);SLPushBack(con, e); } int FindNAME(contact* con, char name[]) {for (int i 0; i con-size; i){if (strcmp(con-arr[i].name, name) 0)return i;}return -1; } void DelContact(contact* con) {char name[NAME_MAX];printf(请输入要查找的联系人姓名\n);//char name[NAME_MAX];scanf(%s,name);int findindex FindNAME(con, name);if (findindex 0){SLErase(con, findindex);printf(删除联系人成功\n);}elseprintf(删除联系人失败\n); } void ShowContact(contact* con) {printf(%s %s %s %s %s\n, 姓名, 性别, 年龄, 电话, 住址);for (int i 0; i con-size; i){printf(%s %s %d %s %s\n,con-arr[i].name,con-arr[i].sex,con-arr[i].age,con-arr[i].number,con-arr[i].address);} } void ContactModify(contact*con) {char name[NAME_MAX];printf(请输入要修改联系人名称\n);scanf(%s, name);int findindex FindNAME(con, name);if (findindex 0){printf(无此联系人\n);return;}else{printf(请输入联系人姓名\n);scanf(%s, con-arr[findindex].name);printf(请输入联系人年龄\n);scanf(%d, con-arr[findindex].age);printf(请输入联系人性别\n);scanf(%s, con-arr[findindex].sex);printf(请输入联系人电话\n);scanf(%s, con-arr[findindex].number);printf(请输入联系人住址\n);scanf(%s, con-arr[findindex].address);printf(修改联系人成功\n);}} void ContactFind(contact* con) {printf(请输入要查找的姓名\n);char name[NAME_MAX];scanf(%s, name);int findindex FindNAME(con, name);if (findindex 0){printf(查无此人\n);return;}else{printf(%s %s %s %s %s\n, 姓名, 性别, 年龄, 电话, 住址);printf(%s %s %d %s %s\n,con-arr[findindex].name,con-arr[findindex].sex,con-arr[findindex].age,con-arr[findindex].number,con-arr[findindex].address);}} void ContactDesTroy(contact* con) {SLDestroy(con); }2Contest.c 主函数将Contact.c里面的函数调用用一个swich来进行多功能的通讯录通过dowhile的特性先运行一次再判断要不要继续符合我们日常玩游戏的逻辑最后不要忘了一定要销毁我们开辟的空间哦。 #define _CRT_SECURE_NO_WARNINGS 1 #include Seqlist.h void menu() {printf(********************通讯录******************\n);printf(*********1.添加联系人 2.删除联系人*******\n);printf(*********3.修改联系人 4.查找联系人*******\n);printf(*********5.查看通讯录 0. 退 出 *******\n);printf(********************************************\n); } int main() {contact con;int op-1;InitContact(con);do{menu();printf(请选择\n);scanf(%d, op);switch (op){case 1://添加联系人AddContact(con);break;case 2:DelContact(con);break;//删除联系人case 3:ContactModify(con);break;//修改联系人case 4:ContactFind(con);break;//查找联系人case 5:ShowContact(con);break;//查看通讯录case 0:printf(退出程序.....\n);return 0;//退 出default:printf(输入错误请重新输入\n);break;//}} while (op!0);ContactDesTroy(con);return 0;} 3SeqList.c 循序表基本运算的实现。 #define _CRT_SECURE_NO_WARNINGS 1 #include Seqlist.h void SLInit(SL* ps) {ps-arr NULL;ps-capacity ps-size 0; } void SLDestroy(SL* ps) {free(ps-arr);ps-capacity ps-size 0;ps NULL; } void SLPrint(SL* ps) {for (int i 0; i ps-size; i){printf(%d , ps-arr[i]);}printf(\n); } void SLCheckCapacity(SL* ps) {if (ps-capacity ps-size){int newcapacity ps-capacity 0 ? 4 : 2 * ps-capacity;ElemType* tmp (ElemType*)realloc(ps-arr, sizeof(ElemType) * newcapacity);if (tmp NULL){perror(realloc fail!);exit(1);}ps-arr tmp;ps-capacity newcapacity;} } void SLPushBack(SL* ps, ElemType x) {assert(ps);SLCheckCapacity(ps);ps-arr[ps-size] x; } void SLInsert(SL* ps, int pos, ElemType x) {assert(ps);assert(pos 0 pos ps-size);SLCheckCapacity(ps);for (int i ps-size; i pos; i--){ps-arr[i] ps-arr[i - 1];}ps-arr[pos] x;ps-size; } void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);for (int i pos; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }易错点 1头文件里面不能再包含头文件及头文件不能嵌套。 2对应使用c语言的库函数一定要将对应的头文件带上如realloc要加上#include stdlib.h不带的话运行就会出错代码一多还很难找到编译器的提示也不是很准确故建议大家一用到上面库函数一定要把头文件马上写上不要等到最后再来会忘掉。 3前置声明因为头文件的引用不能嵌套故要想引用别的头文件的内容可以进行前置声明例如 结语 其实写博客不仅仅是为了教大家同时这也有利于我巩固自己的知识点和一个学习的总结由于作者水平有限对文章有任何问题的还请指出接受大家的批评让我改进如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注这可以激励我写出更加优秀的文章。
http://www.zqtcl.cn/news/336383/

相关文章:

  • 百度搜不到自己的网站python云服务器网站开发实例
  • 给企业做网站的业务员优书网没了
  • 江门网站建设方案外包洛阳网站设计哪家专业
  • 电暖怎么做网站办公室平面设计图
  • 全屏网站 功能丽水市企业网站建设 微信营销 影视拍摄
  • 天天爱天天做视频网站网站推送
  • 制作企业网站与app有什么不同化工企业网站建设
  • 东莞企业推广网站专门做黄漫的网站
  • 温州网站关键词排名优化win10 电脑做网站服务器
  • 网站设计规划信息技术教案营销模式和营销策略
  • 太仓住房城乡建设网站微信怎么注册
  • 德骏网站建设重庆企业网站如何推广
  • 路由器做内部网站服务器石家庄新闻综合频道在线直播回放
  • 怎么给网站备案亚马逊网站建设与维护方法分析
  • 金华网站建设团队产品网络推广方案范文
  • 拼多多刷单网站开发虚拟机可以做两个网站
  • wordpress安装路径和站点地址的设置信通网站开发中心
  • 柳州公司网站建设网站服务商
  • 智能建站实验报告成功营销网站
  • 基于jsp的网站开发开题报告青海公路工程建设市场信用信息服务网站
  • 做网站页面的软件wordpress如何开启page页面评论
  • 做网站最简单的长春财经学院
  • 导购网站 icp备案要求网站设置ico
  • ftp做网站营销策划方案步骤
  • 网站建设若干意见wordpress查看数据库密码
  • 什么网站可以做宣传西安网站建设聚星互联
  • 产品展示网站源码2015年做哪些网站致富
  • 潍坊网站制作推广怎样做彩票网站
  • 做视频网站被判刑自己怎么做企业网站建设
  • 安庆网站建设兼职哪个公司的卡网络最好