中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

wordpress增加網(wǎng)址大全seo優(yōu)化一般多少錢

wordpress增加網(wǎng)址大全,seo優(yōu)化一般多少錢,b2b電子商務網(wǎng)站的模式有哪些,福州建設(shè)公司網(wǎng)站1.實現(xiàn)怎樣一個通訊錄 實現(xiàn)一個通訊錄聯(lián)系人信息:1.可以保存100個人的信息名字2.添加聯(lián)系人年齡3.刪除指定聯(lián)系人性別4.查找指定聯(lián)系人電話5.修改指定聯(lián)系人住址6.排序聯(lián)系人7.顯示所有聯(lián)系人信息 2.通訊錄的實現(xiàn) 2.1創(chuàng)建兩個源文件和一個頭文件 首先我們創(chuàng)建con…

? 1.實現(xiàn)怎樣一個通訊錄

實現(xiàn)一個通訊錄聯(lián)系人信息:
1.可以保存100個人的信息名字
2.添加聯(lián)系人年齡
3.刪除指定聯(lián)系人性別
4.查找指定聯(lián)系人電話
5.修改指定聯(lián)系人住址
6.排序聯(lián)系人
7.顯示所有聯(lián)系人信息

?2.通訊錄的實現(xiàn)

2.1創(chuàng)建兩個源文件和一個頭文件

首先我們創(chuàng)建contact.c和test.c,contact.h,在頭文件中包含了程序所需的各種頭文件并且實現(xiàn)對各種函數(shù)的聲明,而源文件test.c用于引用函數(shù),contact.c實現(xiàn)函數(shù)。這樣做的目的是為了各個文件可以處理各自模塊的功能,增強邏輯性和代碼的清晰度,使得可讀性更高。

?2.2搭建構(gòu)架

1.菜單打印

首先在test.c這個源文件里面把菜單打印出來,直接使用printf函數(shù)打印出通訊錄的功能即可。

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");
}

?2.使用do while

這里相比較之前寫的游戲代碼進行了改進,因為數(shù)字的具體含義不知道,所以使用了枚舉常量代替,而枚舉常量會進行默認賦值,所以從0開始一一對應就行了,增加了代碼的可讀性。

enum Option
{EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT
};
int main()
{int input = 0;Contact con;//通訊錄InitContact(&con);//初始化通訊錄do{menu();printf("請輸入你的選擇:>");scanf("%d", &input);switch (input){case ADD:AddContact(&con);break;case DEL:break;case SEARCH:break;case MODIFY:break;case SHOW:ShowContact(&con);break;case SORT:break;case EXIT:printf("退出通訊錄\n");break;default:printf("選擇錯誤,重新選擇\n");break;}} while (input);return 0;
}

3.使用結(jié)構(gòu)體保存聯(lián)系人的信息

接下來在contact.h里面創(chuàng)建結(jié)構(gòu)體來包含人的信息,如果覺得在使用結(jié)構(gòu)體時每次都要寫成struct PeoInfom比較復雜,可以在struct前面加上typedef,這樣的話使用這個結(jié)構(gòu)體寫PeoInfom就行。如果我們在數(shù)組里面寫上數(shù)字的話,就是常量,以后如果發(fā)生變化,修改起來不夠方便,可以使用#define定義常量。

#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include<stdio.h>
#include<assert.h>
#include<string.h>
#define MAME_MAX 40
#define SEX_MAX 10
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 100
//類型的聲明
typedef struct  PeoInfom
{char name[MAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];
}PeoInfom;

4.將通訊錄初始化

在contact.h里面創(chuàng)建一個結(jié)構(gòu)體,sz記錄的是當前通訊錄中存放的人的信息個數(shù),PeoInfom data是用來存放數(shù)據(jù)。

typedef struct Contact
{PeoInfom data[MAX];//存放數(shù)據(jù)int sz;//記錄的是當前通訊錄中存放的人的信息個數(shù)
}Contact;

在test.c的主函數(shù)里面創(chuàng)建通訊錄contact con,這個通訊錄里面有一個存放數(shù)據(jù)的數(shù)組,還有個聯(lián)系人數(shù)量,現(xiàn)在這個通訊錄沒有數(shù)據(jù)。

Contact con;

結(jié)果調(diào)試以后發(fā)現(xiàn)data和sz都是隨機數(shù),所以先對通訊錄初始化。結(jié)構(gòu)體傳參的時候盡量傳址,傳值的話如果結(jié)構(gòu)體過大會導致性能下降,在test.c中進行傳址。

InitContact(&con);//初始化通訊錄

在contact.h中聲明函數(shù):

