欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言使用結(jié)構(gòu)體實(shí)現(xiàn)簡(jiǎn)單通訊錄

 更新時(shí)間:2018年02月15日 09:47:57   作者:玩的就是滄桑  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言使用結(jié)構(gòu)體實(shí)現(xiàn)簡(jiǎn)單通訊錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

C語(yǔ)言用結(jié)構(gòu)體實(shí)現(xiàn)一個(gè)通訊錄,通訊錄可以用來(lái)存儲(chǔ)1000個(gè)人的信息,每個(gè)人的信息包括:

姓名、性別、年齡、電話、住址

提供方法:

1. 添加聯(lián)系人信息
2. 刪除指定聯(lián)系人信息
3. 查找指定聯(lián)系人信息
4. 修改指定聯(lián)系人信息
5. 顯示所有聯(lián)系人信息
6. 清空所有聯(lián)系人

代碼實(shí)現(xiàn):

頭文件:

#ifndef __HEAD_H__     ////防止頭文件被多次調(diào)用 
#define __HEAD_H__          
 
#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
 
 
#define PEOPLE_MAX 1000 
#define NAME_LENTH 20 
#define SEX_LENTH 5 
#define AGE_LENTH 10 
#define TEL_LENTH 15 
#define ADDR_LENTH 50 //宏定義各個(gè)數(shù)據(jù)所需的大小,后續(xù)引用直接可以使用名稱(chēng),或需修改時(shí)只用修改這里就可以了 
 
struct People 
{ 
  char name[NAME_LENTH]; 
  char sex[SEX_LENTH]; 
  int age; 
  char tel[TEL_LENTH ]; 
  char addr[ADDR_LENTH]; 
};     //定義人的信息結(jié)構(gòu)體(包含各種信息) 
 
struct Contact 
{ 
  struct People person[PEOPLE_MAX]; 
  int user_count; 
};   //定義通訊錄結(jié)構(gòu)體(包含人的信息的結(jié)構(gòu)體和用戶個(gè)數(shù)) 
 
typedef struct Contact * pContact; 
 
int add_contact(pContact pcon); //pContact是一個(gè)結(jié)構(gòu)體指針類(lèi)型,pcon是一個(gè)指向struct Contact的一個(gè)指針 
int dele_contact(pContact pcon); //例如:typedef int * int 即 int *p ==> int p 
int find_contact(pContact pcon); 
int modify_contact(pContact pcon); 
int show_contact(pContact pcon); 
int clear_contact(pContact pcon); 
void menu();    //函數(shù)的聲明 
 
#endif 

各種函數(shù)實(shí)現(xiàn):

#include"head.h"     
 
 
int add_contact(pContact pcon) 
{ 
  if(pcon->user_count >= PEOPLE_MAX) 
  { 
    printf("contact is full!\n"); 
    return -1; 
  } 
  else 
  { 
    printf("input name,please!\n"); 
    scanf("%s",pcon->person[pcon->user_count].name); 
    printf("input sex,please!\n"); 
    scanf("%s",pcon->person[pcon->user_count].sex); 
    printf("input age,please!\n"); 
    scanf("%d",&pcon->person[pcon->user_count].age); //這里用%d輸出int 
    printf("input tel,please!\n"); 
    scanf("%s",pcon->person[pcon->user_count].tel); 
    printf("input addr,please!\n"); 
    scanf("%s",pcon->person[pcon->user_count].addr); 
    (pcon->user_count)++; 
  } 
  return 0; 
}           //添加信息的實(shí)現(xiàn) 
 
 
int dele_contact(pContact pcon) 
{ 
  int ret = find_contact(pcon);  //調(diào)用查找函數(shù)并保存其值 
  if(ret != -1) 
  { 
    int i = 0; 
    i = ret;  //這里要用另一個(gè)變量來(lái)保存輸入的姓名 
    for(i = 0;i < pcon->user_count-1;i++) 
    { 
      pcon->person[i] = pcon->person[i+1]; //用后一個(gè)覆蓋前邊的,如果要?jiǎng)h除的是最后一個(gè)不進(jìn)行此步驟 
       
    } 
    pcon->user_count --; //直接減去最后一個(gè)即count-- 
  } 
  return 0;   
} 
 
