请大佬帮帮我
二维字符数组按长度排序--2019秋考题 (15分)定义一个char a的二维字符数组,存储用户输入的n行m列个字符。其中n由用户输入确定,1<=n<=100;而m不需要用户输入,1<=m<=100,也就是一行最多只有100个有效字符。将n行字符串按照字符串长度从小到大排序,并输出排序后的结果。
输入格式:
用户先输入一个整数n,然后按回车键。 接下来输入n个字符串,每个字符串结束时按回车键。 注意:用户输入的一行字符信息中,可能含有空格和标点符号。
输出格式:
按照每行字符串长度升序排列后的输出结果,每行打印一个字符串。题目确保没有两行的长度完全相同。
输入样例:
用户输入数字5并回车后,输入五个字符串。
5
aaa
b
ccccc
dd
eeeeeee
输出样例:
按照输入的五个字符串的长度,从短到长输出。
b
dd
aaa
ccccc
eeeeeee
//请帮我分析一下并写出您的代码,感谢!
// 定义一个char a的二维字符数组,存储用户输入的n行m列个字符。其中n由用户输入确定,
// 1<=n<=100;而m不需要用户输入,1<=m<=100,也就是一行最多只有100个有效字符。将n行字符串按照
// 字符串长度从小到大排序,并输出排序后的结果。
#include<stdio.h>
int main()
{
char ch, a;
int i, j, k, n, m = 0, temp1, temp2, b;
scanf("%d", &n);
getchar();
for (i = 0;i < n;i++)
{
while ((ch = getchar()) != '\n')
{
a = ch;
m++;
}
b = m; // 记录各行字符串的长度
b = i; // 记录各行字符串的行号
m = 0;
}
for (i = 0;i < n;i++) // 按第 0 行进行由小至大排序
{
for (j = 0;j < n - 1;j++)
{
if (b > b)
{
temp1 = b; // 长度小的交换到前面
b = b;
b = temp1;
temp2 = b; // 同时,记录的行号跟随交换
b = b;
b = temp2;
}
}
}
for (i = 0;i < n;i++) // 输出
{
j = b;
m = b;
for(k = 0;k < m;k++)
printf("%c", a);
printf("\n");
}
return 0;
} 我是刚刚看到这个帖子。你这个帖子挂了两天了,没有人来回答,朋友,你得思考一下为什么了,别人给了你帮助,不求你任何东西,只需要抬抬手,选个最佳答案而已
页:
[1]