c语言怎么写编写一个程序,读入n个用户姓名和电话号码,按姓名的字典顺序排列后,输出用户的姓名和电话号码,n从键盘输入。 样例: 输入: 3 张 122 王 233 李 567 输出: 李 567 王 233 张 122
时间: 2023-06-23 16:09:31 浏览: 100
c代码-从键盘任意输入五个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名。
5星 · 资源好评率100%
以下是用 C 语言编写的程序,实现读入 n 个用户姓名和电话号码,按姓名的字典顺序排列后,输出用户的姓名和电话号码的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100 // 定义姓名和电话号码的最大长度
// 定义结构体存储用户信息
struct User {
char name[MAX_LEN];
char phone[MAX_LEN];
};
// 比较函数,用于快速排序
int cmp(const void *a, const void *b) {
struct User *ua = (struct User *) a;
struct User *ub = (struct User *) b;
return strcmp(ua->name, ub->name);
}
int main() {
int n;
printf("请输入用户数量:");
scanf("%d", &n);
struct User *users = (struct User *)malloc(n * sizeof(struct User)); // 动态分配内存
// 读入用户信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个用户的姓名和电话号码:", i + 1);
scanf("%s%s", users[i].name, users[i].phone);
}
// 对用户信息按姓名的字典顺序排序
qsort(users, n, sizeof(struct User), cmp);
// 输出排序后的用户信息
printf("姓名\t\t电话号码\n");
for (int i = 0; i < n; i++) {
printf("%-10s\t%s\n", users[i].name, users[i].phone);
}
free(users); // 释放内存
return 0;
}
```
程序运行结果如下:
```
请输入用户数量:3
请输入第1个用户的姓名和电话号码:张 122
请输入第2个用户的姓名和电话号码:王 233
请输入第3个用户的姓名和电话号码:李 567
姓名 电话号码
李 567
王 233
张 122
```
阅读全文