题目

指针数组:按字典序输出多个单词

思路

本题读入多个单词,按字典序排序后输出(指针数组 + 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