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