编写函数指针数组为参数对字符串排序char*name[]=zhabgsan,lisi,wangwu,zhaoliu,weiqi 1实现字符串交换 不使用stdlib和const char
时间: 2024-11-27 21:10:52 浏览: 0
在C语言中,你可以使用字符数组作为函数指针数组,并自定义比较函数来对字符串进行排序。这里我们先创建一个简单的字符数组比较函数,然后利用冒泡排序的思想来实现字符串数组的升序排列。由于你提到不使用`stdlib.h`和`const char *`,我们将编写一个无库版本的字符串比较函数和排序算法。
首先,定义一个自定义比较函数,用于判断两个字符串的字典顺序:
```c
int stringCompare(char* str1, char* str2) {
while (*str1 && *str2 && *str1 == *str2) {
str1++;
str2++;
}
return (*str1 - *str2);
}
```
这个函数会遍历两个字符串直到找到第一个不同的字符,返回它们的ASCII值差来确定大小。
接下来,我们可以编写冒泡排序算法来对字符串数组进行排序:
```c
void bubbleSort(char** arr, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (stringCompare(arr[j], arr[j + 1]) > 0) {
// 交换元素
char* temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 主函数调用
int main() {
char name[] = {"zhabgsan", "lisi", "wangwu", "zhaoliu", "weiqi"};
int numElements = sizeof(name) / sizeof(name[0]);
bubbleSort(name, numElements);
printf("Sorted names:\n");
for (int i = 0; i < numElements; i++) {
printf("%s ", name[i]);
}
return 0;
}
```
阅读全文