按照姓名首字母排序c++指针
时间: 2023-08-03 11:25:39 浏览: 116
可以使用标准库函数`qsort()`,结合自定义的比较函数来排序。以下是一个示例代码:
```c++
#include <iostream>
#include <cstdlib> // 包含 qsort 函数的头文件
using namespace std;
// 比较函数,按照姓名首字母升序排序
int cmp(const void* a, const void* b) {
char* pa = *(char**)a;
char* pb = *(char**)b;
return strcmp(pa, pb);
}
int main() {
const int n = 5;
char* names[n] = {"Alice", "Bob", "Charlie", "David", "Eve"};
// 排序
qsort(names, n, sizeof(char*), cmp);
// 输出排序结果
for(int i=0; i<n; i++) {
cout << names[i] << endl;
}
return 0;
}
```
输出结果:
```
Alice
Bob
Charlie
David
Eve
```
相关问题
假设有20个姓名拼音,用指针将姓名按首字母升序排序
好的,我可以给你提供一种用指针实现将20个姓名按首字母升序排序的方法。
首先,我们需要定义一个结构体,用于存储每个姓名的拼音:
```c++
struct Name {
char* pinyin; // 存储姓名拼音的指针
};
```
然后,我们可以定义一个函数,该函数接受一个 `Name` 类型的数组和该数组的大小作为参数,使用指针将数组中的姓名按首字母升序排序:
```c++
void sortName(Name* arr, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
// 比较姓名的首字母,如果前者大于后者,则交换两个姓名的位置
if (*(arr[i].pinyin) > *(arr[j].pinyin)) {
Name temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
```
在 `sortName` 函数中,我们使用了指针来访问每个姓名的首字母,比较它们的大小,并进行排序。注意,我们使用了 `*` 运算符来解引用指针,访问指针所指向的值。
使用该函数,你可以按以下方式调用它,将20个姓名按首字母升序排序:
```c++
// 假设有一个Name类型的数组,存储了20个姓名的拼音
Name names[20] = { ... };
// 调用sortName函数,将姓名按首字母升序排序
sortName(names, 20);
```
希望这个方法对你有所帮助!
输入"赵XX", "钱XX", "孙XX", "李XX", "周XX"五个名字,按拼音首字母大小从小到大排列后输出。要求从小到大排列部分用指针表示。
好的,以下是代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char *name[5], *temp;
char input[10];
// 输入五个名字
for (int i = 0; i < 5; i++) {
cout << "请输入第" << i+1 << "个名字:";
cin >> input;
name[i] = new char[strlen(input)+1];
strcpy(name[i], input);
}
// 按拼音首字母大小从小到大排序
for (int i = 0; i < 5; i++) {
for (int j = i+1; j < 5; j++) {
if (strcmp(name[i], name[j]) > 0) {
temp = name[i];
name[i] = name[j];
name[j] = temp;
}
}
}
// 输出排序结果
cout << "排序结果为:";
for (int i = 0; i < 5; i++) {
cout << name[i] << " ";
}
cout << endl;
// 释放内存
for (int i = 0; i < 5; i++) {
delete [] name[i];
}
return 0;
}
```
这里使用了指针数组来存储五个名字,然后通过冒泡排序来按拼音首字母大小从小到大排序,最后输出排序结果。要注意的是,由于使用了动态内存分配,需要在程序结束前释放内存,避免内存泄漏。
阅读全文