利用结构体实现手机里的“联系人”的功能,要求能存储并能通过姓名或电话查找某个人的详细信息。
时间: 2023-08-31 12:31:37 浏览: 90
用结构体数组实现通讯录管理
5星 · 资源好评率100%
### 回答1:
可以定义一个包含姓名、电话等信息的结构体,然后使用数组或链表来存储多个联系人的信息。实现过程中可以定义多个函数,比如添加联系人、删除联系人、查找联系人等。
以下是一个用数组存储联系人信息的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100
struct Contact {
char name[30];
char phone[20];
};
struct Contact contacts[MAX_CONTACTS];
int numContacts = 0;
void addContact(const char *name, const char *phone) {
if (numContacts >= MAX_CONTACTS) {
printf("Error: the contacts list is full!\n");
return;
}
strcpy(contacts[numContacts].name, name);
strcpy(contacts[numContacts].phone, phone);
numContacts++;
}
void removeContact(int index) {
if (index < 0 || index >= numContacts) {
printf("Error: invalid contact index!\n");
return;
}
for (int i = index; i < numContacts - 1; i++) {
contacts[i] = contacts[i+1];
}
numContacts--;
}
void printContact(int index) {
if (index < 0 || index >= numContacts) {
printf("Error: invalid contact index!\n");
return;
}
printf("Name: %s\n", contacts[index].name);
printf("Phone: %s\n", contacts[index].phone);
}
int findContactByName(const char *name) {
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
return i;
}
}
return -1;
}
int findContactByPhone(const char *phone) {
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].phone, phone) == 0) {
return i;
}
}
return -1;
}
int main() {
addContact("Alice", "123456789");
addContact("Bob", "987654321");
addContact("Charlie", "555555555");
int index = findContactByName("Bob");
if (index >= 0) {
printContact(index);
}
index = findContactByPhone("555555555");
if (index >= 0) {
printContact(index);
}
removeContact(1);
return 0;
}
```
这个例子中,我们定义了一个 `Contact` 结构体来存储每个联系人的信息,包括姓名和电话。我们使用一个静态数组 `contacts` 来存储所有联系人的信息,以及一个变量 `numContacts` 来记录当前联系人的数量。
我们实现了几个函数来操作联系人列表:
- `addContact`:添加一个新联系人,如果联系人数量已经达到最大值则输出错误信息。
- `removeContact`:删除指定索引位置的联系人,如果索引无效则输出错误信息。删除操作会将后面的联系人依次向前移动,以填补被删除的位置。
- `printContact`:打印指定索引位置的联系人的详细信息,如果索引无效则输出错误信息。
- `findContactByName`:根据姓名查找联系人在列表中的索引,如果没有找到则返回 `-1`。
- `findContactByPhone`:根据电话查找联系人在列表中的索引,如果没有找到则返回 `-1`。
在 `main` 函数中,我们先添加了三个联系人,然后分别使用姓名和电话来查找联系人,并打印了找到的联系人的详细信息。最后我们删除了索引为 1 的联系人,即 Bob。
### 回答2:
手机里的“联系人”功能可以通过使用结构体来实现。我们可以定义一个结构体,包含姓名、电话和其他相关信息。然后可以创建一个联系人数组,用于存储所有的联系人信息。
首先,我们定义一个包含姓名、电话和其他信息的联系人结构体:
```
struct Contact {
char name[50];
char phone[15];
// 其他信息...
};
```
接下来,我们可以创建一个存储联系人的数组:
```
struct Contact contacts[100];
```
这样我们就可以存储最多100个联系人信息了。
下一步,我们可以提供一些功能来操作联系人数组,比如添加联系人、查找联系人等。例如,我们可以编写一个函数来添加联系人:
```
void addContact(char name[], char phone[]) {
for (int i = 0; i < 100; i++) {
if (contacts[i].name[0] == '\0') {
strcpy(contacts[i].name, name);
strcpy(contacts[i].phone, phone);
// 添加其他信息...
break;
}
}
}
```
类似地,我们还可以编写一个函数来根据姓名或电话查找联系人的详细信息:
```
Contact findContact(char keyword[]) {
for (int i = 0; i < 100; i++) {
if (strcmp(contacts[i].name, keyword) == 0 || strcmp(contacts[i].phone, keyword) == 0) {
return contacts[i];
}
}
// 没有找到匹配的联系人
Contact emptyContact;
strcpy(emptyContact.name, "");
strcpy(emptyContact.phone, "");
return emptyContact;
}
```
这样,我们就可以根据姓名或电话来查找联系人的详细信息了。
通过结构体实现手机里的“联系人”功能,能够方便地存储和查找某个人的详细信息,让我们能够更好地管理和使用手机联系人。
### 回答3:
实现手机里的“联系人”功能可以使用结构体来存储联系人的详细信息。我们可以定义一个包含姓名、电话等信息的结构体,然后创建一个结构体数组来存储多个联系人。
首先,定义结构体如下:
```c
typedef struct {
char name[50];
char phone[20];
} Contact;
```
然后,我们可以定义一个结构体数组来存储联系人:
```c
Contact contacts[100];
int numOfContacts = 0;
```
这里我们定义了一个能够存储100个联系人的数组,并用`numOfContacts`来记录当前存储的联系人数量。
接下来,我们可以实现添加联系人的函数:
```c
void addContact(char name[], char phone[]) {
strcpy(contacts[numOfContacts].name, name);
strcpy(contacts[numOfContacts].phone, phone);
numOfContacts++;
}
```
这个函数将会把姓名和电话复制到下一个可用的联系人结构体中,并将`numOfContacts`加一。
同时,我们还可以实现通过姓名或电话查找某个人的详细信息的函数:
```c
void findContact(char keyword[]) {
for (int i = 0; i < numOfContacts; i++) {
if (strcmp(contacts[i].name, keyword) == 0 || strcmp(contacts[i].phone, keyword) == 0) {
printf("姓名:%s\n", contacts[i].name);
printf("电话:%s\n", contacts[i].phone);
return;
}
}
printf("未找到相关联系人。\n");
}
```
这个函数会遍历联系人数组,查找与关键字匹配的联系人。如果找到了匹配的联系人,就会输出其姓名和电话;如果未找到匹配的联系人,则会显示未找到相关联系人的提示信息。
以上就是利用结构体实现手机里的“联系人”功能的简单实现。可以根据实际需求进行完善和添加其他功能。
阅读全文