[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 英文单词排序的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]实验9-8 通讯录排序

[PTA]实验8-1-4 使用函数的选择法排序

[PTA]实验8-2-8 字符串排序

[PTA]实验7-1-5 选择法排序

[PTA]实验7-1-1 简化的插入排序

JAVA实验--统计文章中单词的个数并排序