用 c 语言写以下题目:编写一个程序,读入n个用户姓名和电话号码,按姓名的字典顺序排列后,输出用户的姓名和电话号码,n从键盘输入。 样例: 输入: 3 张 122 王 233 李 567 输出: 李 567 王 233 张 122
时间: 2024-03-26 21:34:54 浏览: 94
以下是使用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX 100
struct User {
char name[MAX];
char phone[MAX];
};
void sort(struct User users[], int n);
int main() {
int n;
struct User users[MAX];
printf("请输入用户数:");
scanf("%d", &n);
// 读入用户信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个用户的姓名和电话号码:", i + 1);
scanf("%s%s", users[i].name, users[i].phone);
}
// 按姓名排序
sort(users, n);
// 输出用户信息
for (int i = 0; i < n; i++) {
printf("%s %s\n", users[i].name, users[i].phone);
}
return 0;
}
// 按姓名排序
void sort(struct User users[], int n) {
struct User temp;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (strcmp(users[i].name, users[j].name) > 0) {
temp = users[i];
users[i] = users[j];
users[j] = temp;
}
}
}
}
```
该程序首先读入用户数和每个用户的姓名和电话号码,然后按姓名的字典顺序排序,最后输出用户的姓名和电话号码。在排序时,使用了strcmp函数比较姓名的大小,如果用户i的姓名比用户j的姓名大,则将它们交换。
阅读全文