利用c语言完成以下练习 (1) 建立通讯录 (2) 增加联系人 (3) 删除某位联系人 (4) 查找某位联系人 (5) 显示通讯录的内容
时间: 2024-09-07 13:05:19 浏览: 27
使用C语言完成通讯录管理系统涉及基本的数据结构和文件操作知识。下面是一个简化的示例,展示了如何实现这些功能的基本逻辑:
首先,需要定义联系人的结构体:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_PHONE_LENGTH 15
typedef struct {
char name[MAX_NAME_LENGTH];
char phone[MAX_PHONE_LENGTH];
} Contact;
```
接下来,实现增加联系人的功能:
```c
void addContact(Contact *contacts, int *numContacts) {
if (*numContacts >= MAX_CONTACTS) {
printf("通讯录已满,无法添加新的联系人。\n");
return;
}
printf("输入联系人姓名: ");
scanf("%49s", contacts[*numContacts].name);
printf("输入联系人电话: ");
scanf("%14s", contacts[*numContacts].phone);
(*numContacts)++;
}
```
实现删除联系人的功能:
```c
void deleteContact(Contact *contacts, int *numContacts, const char *name) {
int i;
for (i = 0; i < *numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
for (int j = i; j < *numContacts - 1; j++) {
contacts[j] = contacts[j + 1];
}
(*numContacts)--;
printf("联系人 '%s' 已被删除。\n", name);
return;
}
}
printf("未找到联系人 '%s'。\n", name);
}
```
实现查找联系人的功能:
```c
void findContact(const Contact *contacts, int numContacts, const char *name) {
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("姓名: %s\n", contacts[i].name);
printf("电话: %s\n", contacts[i].phone);
return;
}
}
printf("未找到联系人 '%s'。\n", name);
}
```
显示通讯录内容的功能:
```c
void displayContacts(const Contact *contacts, int numContacts) {
if (numContacts == 0) {
printf("通讯录为空。\n");
return;
}
for (int i = 0; i < numContacts; i++) {
printf("姓名: %s\n", contacts[i].name);
printf("电话: %s\n", contacts[i].phone);
}
}
```
最后,可以实现一个简单的交互式菜单来驱动整个通讯录程序:
```c
int main() {
Contact contacts[MAX_CONTACTS];
int numContacts = 0;
int choice;
do {
printf("\n通讯录管理系统\n");
printf("1. 增加联系人\n");
printf("2. 删除联系人\n");
printf("3. 查找联系人\n");
printf("4. 显示所有联系人\n");
printf("5. 退出\n");
printf("请输入你的选择: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact(contacts, &numContacts);
break;
case 2:
{
char name[MAX_NAME_LENGTH];
printf("输入要删除的联系人姓名: ");
scanf("%49s", name);
deleteContact(contacts, &numContacts, name);
}
break;
case 3:
{
char name[MAX_NAME_LENGTH];
printf("输入要查找的联系人姓名: ");
scanf("%49s", name);
findContact(contacts, numContacts, name);
}
break;
case 4:
displayContacts(contacts, numContacts);
break;
case 5:
printf("退出程序。\n");
break;
default:
printf("无效的选择,请重新输入。\n");
}
} while (choice != 5);
return 0;
}
```
请注意,上述代码仅用于演示,实际应用中还需要考虑很多其他因素,例如错误处理、动态内存分配等。此外,上述代码中的`MAX_CONTACTS`是通讯录中可以存储联系人的最大数量,需要根据实际需要进行定义。
阅读全文