上接标题:字符串中允许出现空格,按从小到大的顺序打印
输入样例:
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;
}