编写一个程序,输入n个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码。
时间: 2023-04-27 20:02:06 浏览: 200
以下是一种 Python 的实现方式:
```
n = int(input("请输入用户数量:"))
user_list = []
for i in range(n):
name = input("请输入姓名:")
phone = input("请输入电话号码:")
user = (name, phone)
user_list.append(user)
user_list.sort()
for user in user_list:
print("姓名:" + user[0] + " 电话号码:" + user[1])
```
上述代码中,通过for循环输入n个用户的姓名和电话号码,并将其存入元组中。在循环结束后,使用sort()函数对元组进行排序,最后按照词典顺序输出用户的姓名和电话号码。
相关问题
编写一个程序,输入n个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码
### 回答1:
好的,以下是程序的代码:
```
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
map<string, string> users;
for (int i = ; i < n; i++)
### 回答2:
本题思路与实现
本题要求我们编写一个程序,输入n个用户的姓名和电话号码,然后按照用户姓名的字典顺序排列,输出用户的姓名和电话号码。
思路:
我们可以采用哈希表暴力地存储n个用户信息,在输出时利用字典序排序。
具体实现:
1. 创建一个哈希表,用于存储所有用户信息。
2. 从键盘读入用户数n,然后使用一个循环从键盘读入n个用户信息,包括姓名和电话号码。
3. 存储用户信息。对于每个读入的用户,我们以用户姓名为键,以用户信息结构体为值,把它存入哈希表中。
4. 哈希表字典序排序。我们可以使用STL的map容器按照字典顺序对用户名进行排序。
5. 遍历排序后的哈希表,将每个用户的姓名和电话号码依次输出即可。
完整代码如下:
### 回答3:
为了实现这个程序,我们需要使用一种可以按照字典顺序排列的数据结构,比如说红黑树,从而可以快速地进行插入和查找操作。步骤如下:
1. 定义一个包含姓名和电话号码的结构体,用于存储每个用户的信息。
2. 定义一个红黑树,每个节点存储一个用户信息的结构体,根据用户姓名作为键进行比较和排序。
3. 输入n个用户的姓名和电话号码,将每个用户信息的结构体插入红黑树中。
4. 遍历红黑树,按照字典顺序输出每个节点的用户姓名和电话号码。
下面是具体实现代码:
```c++
#include <iostream>
#include <string>
#include <map>
using namespace std;
struct UserInfo {
string name;
string phone;
};
bool operator<(const UserInfo& a, const UserInfo& b) {
return a.name < b.name;
}
int main() {
map<UserInfo, int> users;
int n;
cout << "请输入用户数量:";
cin >> n;
for (int i = 0; i < n; i++) {
string name, phone;
cout << "请输入第 " << i+1 << " 个用户的姓名和电话号码,用空格隔开:";
cin >> name >> phone;
UserInfo user;
user.name = name;
user.phone = phone;
users[user] = i;
}
cout << "用户列表按照姓名排序如下:" << endl;
for (auto iter = users.begin(); iter != users.end(); iter++) {
cout << iter->first.name << "\t" << iter->first.phone << endl;
}
return 0;
}
```
上述代码中,我们用`std::map`来作为红黑树的具体实现,其中键类型是`UserInfo`结构体,值类型是一个整数,表示该用户的编号。在实现中,我们还需要重载`<`运算符,使其可以比较两个`UserInfo`结构体的大小,从而可以用于红黑树的键比较和排序。用户的姓名和电话号码被存储在结构体中,通过输入循环将每个用户结构体插入到红黑树中,最后根据字典序遍历输出。
用c语言基础知识写代码,编写一个程序,输入N个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码。
以下是一个简单的实现,使用结构体数组存储用户信息,使用strcmp函数进行姓名的比较和排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_USERS 100
struct User {
char name[20];
char phone[20];
};
int main() {
int n;
struct User users[MAX_USERS];
printf("请输入用户数量:");
scanf("%d", &n);
// 输入用户信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个用户的姓名和电话号码:", i+1);
scanf("%s %s", users[i].name, users[i].phone);
}
// 按照姓名的字典序排序
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) {
struct User temp = users[i];
users[i] = users[j];
users[j] = temp;
}
}
}
// 输出用户信息
printf("\n用户列表:\n");
for (int i = 0; i < n; i++) {
printf("%s\t%s\n", users[i].name, users[i].phone);
}
return 0;
}
```
注意:这只是一个简单的示例程序,没有进行输入的合法性检查和错误处理。在实际应用中需要根据具体情况进行修改和完善。
阅读全文