void InitContact(Contact* pc);//初始化通訊錄

在contact.c中進行函數(shù)的實現(xiàn),sz直接訪問賦0即可。data是一塊連續(xù)的空間,所以使用memset函數(shù)將數(shù)據(jù)全部變?yōu)?,data單獨放在sizeof內(nèi)部表示這個數(shù)組,第三個參數(shù)直接使用sizeof求出data的大小就行了,單位都是字節(jié)。當然使用循環(huán)也許,但是memset更加方便快捷。

void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;memset(pc->data, 0, sizeof(pc->data));
}

5.添加聯(lián)系人

首先在case語句中寫上添加聯(lián)系人函數(shù)AddContact,然后進行傳址。

		case ADD:AddContact(&con);break;

在contact.h中聲明:

void AddContact(Contact* pc);//增加聯(lián)系人

在contact.c中實現(xiàn):?

首先判斷一下通訊錄空間是否滿了,使用if判斷sz是不是等于MAX。如果沒有滿,則開始輸入信息,先打印提醒信息,在輸入,名字放在通訊錄里面data數(shù)組的下標為pc->sz的位置上,所以是pc->data[pc->sz].name,name是數(shù)組名,數(shù)組名本身是地址,所以不需要使用&。然后模仿名字這樣把各項信息輸入進去,最后sz++,再打印提示信息。

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++;printf("添加聯(lián)系人成功\n");
}

那么我們輸入成功之后是看不見這些信息的,所以需要完成show函數(shù),展示出來。


6.展示通訊錄信息

首先在case語句中寫上添加聯(lián)系人函數(shù)ShowContact,然后進行傳址。

		case SHOW:ShowContact(&con);break;

在contact.c中實現(xiàn):

由于不需要修改數(shù)據(jù),使用const限制一下參數(shù)。

先使用if判斷一下通訊錄是否為空,如果不是再打印信息。

首先我們把各項信息的標題打印出來,確定好間隔。然后開始打印信息,通過找到data數(shù)組的下標找出相應的結(jié)構(gòu)體,然后使用下標訪問操作符找出相對應的信息,打印出來。

