[PTA]实验11-1-1 英文单词排序
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]实验11-1-1 英文单词排序相关的知识,希望对你有一定的参考价值。
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
- 提交结果:
- 源码:
#include<stdio.h>
#include<string.h>
int main(void)
{
char words[20][10]; // 最多有19个单词,每个单词长度最大为9
int cntWords = 0; // 单词个数
int i = 0;
// 输入单词
while (scanf("%s", words[i]) == 1)
{
if (strcmp("#", words[i]) == 0)
{
words[i] == "\\0";
break;
}
cntWords++;
i++;
}
// 选择排序法,按单词长度从小到大排序
for (int i = 0; i < cntWords; i++)
{
// 从剩下的cntWords-i个单词中查找
for (int j = i + 1; j < cntWords; j++)
{
// 若有单词长度比当前单词短,则交换它们
if (strlen(words[j]) < strlen(words[i]))
{
char temp[10]; // 临时字符数组
strcpy(temp, words[j]);
strcpy(words[j], words[i]);
strcpy(words[i], temp);
}
}
}
for (int i = 0; i < cntWords; i++)
{
printf("%s ", words[i]);
}
return 0;
}
以上是关于[PTA]实验11-1-1 英文单词排序的主要内容,如果未能解决你的问题,请参考以下文章