题目
指针数组:按字典序输出多个单词
思路
本题读入多个单词,按字典序排序后输出(指针数组 + qsort)。
字符串存缓冲区,char *ptrs[] 保存每个串的起始地址;比较函数里对 strcmp(*a,*b) 排序,再按序打印。
解题分析
指针数组元素是 char*,排序交换指针比交换字符串内容更轻。比较用 strcmp。C 标准库 qsort 也可排序指针数组,比较函数接收 const void*。
完整程序
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[3][100];
char *w[3];
for (int i = 0; i < 3; i++) {
scanf("%99s", buf[i]);
w[i] = buf[i];
}
for (int i = 0; i < 2; i++) {
for (int j = i + 1; j < 3; j++) {
if (strcmp(w[i], w[j]) > 0) {
char *t = w[i];
w[i] = w[j];
w[j] = t;
}
}
}
for (int i = 0; i < 3; i++) {
printf("%s\n", w[i]);
}
return 0;
}
运行示例
输入:
pear apple fig输出:
apple
fig
pear