int find_contact(pContact pcon) 
{ 
  int i = 0; 
  char ret[NAME_LENTH]; //用另一個(gè)數(shù)組來(lái)保存name 
  printf("input name,please!\n"); 
  scanf("%s",ret); 
  while(i <= pcon->user_count) 
  { 
    if(strcmp(ret,pcon->person[i].name)== 0) //比較輸入的姓名和通訊錄中已有的姓名 
    { 
      printf("name\tsex\tage\ttel\taddr\t\n"); 
      printf("%s\t",pcon->person[i].name); 
      printf("%s\t",pcon->person[i].sex); 
      printf("%d\t",pcon->person[i].age); 
      printf("%s\t",pcon->person[i].tel); 
      printf("%s\t\n",pcon->person[i].addr);   
      return i; 
    } 
    i++; 
  } 
  printf("sorry,the name you find is not exist!\n"); 
  return -1; 
} 
 
int modify_contact(pContact pcon)  //修改函數(shù),首先找到如要修改的姓名,然后重新輸入 
{ 
  int ret = find_contact(pcon); 
  if(ret != -1) 
  { 
    printf("input name,please!\n"); 
    scanf("%s",pcon->person[ret].name); 
    printf("input sex,please!\n"); 
    scanf("%s",pcon->person[ret].sex); 
    printf("input age,please!\n"); 
    scanf("%d",&(pcon->person[ret].age)); 
    printf("input tel,please!\n"); 
    scanf("%s",pcon->person[ret].tel); 
    printf("input addr,please!\n"); 
    scanf("%s",pcon->person[ret].addr); 
  } 
  else 
  { 
    printf("sorry,the name you find is not exist!\n"); 
  } 
  return 0; 
} 
 
int show_contact(pContact pcon) 
{ 
  int i = 0; 
  printf("name\tsex\tage\ttel\t\taddr\t\n"); //制表符來(lái)制作表頭 
  for(i = 0;i < pcon->user_count;i++) 
  { 
    printf("%s\t",pcon->person[i].name); 
    printf("%s\t",pcon->person[i].sex); 
    printf("%d\t",pcon->person[i].age); 
    printf("%s\t",pcon->person[i].tel); 
    printf("%s\t\n",pcon->person[i].addr); 
  } 
  printf("\n"); 
  return 0; 
} 
 
int clear_contact(pContact pcon) 
{ 
  pcon->user_count = 0 ; 
  return 0; 
}      //清除所有人,直接讓成員個(gè)數(shù)變?yōu)?即可 
 
void menu() 
{ 
  printf("-------contact---------\n"); 
  printf(" 1.添加聯(lián)系人信息   \n"); 
  printf(" 2.刪除指定聯(lián)系人信息 \n"); 
  printf(" 3.查找指定聯(lián)系人信息 \n"); 
  printf(" 4.修改指定聯(lián)系人信息 \n"); 
  printf(" 5.顯示所有聯(lián)系人信息 \n"); 
  printf(" 6.清空所有聯(lián)系人   \n"); 
  printf(" 0.謝謝使用      \n"); 
  printf("-------contact---------\n"); 
} 

主函數(shù):

#include"head.h" 
 
int main() 
{   
  int n=1; 
  struct Contact people;   //調(diào)用通訊錄結(jié)構(gòu)體 
  people.user_count = 0;   //初始化user_count 
  while(n) 
  { 
    menu(); 
    printf("please input\n"); 
    scanf("%d",&n); 
    switch(n) 
    { 
      case 1: 
      { 
        add_contact(&people); 
        break; 
      } 
      case 2: 
      { 
        dele_contact(&people); 
        break; 
      } 
      case 3: 
      { 
        find_contact(&people); 
        break; 
      }   
      case 4: 
      { 
        modify_contact(&people); 
        break; 
      } 
      case 5: 
      { 
        show_contact(&people); 
        break; 
      } 
      case 6: 
      { 
        clear_contact(&people); 
        break; 
      } 
      default: 
      { 
        return 0; 
        break; 
      } //switch case語(yǔ)句分支選擇不同函數(shù)實(shí)現(xiàn)不同作用 
    } 
  } 
  return 0; 
} 

