怎么把输入的几个单词按升序字母顺序排序输出(用到指针)

编写程序,输入10个单词(每个单词小于32字符),将这些单词按升序字母顺序排序输出。
(单词是连续的大小写字母组成,建议在程序中合理使用指针数组)
【注意】输入、输出各占一行,运行效果应如下所示(第1行为输入,第2行为输出,单词间用一个半角空格分隔),格式错误算结果错误。
LIBXL IS A LIBRARY THAT CAN READ AND WRITE EXCEL
A AND CAN EXCEL IS LIBRARY LIBXL READ THAT WRITE

你题目的解答代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void sort(char *a[10],int n)
{
    int i,j;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
            if(strcmp(a[j] , a[j+1])>0)
            {
                char *t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
}

int main(){
    char *a[10];//使用指针数组
    int i,j;
    for(i=0;i<10;i++)
    {
        a[i] = (char *)malloc(sizeof(char)*33);  //使用动态内存分配给字符串指针分配空间
        scanf("%s", a[i]);
    }
    sort(a, 10);
    for(i=0;i<10;i++)
    {
        if (i>0)
           printf(" ");
        printf("%s",a[i]);
    }
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

用strcmp排序

#include <stdio.h>
#include <string.h>
int main()
{
    char s[10][32],t[32];
    char (*p)[32] = s;
    int i=0,j;
    for(i=0;i<10;i++)
        scanf("%s",p+i);
    for(i=0;i<9;i++)
        for(j=0;j<9-i;j++)
        {
            if(strcmp(*(p+j),*(p+j+1)) > 0)
            {
                strcpy(t,*(p+j));
                strcpy(*(p+j),*(p+j+1));
                strcpy(*(p+j+1),t);
            }
        }
    for(i=0;i<10;i++)
        printf("%s ",p+i);
    return 0;
}