定义指针数组,使其指向字符串常量:char * name[4]={“Follow”,,“Great”, “FORTRAN”,“Computer”},并进行排序。实际是对指针指向的排序,字符串不动!
时间: 2023-09-30 17:09:44 浏览: 19
好的,这是一个经典的指针数组排序问题。
首先,我们需要明确一点:指针数组中的每个元素都是指向字符串常量的指针。因此,我们需要使用指针来比较字符串而不是直接比较字符串。
下面是一个示例代码,演示如何对指针数组中的元素进行排序:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char *name[4] = {"Follow", "Great", "FORTRAN", "Computer"};
int i, j;
char *temp;
// 使用冒泡排序对指针数组进行排序
for (i = 0; i < 3; i++) {
for (j = 0; j < 3 - i; j++) {
if (strcmp(name[j], name[j + 1]) > 0) {
temp = name[j];
name[j] = name[j + 1];
name[j + 1] = temp;
}
}
}
// 输出排序结果
for (i = 0; i < 4; i++) {
printf("%s\n", name[i]);
}
return 0;
}
```
输出结果为:
```
Computer
Follow
FORTRAN
Great
```
这个程序使用了冒泡排序算法,即每次比较相邻的两个元素,如果前面的元素比后面的元素大,则交换它们的位置。在这个程序中,我们使用了 `strcmp` 函数来比较两个字符串。由于指针数组中的每个元素都是指向字符串常量的指针,因此我们可以使用 `strcmp` 函数来比较它们。最后,程序输出排序后的指针数组元素,即指向字符串常量的指针。