C语言编写一个程序,读入n个用户姓名和电话号码,按姓名的字典顺序排列后,输出用户的姓名和电话号码,n从键盘输入
时间: 2023-07-15 18:14:41 浏览: 161
以下是一个简单的 C 语言程序,可以实现读入 n 个用户姓名和电话号码,按姓名的字典顺序排列后,输出用户的姓名和电话号码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义用户结构体
struct User {
char name[20];
char phone[15];
};
// 比较函数,用于 qsort 排序
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 = 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("按字典顺序排列后的结果为:\n");
for (int i = 0; i < n; i++) {
printf("%s %s\n", users[i].name, users[i].phone);
}
// 释放内存
free(users);
return 0;
}
```
程序首先读入用户数量 `n`,然后创建一个 `User` 结构体数组,读入每个用户的姓名和电话号码,并进行排序,最后按顺序输出结果。注意,这里使用了标准库函数 `qsort` 进行排序,需要自定义比较函数 `cmp`,用于按姓名的字典顺序进行比较。
阅读全文