这个程序假设每个联系人都有一个名字和一个电话号码。联系人信息存储在动态分配的数组中。为了简单起见,我们没有使用数据库或文件来持久存储联系人信息。在实际应用中,您可能需要使用更复杂的数据结构或数据库来存储和管理联系人信息。

这个程序没有进行错误处理,例如检查输入的有效性或处理内存分配失败的情况,在实际使用中,您需要添加适当的错误处理代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100 // 最大联系人数量
#define NAME_LENGTH 50 // 名字的最大长度
#define PHONE_LENGTH 20 // 电话号码的最大长度
typedef struct {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
} Contact;
Contact contacts[MAX_CONTACTS]; // 存储联系人信息的数组
int contactCount = 0; // 当前联系人数量
void addContact() {
if (contactCount >= MAX_CONTACTS) {
printf("电话簿已满,无法添加更多联系人,n");
return;
}
Contact newContact;
printf("请输入联系人的名字: ");
scanf("%s", newContact.name);
printf("请输入联系人的电话号码: ");
scanf("%s", newContact.phone);
contacts[contactCount++] = newContact;
printf("联系人已添加,n");
}
void deleteContact() {
char name[NAME_LENGTH];
printf("请输入要删除的联系人的名字: ");
scanf("%s", name);
for (int i = 0; i < contactCount; i++) {
if (strcmp(contacts[i].name, name) == 0) {
for (int j = i; j < contactCount - 1; j++) {
contacts[j] = contacts[j + 1]; // 将后面的联系人信息向前移动一位以覆盖删除的联系人信息
}
contactCount--; // 更新联系人数量
printf("联系人已删除,n");
return; // 找到并删除联系人后退出函数
}
}
printf("未找到该联系人,n");
}
void findContact() {
char name[NAME_LENGTH];
printf("请输入要查找的联系人的名字: ");
scanf("%s", name);
for (int i = 0; i < contactCount; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("找到联系人: 姓名=%s, 电话=%sn", contacts[i].name, contacts[i].phone);
return; // 找到联系人后退出函数
}
}
printf("未找到该联系人,n");
}
int main() {
int choice; // 用户的选择(添加、查找或删除联系人)
while (1) { // 主循环,直到用户选择退出程序为止
printf("n电话簿管理系统n");
printf("1. 添加联系人n");
printf("2. 查找联系人n");
printf("3. 删除联系人n");
printf("4. 退出程序n");
printf("请选择操作: ");
scanf("%d", &choice); // 获取用户的选择(添加、查找或删除联系人)并调用相应的函数执行操作,注意:这里没有进行错误处理(例如检查用户输入的是否是一个有效的选项),在实际使用中,您需要添加适当的错误处理代码。"); switch (choice) { case 1: addContact(); break; case 2: findContact(); break; case 3: deleteContact(); break; case 4: printf("程序已退出,n"); return 0; // 用户选择退出程序,结束主循环 default: printf("无效的选项,n"); break; } } return 0; } ```







