输入不超过10个字符串存入数组char s[10][15]中。

上接标题:字符串中允许出现空格,按从小到大的顺序打印

输入样例:

usa
japan
uk
china
0
输出样例:

china          japan          uk             usa            

说明:

1.使用gets函数循环输入若干个字符串,顶多10个,输入数少于10个时可以用0表示结束输入;

2.可以使用strcmp函数来比较两个串大小;

3.可以使用strcpy函数实现两个字符串的交换,前提是定义一个临时的一维数组tmp[15]用于交换用;

4.排序算法可以用选择排序、冒泡排序等

 

今天学习的字符数组,确实有点没太学懂,数组本身就学的不太懂,加上字符就更不太懂了,问了几个做题过程中卡住的题,感谢各位大佬帮我解答!

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


int main()
{
    #define MAX_ROW         10
    #define MAX_COLUMN      15

    char a[MAX_ROW][MAX_COLUMN] = { 0 };
    int n = 0;

    printf("Input Data: \n");
    for (int i = 0; i < sizeof(a) / sizeof(a[0]); ++i)
    {
        char tmp[MAX_COLUMN] = { 0 };
        gets_s(tmp, _countof(tmp));
        if ((NULL == tmp) || ('0' == tmp[0])) { break; }

        strcpy_s(a[i], _countof(a[i]), tmp);
        ++n;
    }

    if (n <= 0) { printf("Input Error!\n"); return 0; }

    for (int i = 0; i < n - 1; ++i)
    {
        for (int j = 0; j < n - 1 - i; ++j)
        {
            if (strcmp(a[j], a[j + 1]) > 0)
            {
                char tmp[MAX_COLUMN] = { 0 };
                
                strcpy_s(tmp, _countof(tmp), a[j]);

                strcpy_s(a[j], _countof(a[j]), a[j + 1]);
                
                strcpy_s(a[j + 1], _countof(a[j + 1]), tmp);
            }
        }
    }

    for (int i = 0; i < n; ++i)
    {
        printf("%-15s", a[i]);
    }

    return 0;
}