結(jié)果實(shí)現(xiàn):

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++二叉樹(shù)的直徑與合并詳解

    C++二叉樹(shù)的直徑與合并詳解

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)二叉樹(shù)基本操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來(lái)幫助
    2021-08-08
  • 解讀C++編程的相關(guān)文件操作

    解讀C++編程的相關(guān)文件操作

    這篇文章主要介紹了解讀C++編程的相關(guān)文件操作,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++實(shí)現(xiàn)在文本中找出某個(gè)單詞的位置信息

    C++實(shí)現(xiàn)在文本中找出某個(gè)單詞的位置信息

    本文給大家分享的是使用C++實(shí)現(xiàn)在文本中找出某個(gè)單詞的位置信息,就是給出此單詞所在的行和列,有需要的小伙伴可以參考下。
    2016-02-02
  • C++實(shí)現(xiàn)棧與分析棧的知識(shí)點(diǎn)

    C++實(shí)現(xiàn)棧與分析棧的知識(shí)點(diǎn)

    這篇文章主要介紹了C++實(shí)現(xiàn)棧與分析棧的知識(shí)點(diǎn),棧(stack)是計(jì)算機(jī)中常用的一種線性數(shù)據(jù)結(jié)構(gòu),經(jīng)常有資料使用“操作受限”來(lái)形容棧,因?yàn)樗膲喝霔:蛷棾鰲2僮髦荒茉跅m斶M(jìn)行,下文更多相關(guān)資料,需要的小伙伴可以參考一下
    2022-03-03
  • Qt使用隨機(jī)驗(yàn)證碼的實(shí)現(xiàn)示例

    Qt使用隨機(jī)驗(yàn)證碼的實(shí)現(xiàn)示例

    有時(shí)候在登錄界面需要驗(yàn)證碼功能,這樣能夠防止被惡意程序攻擊,本文主要介紹了Qt使用隨機(jī)驗(yàn)證碼的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C語(yǔ)言編寫(xiě)猜數(shù)游戲

    C語(yǔ)言編寫(xiě)猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言編寫(xiě)猜數(shù)游戲,可以自定義猜數(shù)范圍和機(jī)會(huì)次數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++實(shí)現(xiàn)LeetCode(164.求最大間距)

    C++實(shí)現(xiàn)LeetCode(164.求最大間距)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(164.求最大間距),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)LeetCode(35.搜索插入位置)

    C++實(shí)現(xiàn)LeetCode(35.搜索插入位置)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(35.搜索插入位置),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆排序詳解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆排序詳解

    堆是計(jì)算機(jī)科學(xué)中一類(lèi)特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱(chēng),通常是一個(gè)可以被看做一棵完全二叉樹(shù)的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將通過(guò)圖片詳細(xì)介紹堆排序,需要的可以參考一下
    2022-03-03
  • c++中拷貝構(gòu)造函數(shù)的參數(shù)類(lèi)型必須是引用

    c++中拷貝構(gòu)造函數(shù)的參數(shù)類(lèi)型必須是引用

    如果拷貝構(gòu)造函數(shù)中的參數(shù)不是一個(gè)引用,即形如CClass(const CClass c_class),那么就相當(dāng)于采用了傳值的方式(pass-by-value),而傳值的方式會(huì)調(diào)用該類(lèi)的拷貝構(gòu)造函數(shù),從而造成無(wú)窮遞歸地調(diào)用拷貝構(gòu)造函數(shù)。因此拷貝構(gòu)造函數(shù)的參數(shù)必須是一個(gè)引用
    2013-07-07

最新評(píng)論