void ShowContact(const Contact *pc)
{if(ps->sz == 0){printf("通訊錄為空\n");}else{int i = 0;//標題printf("%-20s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年齡", "性別", "電話", "地址");//數(shù)據(jù)for(i = 0; i < pc->sz; i++){printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].tele,pc->data[i].addr);}}
}


7.刪除指定聯(lián)系人

首先在contact.h聲明:

void DelContact(Contact* pc);//刪除指定聯(lián)系人

在test.c中使用:

		case DEL:DelContact(&con);break;

在contact.c中實現(xiàn):

刪除聯(lián)系人先判斷一下通訊錄是否為空,名字單獨創(chuàng)建一個數(shù)組,然后輸入名字,然后開始在通訊錄查找名字。

寫一個Findbyname的名字查找函數(shù),參數(shù)分別是pc這個通訊錄和name,在通訊錄里面查找sz次,使用strcmp函數(shù)比較,如果等于0,就是找到了這個聯(lián)系人,則返回下標,否則返回-1.

回到刪除函數(shù),如果返回的是-1,則聯(lián)系人不存在。找到了則將返回的下標作為for函數(shù)的i,將i+1這個結(jié)構(gòu)體代替i這個結(jié)構(gòu)體,然后不斷的循環(huán)。如果判斷條件設(shè)置為i<pc->sz的話,訪問到最后一個結(jié)構(gòu)體就會越界,所以是sz-1,并且for循環(huán)走完之后sz--,如果要刪除最后一個結(jié)構(gòu)體的時候。則不會訪問到最后一個結(jié)構(gòu)體,已經(jīng)被刪除了。

int Findbyname(Contact* pc,char name[])
{assert(pc);for (int i = 0; i < pc->sz; i++){if (strcmp(pc->data[i].name, name) == 0){return i;}}return -1;
}void DelContact(Contact* pc)
{char name[NAME_MAX];assert(pc);if (pc->sz == 0){printf("通訊錄為空\n");}printf("請輸入要刪除的聯(lián)系人:");scanf("%s", name);int ret = Findbyname(pc, name);if (ret == -1){printf("要刪除的人不存在\n");return;}else {for (int i = ret; i < pc->sz - 1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("刪除成功\n");}
}

8.查找聯(lián)系人?

在test.c中使用:

		case SEARCH:SearchContact(&con);break;

在contact.h中聲明:

void SearchContact(const Contact* pc);//查找聯(lián)系人

在contact.c中實現(xiàn):

這里其實是使用到了Findbyname這個函數(shù)和展示函數(shù),需要注意的是要把下標換成ret。

void SearchContact(const Contact* pc)
{char name[NAME_MAX];assert(pc);printf("請輸入聯(lián)系人:");scanf("%s", name);int ret = Findbyname(pc, name);if (ret == -1){printf("要查找的人不存在\n");return;}else{//標題printf("%-20s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年齡", "性別", "電話", "地址");//數(shù)據(jù)printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",pc->data[ret].name,pc->data[ret].age,pc->data[ret].sex,pc->data[ret].tele,pc->data[ret].addr);}
}


9.修改聯(lián)系人

在contact.h里面聲明:

void ModifyContact(Contact* pc);//修改聯(lián)系人信息

在test.c中使用:?

		case MODIFY:ModifyContact(&con);break;

在contact.c中實現(xiàn):

修改函數(shù)使用Findbyname函數(shù)后直接用添加聯(lián)系人的方法就可以了,需要注意的是把下標改成ret。

void ModifyContact(Contact* pc)
{char name[NAME_MAX];assert(pc);printf("請輸入聯(lián)系人:");scanf("%s", name);int ret = Findbyname(pc, name);if (ret == -1){printf("要修改的人不存在\n");return;}printf("請輸入名字:");scanf("%s", pc->data[ret].name);printf("請輸入年齡:");scanf("%d", &(pc->data[ret].age));printf("請輸入性別:");scanf("%s", pc->data[ret].sex);printf("請輸入電話:");scanf("%s", pc->data[ret].tele);printf("請輸入地址:");scanf("%s", pc->data[ret].addr);printf("修改聯(lián)系人成功\n");
}


?10.排序聯(lián)系人

在test.c中使用:?

		case SORT:SortContact(&con);break;

在contact.h里面聲明:

void SortContact(Contact* pc);//排序聯(lián)系人

在contact.c中實現(xiàn):

這里使用一個qsort進行排序即可,比較函數(shù)使用strcmp。

int cmp_name(const void* e1, const void* e2)
{return (strcmp(((Contact*)e1)->data->name, ((Contact*)e2)->data->name));
}
//聯(lián)系人排序
void SortContact(Contact* pc)
{assert(pc);qsort(pc->data, pc->sz, sizeof(pc->data[0]), cmp_name);//打印printf("排序完成\n");ShowContact(pc);
}

完整代碼:

contact.h:

#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include<stdio.h>
#include<assert.h>
#include<string.h>
#define NAME_MAX 40
#define SEX_MAX 10
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 100
//類型的聲明
typedef struct  PeoInfom
{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];
}PeoInfom;typedef struct Contact
{PeoInfom data[MAX];//存放數(shù)據(jù)int sz;//記錄的是當前通訊錄中存放的人的信息個數(shù)
}Contact;void InitContact(Contact* pc);//初始化通訊錄void AddContact(Contact* pc);//增加聯(lián)系人void ShowContact(const Contact* pc);//展示通訊錄信息void DelContact(Contact* pc);//刪除指定聯(lián)系人void SearchContact(const Contact* pc);//查找聯(lián)系人void ModifyContact(Contact* pc);//修改聯(lián)系人信息void SortContact(Contact* pc);//排序聯(lián)系人

contact.c:

#include"contact.h"
void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;memset(pc->data, 0, sizeof(pc->data));
}
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++;printf("添加聯(lián)系人成功\n");
}
void ShowContact(const Contact* pc)
{assert(pc);if (pc->sz == 0){printf("通訊錄為空\n");}else{int i = 0;//標題printf("%-20s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年齡", "性別", "電話", "地址");//數(shù)據(jù)for (i = 0; i < pc->sz; i++){printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].tele,pc->data[i].addr);}}
}
int Findbyname(Contact* pc,char name[])
{assert(pc);for (int i = 0; i < pc->sz; i++){if (strcmp(pc->data[i].name, name) == 0){return i;}}return -1;
}
void DelContact(Contact* pc)
{char name[NAME_MAX];assert(pc);if (pc->sz == 0){printf("通訊錄為空\n");}printf("請輸入要刪除的聯(lián)系人:");scanf("%s", name);int ret = Findbyname(pc, name);if (ret == -1){printf("要刪除的人不存在\n");return;}else {for (int i = ret; i < pc->sz - 1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("刪除成功\n");}
}
void SearchContact(const Contact* pc)
{char name[NAME_MAX];assert(pc);printf("請輸入聯(lián)系人:");scanf("%s", name);int ret = Findbyname(pc, name);if (ret == -1){printf("要查找的人不存在\n");return;}else{//標題printf("%-20s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年齡", "性別", "電話", "地址");//數(shù)據(jù)printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",pc->data[ret].name,pc->data[ret].age,pc->data[ret].sex,pc->data[ret].tele,pc->data[ret].addr);}
}
void ModifyContact(Contact* pc)
{char name[NAME_MAX];assert(pc);printf("請輸入聯(lián)系人:");scanf("%s", name);int ret = Findbyname(pc, name);if (ret == -1){printf("要修改的人不存在\n");return;}printf("請輸入名字:");scanf("%s", pc->data[ret].name);printf("請輸入年齡:");scanf("%d", &(pc->data[ret].age));printf("請輸入性別:");scanf("%s", pc->data[ret].sex);printf("請輸入電話:");scanf("%s", pc->data[ret].tele);printf("請輸入地址:");scanf("%s", pc->data[ret].addr);printf("修改聯(lián)系人成功\n");
}int cmp_name(const void* e1, const void* e2)
{return (strcmp(((Contact*)e1)->data->name, ((Contact*)e2)->data->name));
}
//聯(lián)系人排序
void SortContact(Contact* pc)
{assert(pc);qsort(pc->data, pc->sz, sizeof(pc->data[0]), cmp_name);//打印printf("排序完成\n");ShowContact(pc);
}

test.c:

#include"contact.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");
}
enum Option
{EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT
};
int main()
{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:SortContact(&con);break;case EXIT:printf("退出通訊錄\n");break;default:printf("選擇錯誤,重新選擇\n");break;}} while (input);return 0;
}

