C语言编程题实现一个简易的电话簿

C语言中,编程题实现一个简易的电话簿可以使用结构体来存储联系人的信息,如姓名、电话号码等。实现一个简单的菜单系统,允许用户添加、查看和删除联系人。

1、定义结构体

定义来存储联系人的信息,如姓名、电话号码等的结构体。

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15

// 定义联系人结构体
typedef struct {
    char name[NAME_LENGTH];
    char phone[PHONE_LENGTH];
} Contact;

// 定义电话簿结构体
typedef struct {
    Contact contacts[MAX_CONTACTS];
    int size;
} PhoneBook;

int main() {
  printf("Hello, World!");
  return 0;
}

2、添加联系人

实现一个函数,将新联系人的信息添加到存储结构中。

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15

// 定义联系人结构体
typedef struct {
    char name[NAME_LENGTH];
    char phone[PHONE_LENGTH];
} Contact;

// 定义电话簿结构体
typedef struct {
    Contact contacts[MAX_CONTACTS];
    int size;
} PhoneBook;

// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
    phoneBook->size = 0;
}

// 添加联系人
void addContact(PhoneBook *phoneBook, const char *name, const char *phone) {
    if (phoneBook->size < MAX_CONTACTS) {
        strcpy(phoneBook->contacts[phoneBook->size].name, name);
        strcpy(phoneBook->contacts[phoneBook->size].phone, phone);
        phoneBook->size++;
        printf("联系人添加成功!\n");
    } else {
        printf("电话簿已满,无法添加更多联系人。\n");
    }
}


int main() {
  printf("Hello, World!");
  return 0;
}

3、显示所有联系人

遍历存储的联系人信息,将每个联系人的信息输出到屏幕上。

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15

// 定义联系人结构体
typedef struct {
    char name[NAME_LENGTH];
    char phone[PHONE_LENGTH];
} Contact;

// 定义电话簿结构体
typedef struct {
    Contact contacts[MAX_CONTACTS];
    int size;
} PhoneBook;

// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
    phoneBook->size = 0;
}

// 显示所有联系人
void displayContacts(const PhoneBook *phoneBook) {
    if (phoneBook->size == 0) {
        printf("电话簿为空。\n");
    } else {
        printf("电话簿中的联系人:\n");
        for (int i = 0; i < phoneBook->size; i++) {
            printf("联系人 %d: 姓名: %s, 电话: %s\n", i + 1, phoneBook->contacts[i].name, phoneBook->contacts[i].phone);
        }
    }
}

int main() {
  printf("Hello, World!");
  return 0;
}

4、删除联系人

删除联系人时,需要找到目标联系人,然后将其从数据结构中移除。

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15

// 定义联系人结构体
typedef struct {
    char name[NAME_LENGTH];
    char phone[PHONE_LENGTH];
} Contact;

// 定义电话簿结构体
typedef struct {
    Contact contacts[MAX_CONTACTS];
    int size;
} PhoneBook;

// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
    phoneBook->size = 0;
}

// 删除联系人
void deleteContact(PhoneBook *phoneBook, const char *name) {
    int found = 0;
    for (int i = 0; i < phoneBook->size; i++) {
        if (strcmp(phoneBook->contacts[i].name, name) == 0) {
            found = 1;
            for (int j = i; j < phoneBook->size - 1; j++) {
                phoneBook->contacts[j] = phoneBook->contacts[j + 1];
            }
            phoneBook->size--;
            printf("联系人已删除。\n");
            break;
        }
    }
    if (!found) {
        printf("未找到联系人。\n");
    }
}

int main() {
  printf("Hello, World!");
  return 0;
}

5、完整代码

一个简单的电话簿实现,可以根据自己的需求进行扩展和完善。

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100
#define NAME_LENGTH 50
#define PHONE_LENGTH 15

// 定义联系人结构体
typedef struct {
    char name[NAME_LENGTH];
    char phone[PHONE_LENGTH];
} Contact;

// 定义电话簿结构体
typedef struct {
    Contact contacts[MAX_CONTACTS];
    int size;
} PhoneBook;

// 初始化电话簿
void initPhoneBook(PhoneBook *phoneBook) {
    phoneBook->size = 0;
}

// 添加联系人
void addContact(PhoneBook *phoneBook, const char *name, const char *phone) {
    if (phoneBook->size < MAX_CONTACTS) {
        strcpy(phoneBook->contacts[phoneBook->size].name, name);
        strcpy(phoneBook->contacts[phoneBook->size].phone, phone);
        phoneBook->size++;
        printf("联系人添加成功!\n");
    } else {
        printf("电话簿已满,无法添加更多联系人。\n");
    }
}

// 显示所有联系人
void displayContacts(const PhoneBook *phoneBook) {
    if (phoneBook->size == 0) {
        printf("电话簿为空。\n");
    } else {
        printf("电话簿中的联系人:\n");
        for (int i = 0; i < phoneBook->size; i++) {
            printf("联系人 %d: 姓名: %s, 电话: %s\n", i + 1, phoneBook->contacts[i].name, phoneBook->contacts[i].phone);
        }
    }
}

// 删除联系人
void deleteContact(PhoneBook *phoneBook, const char *name) {
    int found = 0;
    for (int i = 0; i < phoneBook->size; i++) {
        if (strcmp(phoneBook->contacts[i].name, name) == 0) {
            found = 1;
            for (int j = i; j < phoneBook->size - 1; j++) {
                phoneBook->contacts[j] = phoneBook->contacts[j + 1];
            }
            phoneBook->size--;
            printf("联系人已删除。\n");
            break;
        }
    }
    if (!found) {
        printf("未找到联系人。\n");
    }
}

int main() {
    PhoneBook phoneBook;
    initPhoneBook(&phoneBook);

    int choice;
    char name[NAME_LENGTH];
    char phone[PHONE_LENGTH];

    do {
        printf("\n简易电话簿菜单:\n");
        printf("1. 添加联系人\n");
        printf("2. 查看联系人\n");
        printf("3. 删除联系人\n");
        printf("4. 退出\n");
        printf("请选择操作: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                printf("请输入联系人姓名: ");
                scanf("%s", name);
                printf("请输入联系人电话: ");
                scanf("%s", phone);
                addContact(&phoneBook, name, phone);
                break;
            case 2:
                displayContacts(&phoneBook);
                break;
            case 3:
                printf("请输入要删除的联系人姓名: ");
                scanf("%s", name);
                deleteContact(&phoneBook, name);
                break;
            case 4:
                printf("退出程序。\n");
                break;
            default:
                printf("无效选项,请重新选择。\n");
        }
    } while (choice != 4);

    return 0;
}

推荐阅读
cjavapy编程之路首页