不用sort函数请用户输入4首歌名,歌名存入一字符指针数组,然后分别按原序、字母序和字母逆序(从Z到A)显示这些歌名。
时间: 2024-10-21 11:11:51 浏览: 23
C++数组指针题(含答案).pdf
为了实现这个功能,我们可以使用`cin`获取用户的输入,然后对字符数组进行原序遍历、排序以及反向排序。这里我们使用C++标准库中的字符比较函数来进行排序。首先,创建一个字符指针数组存储歌名,接着按照要求依次显示歌名。
```cpp
#include <iostream>
// 假设最大歌名长度为50个字符
const size_t MAX_NAME_LENGTH = 50;
char songNames[4][MAX_NAME_LENGTH];
size_t numSongs = 0;
// 输入歌名并存储
void inputSongNames() {
for (size_t i = 0; i < 4 && numSongs < 4; ++i) {
std::cout << "请输入第 " << (i + 1) << " 首歌名(最多" << MAX_NAME_LENGTH << "个字符): ";
if (std::getline(std::cin, songNames[i], '\n')) {
// 移除末尾换行符
songNames[i].pop_back();
numSongs++;
}
}
}
// 原序显示歌名
void displayOriginalOrder() {
std::cout << "原始顺序:\n";
for (const auto& name : songNames) {
std::cout << name << "\n";
}
}
// 按字母升序排序并显示
void displayAlphabeticalOrder() {
std::sort(songNames, songNames + numSongs, [] (const char* a, const char* b) { return strcmp(a, b) < 0; });
std::cout << "字母升序:\n";
for (const auto& name : songNames) {
std::cout << name << "\n";
}
}
// 按字母降序排序并显示
void displayReverseAlphabeticalOrder() {
std::sort(songNames, songNames + numSongs, [] (const char* a, const char* b) { return strcmp(a, b) > 0; });
std::cout << "字母降序(从Z到A):\n";
for (const auto& name : songNames) {
std::cout << name << "\n";
}
}
int main() {
inputSongNames();
displayOriginalOrder();
displayAlphabeticalOrder();
displayReverseAlphabeticalOrder();
return 0;
}
```
阅读全文