用c语言,设计一个通信录,设定包含姓名和电话号码两个成员的结构体类型,存储通信信息,以“#”结束输入,并且可对输入的数据进行查找(按姓名或电话号码)。
时间: 2023-05-21 14:04:35 浏览: 451
通信录”的形式展现出来。
要设计一个通信录,需要先定义一个结构体类型,包含姓名和电话号码两个成员:
```c
struct contact {
char name[20];
char phone[15];
};
```
接着,需要定义一个数组,用于存储多个联系人的信息:
```c
#define MAX_CONTACTS 100
struct contact contacts[MAX_CONTACTS];
int num_contacts = 0;
```
然后,需要实现几个函数,用于添加联系人、删除联系人、查找联系人和展示通信录:
```c
void add_contact() {
if (num_contacts == MAX_CONTACTS) {
printf("通信录已满,无法添加联系人。\n");
return;
}
struct contact c;
printf("请输入联系人姓名:");
scanf("%s", c.name);
printf("请输入联系人电话号码:");
scanf("%s", c.phone);
contacts[num_contacts++] = c;
printf("联系人已添加。\n");
}
void delete_contact() {
char name[20];
int i, found = 0;
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
for (i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
found = 1;
break;
}
}
if (found) {
for (; i < num_contacts - 1; i++) {
contacts[i] = contacts[i + 1];
}
num_contacts--;
printf("联系人已删除。\n");
} else {
printf("未找到该联系人。\n");
}
}
void find_contact() {
char name[20];
int i, found = 0;
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
for (i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("姓名:%s,电话:%s\n", contacts[i].name, contacts[i].phone);
found = 1;
}
}
if (!found) {
printf("未找到该联系人。\n");
}
}
void show_contacts() {
int i;
printf("当前通信录中共有 %d 个联系人:\n", num_contacts);
for (i = 0; i < num_contacts; i++) {
printf("%d. 姓名:%s,电话:%s\n", i + 1, contacts[i].name, contacts[i].phone);
}
}
```
最后,需要实现一个主函数,用于调用这些函数:
```c
int main() {
int choice;
while (1) {
printf("请选择要执行的操作:\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 查找联系人\n");
printf("4. 展示通信录\n");
printf("5. 退出程序\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
delete_contact();
break;
case 3:
find_contact();
break;
case 4:
show_contacts();
break;
case 5:
return 0;
default:
printf("无效选项,请重新输入。\n");
}
}
}
```
这样,一个简单的通信录就完成了。用户可以在程序中添加、删除、查找和展示多个联系人的信息,方便管理和使用。
阅读全文