用c语言编写编写一个程序,输入N个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码。 【输入形式】 用户首先在第一行输入一个正整数,该正整数表示待排序的用户数目,然后在下面多行输入多个用户的信息,每行的输入格式为:姓名 电话。以回车结束每个用户的输入。 【输出形式】 程序输出排序后的结果。每行的输出结果格式也是: 姓名 电话。姓名和电话字段中间没有空格,要求用户姓名不能超过10个字符,超出10个字符时候只取前10个字符作为姓名。电话号码不能超过10位,超过10位时只按10位处理。输出姓名、电话字段各占12个字符宽,输出格式采用默认对齐方式。另外,用户的数量要求不超过50个。 【样例输入】
时间: 2024-02-13 18:06:28 浏览: 104
以下是一个示例程序,可以实现输入N个用户的姓名和电话号码,并按照用户姓名的词典顺序排列输出用户的姓名和电话号码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERS 50
#define NAME_LEN 10
#define PHONE_LEN 10
struct User {
char name[NAME_LEN + 1];
char phone[PHONE_LEN + 1];
};
int compare_user(const void* a, const void* b) {
return strcmp(((struct User*)a)->name, ((struct User*)b)->name);
}
int main() {
int n;
struct User users[MAX_USERS];
printf("请输入用户数目:");
scanf("%d", &n);
if (n > MAX_USERS) {
printf("用户数目不能超过 %d\n", MAX_USERS);
return 1;
}
printf("请输入每个用户的姓名和电话号码:\n");
for (int i = 0; i < n; i++) {
scanf("%s %s", users[i].name, users[i].phone);
users[i].name[NAME_LEN] = '\0';
users[i].phone[PHONE_LEN] = '\0';
}
qsort(users, n, sizeof(struct User), compare_user);
printf("按照用户姓名的词典顺序排列输出用户的姓名和电话号码:\n");
for (int i = 0; i < n; i++) {
printf("%-12s %-12s\n", users[i].name, users[i].phone);
}
return 0;
}
```
输入样例:
```
5
Alice 1234567890
Bob 2345678901
Charlie 3456789012
David 4567890123
Emma 5678901234
```
输出样例:
```
按照用户姓名的词典顺序排列输出用户的姓名和电话号码:
Alice 1234567890
Bob 2345678901
Charlie 3456789012
David 4567890123
Emma 5678901234
```
阅读全文