问题 X: C语言实习题五——2.用指针实现字符串排序
时间限制: 1 Sec 内存限制: 128 MB
题目描述
用指针实现:将10个字符串(设其长度小于20)从小到大排序.
输入
10个字符串。
输出
排序后的10个字符串。
样例输入
ijk jkl def ghi def cde hij def efg fgh
样例输出
cde def def def efg fgh ghi hij ijk jkl
提示
① 定义二维字符数组和指向该数组的指针数组;
② 用循环使指针数组的元素指向二维字符数组各行首;
③ 用循环为指针数组元素赋字符串为值;
④ 用strcmp函数比较两个指针数组元素的值、用strcpy函数交换两个指针数组元素的值。
代码实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char* arr[10];
for (int i = 0; i < 10; i++) {
arr[i] = (char*)malloc(100 * sizeof(char));
gets(arr[i]);
}
for (int i = 0; i < 10 - 1; i++) {
for (int j = 0; j < 10 - 1 - i; j++) {
if (strcmp(arr[j], arr[j + 1]) > 0) {
char* p = NULL;
p = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = p;
}
}
}
for (int i = 0; i < 10; i++) {
puts(arr[i]);
free(arr[i]);
}
return 0;
}