用c++实现,定义指针数组,使其指向字符串常量:char * name[4]={“Follow”,,“Great”, “FORTRAN”,“Computer”},并进行排序。实际是对指针指向的排序,字符串不动! 要求:函数调用实现。
时间: 2024-02-27 14:57:12 浏览: 60
用指针数组的方法将字符串排序
好的,下面是实现方法。
首先,我们需要编写一个函数来比较两个字符串的大小,以便排序。这里我们使用 strcmp 函数来比较两个字符串,如果第一个字符串小于第二个字符串,则返回负数,如果相等,则返回 0,如果第一个字符串大于第二个字符串,则返回正数。
```c++
int compare(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
```
然后,我们可以定义指针数组并初始化为字符串常量:
```c++
char* name[4] = {"Follow", "Great", "FORTRAN", "Computer"};
```
接下来,我们可以调用 qsort 函数来对指针数组进行排序。qsort 函数需要四个参数:指向要排序的数组的指针,数组中元素的数量,每个元素的大小,以及一个指向比较函数的指针。
```c++
qsort(name, 4, sizeof(char*), compare);
```
最终的完整代码如下:
```c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
int main() {
char* name[4] = {"Follow", "Great", "FORTRAN", "Computer"};
int i;
qsort(name, 4, sizeof(char*), compare);
for (i = 0; i < 4; i++) {
printf("%s\n", name[i]);
}
return 0;
}
```
输出结果为:
```
Computer
Follow
FORTRAN
Great
```
注意,这里排序的是指针数组,所以输出的结果是指针指向的字符串的顺序,而不是字符串本身的顺序。
阅读全文