用c语言实现:创建一个包含3个元素{(王一,18986112501),(王二,18986112502),(王三,18986112503)}通讯录顺序表,并输出该顺序表中各个元素。
时间: 2024-10-14 17:04:07 浏览: 29
在C语言中,我们可以使用结构体(struct)来表示联系人信息,并通过数组或动态内存分配来存储3个元素的通讯录。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体表示联系人信息
typedef struct {
char name[20];
int phone_number;
} Contact;
int main() {
// 创建并初始化通讯录顺序表
Contact contacts[3] = {
{"王一", 18986112501},
{"王二", 18986112502},
{"王三", 18986112503}
};
// 输出通讯录中的每个元素
for (int i = 0; i < sizeof(contacts) / sizeof(contacts[0]); i++) {
printf("姓名:%s, 电话号码:%d\n", contacts[i].name, contacts[i].phone_number);
}
return 0;
}
相关问题
用c语言实现:创建一个包含3个元素{(王一,18986112501),(王二,18986112502),(王三,18986112503)}通讯录顺序表,并输出该顺序表中各个元素。
在C语言中,你可以使用结构体来表示联系人信息,并通过数组或链表的形式存储通讯录。这里我们以数组为例,创建一个动态数组来实现这个通讯录:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义联系人结构体
typedef struct {
char name[20];
int phone;
} Contact;
// 动态分配内存并初始化联系人列表
Contact* createPhoneBook(int size) {
Contact* phoneBook = (Contact*)malloc(size * sizeof(Contact));
if (!phoneBook) {
printf("Memory allocation failed.\n");
return NULL;
}
// 初始化3个联系人
for (int i = 0; i < 3; i++) {
strcpy(phoneBook[i].name, "王" + i); // 注意字符串连接要用加号操作符,避免溢出
phoneBook[i].phone = 18986112501 + i; // 模拟电话号码递增
}
return phoneBook;
}
// 输出联系人信息
void displayPhoneBook(Contact* phoneBook, int size) {
for (int i = 0; i < size; i++) {
printf("姓名:%s, 电话:%d\n", phoneBook[i].name, phoneBook[i].phone);
}
}
int main() {
int size = 3;
Contact* phoneBook = createPhoneBook(size);
if (phoneBook) {
displayPhoneBook(phoneBook, size);
free(phoneBook); // 释放内存
}
return 0;
}
```
在这个程序中,`createPhoneBook`函数用于动态创建一个包含3个联系人的通讯簿,然后`displayPhoneBook`函数会遍历并打印每个联系人的信息。
用c语言实现:在{(王一,18986112501),(王二,18986112502),(王三,18986112503),(王四,18986112504)}顺序表中删除第3个位置元素,输出该顺序表中各个元素。
在C语言中,如果你有一个动态数组类型的顺序表,可以按照以下步骤删除指定位置的元素并输出其余元素:
首先,我们需要创建一个结构体来存储姓名和电话号码,然后定义顺序表节点以及相应的函数。这里假设顺序表的结构如下:
```c
typedef struct {
char name[20];
int phone;
} Student;
typedef struct {
Student *data; // 存储数据的指针
int size; // 序列长度
int capacity; // 当前容量
} List;
```
接下来,我们可以编写插入、删除和显示元素的函数:
```c
// 插入函数
void insert(List *list, const char *name, int phone) {
if (list->size == list->capacity) {
list->capacity *= 2; // 如果满了,扩大容量
list->data = realloc(list->data, sizeof(Student) * list->capacity);
}
list->data[list->size] = (Student){.name = name, .phone = phone};
list->size++;
}
// 删除函数
void delete(List *list, int index) {
if (index < 0 || index >= list->size) {
return; // 索引越界,不做处理
}
// 将最后一个元素移到被删除的位置
for (int i = index; i < list->size - 1; i++) {
list->data[i] = list->data[i + 1];
}
// 缩小容量并调整大小
list->data[--list->size] = (Student){NULL, 0}; // 用无效值占位
if (list->size > 0 && list->size * 2 > list->capacity)
list->capacity /= 2;
else
free(list->data); // 若只剩一个元素,释放内存
}
// 显示顺序表元素
void display(List *list) {
for (int i = 0; i < list->size; i++) {
printf("第%d个学生:姓名:%s,电话:%d\n", i+1, list->data[i].name, list->data[i].phone);
}
}
```
现在你可以这样使用这些函数删除并显示顺序表:
```c
List students = {NULL, 0, 4}; // 初始化列表
insert(&students, "王一", 18986112501);
insert(&students, "王二", 18986112502);
insert(&students, "王三", 18986112503); // 要删除的元素
insert(&students, "王四", 18986112504);
delete(&students, 2); // 删除第3个元素(索引从0开始)
display(&students);
```
运行以上代码后,你会看到除第3个位置外的其他学生信息。
阅读全文