做一段通讯录排序的c语言代码
时间: 2023-09-03 15:04:44 浏览: 131
### 回答1:
下面是一段C语言代码,用于实现通讯录排序:
#include<stdio.h>
#define MAX_LEN 200 int main(){
int n;
char name[MAX_LEN][20];
int age[MAX_LEN];
printf("请输入联系人的个数:");
scanf("%d", &n);
for (int i=0; i<n; i++) {
printf("请输入第%d个联系人的姓名和年龄:", i+1);
scanf("%s%d", name[i], &age[i]);
}
for (int i=0; i<n-1; i++){
for (int j=0; j<n-1-i; j++) {
if (age[j]>age[j+1]) {
int temp=age[j];
age[j]=age[j+1];
age[j+1]=temp;
char tempStr[20];
strcpy(tempStr, name[j]);
strcpy(name[j], name[j+1]);
strcpy(name[j+1], tempStr);
}
}
}
printf("按年龄排序后的结果:\n");
for (int i=0; i<n; i++) {
printf("%s %d\n", name[i], age[i]);
}
return 0;
}
### 回答2:
#include <stdio.h>
#include <string.h>
// 声明一个结构体用于存储联系人信息
struct contact {
char name[50];
char phone[20];
};
// 函数声明
void bubbleSort(struct contact arr[], int size);
void swap(struct contact *xp, struct contact *yp);
void printContacts(struct contact arr[], int size);
int main() {
int size;
printf("请输入联系人个数:");
scanf("%d", &size);
printf("请依次输入联系人的姓名和电话号码:\n");
// 创建结构体数组
struct contact contacts[size];
// 读取联系人信息
for (int i=0; i<size; i++) {
printf("联系人%d姓名:", i+1);
scanf("%s", contacts[i].name);
printf("联系人%d电话号码:", i+1);
scanf("%s", contacts[i].phone);
}
// 对联系人进行排序
bubbleSort(contacts, size);
// 打印排序结果
printf("排序后的联系人列表:\n");
printContacts(contacts, size);
return 0;
}
// 冒泡排序算法实现
void bubbleSort(struct contact arr[], int size) {
for (int i=0; i<size-1; i++) {
for (int j=0; j<size-i-1; j++) {
if (strcmp(arr[j].name, arr[j+1].name) > 0) {
swap(&arr[j], &arr[j+1]);
}
}
}
}
// 交换两个联系人信息的函数
void swap(struct contact *xp, struct contact *yp) {
struct contact temp = *xp;
*xp = *yp;
*yp = temp;
}
// 打印联系人信息的函数
void printContacts(struct contact arr[], int size) {
for (int i=0; i<size; i++) {
printf("联系人%d:\n", i+1);
printf("姓名:%s\n", arr[i].name);
printf("电话号码:%s\n", arr[i].phone);
printf("\n");
}
}
### 回答3:
下面是一段使用C语言实现通讯录排序的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
typedef struct {
char name[50];
char email[50];
char phone[20];
} Contact;
void sortContacts(Contact contacts[], int numContacts) {
int i, j;
Contact temp;
for(i = 0; i < numContacts - 1; i++) {
for(j = 0; j < numContacts - i - 1; j++) {
if(strcmp(contacts[j].name, contacts[j+1].name) > 0) {
temp = contacts[j];
contacts[j] = contacts[j+1];
contacts[j+1] = temp;
}
}
}
}
int main() {
Contact contacts[MAX_CONTACTS];
int numContacts, i;
printf("请输入通讯录中联系人的数量:");
scanf("%d", &numContacts);
for(i = 0; i < numContacts; i++) {
printf("请输入第%d个联系人的姓名:", i + 1);
scanf("%s", contacts[i].name);
printf("请输入第%d个联系人的邮箱:", i + 1);
scanf("%s", contacts[i].email);
printf("请输入第%d个联系人的电话号码:", i + 1);
scanf("%s", contacts[i].phone);
}
sortContacts(contacts, numContacts);
printf("\n排序后的通讯录:\n");
for(i = 0; i < numContacts; i++) {
printf("联系人%d:\n", i + 1);
printf("姓名:%s\n", contacts[i].name);
printf("邮箱:%s\n", contacts[i].email);
printf("电话号码:%s\n\n", contacts[i].phone);
}
return 0;
}
```
这段代码首先定义了一个`Contact`结构体,用来存储通讯录中每个联系人的姓名、邮箱和电话号码。然后,通过`sortContacts`函数,使用冒泡排序对通讯录进行排序,按照联系人姓名的字母顺序进行排序。最后,在`main`函数中,先接收用户输入的联系人数量和每个联系人的信息,然后调用`sortContacts`函数进行排序,最后输出排序后的通讯录信息。
阅读全文