字符数组内元素的排序问题?

图片说明
请问有大佬能帮忙给出这个题目的代码吗,帮帮跨考的孩子吧


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

int main()
{
    char a[][4] = {{'h', 'e', 'l',' '}, {'a', 'b', 'r',' '}, {'u', 'I', 'M',' '}, {'u', 'N', 'G',' '}};
    int i, j;
    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < 4; j++)
        {
            printf("%c\t", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    int p, q;          //p为行,q为列
    for(q = 0; q < 4; q++)
    {
        for(p = 0; p < 4; p++)
        {
            if(a[p][q] > a[p + 1][q])
            {
                char temp = a[p][q];
                a[p][q] = a[p + 1][q];
                a[ p + 1][q] = temp;
            }
        }
    }
    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < 4; j++)
        {
            printf("%c\t", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void swap(char* s1, char* s2, int n) {
    int i;
    for(i=0;i<n-1;i++)
        if (s1[i] != s2[i]) {
            s1[n - 1] = s1[i];
            s1[i] = s2[i];
            s2[i] = s1[n - 1];
        }
    s1[n - 1] = ' ';
}
int main() {
    char a[][4] = { {'h', 'e', 'l',' '}, {'a', 'b', 'r',' '}, {'u', 'I', 'M',' '}, {'u', 'N', 'G',' '} };
    int i, j;
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("%c\t", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    //比较与交换
    for (i = 0; i < 4; i++)
        for (j = i + 1; j < 4; j++) 
            if (strcmp(a[i], a[j]) > 0)
                swap(a[i], a[j], 4);

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("%c\t", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

同跨考,加油