今天的分享到這里就結(jié)束啦!謝謝老鐵們的閱讀,讓我們下期再見。

http://www.risenshineclean.com/news/53012.html

相關(guān)文章:

  • 哪些網(wǎng)站做外鏈好搜索引擎營銷的特點是什么
  • 如何用wd做網(wǎng)站設(shè)計百度競價代運營
  • 個人做的網(wǎng)站可以收款百度一下你就知道手機版官網(wǎng)
  • 一般購物網(wǎng)站怎么做推廣熱點時事新聞
  • 做視頻網(wǎng)站需要什么手續(xù)品牌推廣公司
  • 個人 可以做網(wǎng)站備案嗎seo超級外鏈
  • 西安短視頻代運營廣東seo推廣哪里好
  • kooboo wordpress 對比哈爾濱優(yōu)化調(diào)整人員流動管理
  • 自己做的網(wǎng)站如何讓別人訪問深圳網(wǎng)站優(yōu)化網(wǎng)站
  • 做網(wǎng)站找景安免費企業(yè)建站
  • 手機如何自制網(wǎng)站做一個app軟件大概要多少錢
  • 如何設(shè)置網(wǎng)站服務器訪問權(quán)限找客源免費用哪個軟件好
  • 深圳十大網(wǎng)站建設(shè)全球中文網(wǎng)站排名
  • 做箱包批發(fā)哪個網(wǎng)站好北京疫情最新消息情況
  • 網(wǎng)站建設(shè)管理辦法全球搜鉆是什么公司
  • php網(wǎng)站開發(fā)總結(jié)環(huán)球軍事新聞最新消息
  • 手機網(wǎng)站可以做百度商橋嗎站長統(tǒng)計app軟件下載
  • 小型教育網(wǎng)站開發(fā)與設(shè)計品牌推廣的步驟和技巧
  • 嘉興公司的網(wǎng)站設(shè)計鄭州關(guān)鍵詞優(yōu)化顧問
  • 品牌網(wǎng)站建設(shè)收費情況廣州 競價托管
  • 怎么做潮牌網(wǎng)站電商網(wǎng)站排名
  • 河南省住房和城鄉(xiāng)建設(shè)廳官方網(wǎng)站上海培訓機構(gòu)白名單
  • 平湖網(wǎng)站建設(shè)公司克河北網(wǎng)站seo地址
  • wordpress設(shè)置網(wǎng)址錯視頻seo優(yōu)化教程
  • 南京網(wǎng)站建設(shè)推南京網(wǎng)站建設(shè)設(shè)計山東16市最新疫情
  • 網(wǎng)站開發(fā)和嵌入式開發(fā)哪個泉州網(wǎng)站seo外包公司
  • 茶葉淘寶店網(wǎng)站建設(shè)ppt朝陽網(wǎng)絡推廣
  • 低價網(wǎng)站建設(shè)方案seo查詢工具有哪些
  • 網(wǎng)站頁面尺寸百度建一個網(wǎng)站多少錢
  • 做網(wǎng)站用ssm還是ssh不錯寧波seo公司