分词并输出排序后的单词

本题实现,输入一个包含空格的多单词字符串,单词与单词之间用1个或多个空格分隔。请将字符串中用空格分隔的单词排序后在屏幕上输出来。 要求用指针完成函数中各参数的传递与访问,自定义函数头和函数体中不得出现数组下标形式的表示法。

函数接口定义:

 
  

int split_sort(char *str,char **pStr);

函数对字符串中的单词进行分割,并按字典顺序输出排序后的单词,函数返回字符串中单词的数目。str用于接收实参字符串,pStr用于存放分割后的各单词对应字符串的首地址。下面函数的定义部分框架与花括号部分已经给出了,只需给出函数{...}之中的部分。

裁判测试程序样例:

 
  

在这里给出函数被调用进行测试的例子。例如: #include int split_sort(char *str,char **pStr); int main(void) { char arr[101]={0},*pX[50]; char **p=pX; int wordNum; gets(arr); wordNum=split_sort(arr,p); for(;p

输入样例:

在这里给出一组输入。例如:

china america japan egypt germany

输出样例:

在这里给出相应的输出。例如:

america china egypt germany japan 
int i = 0, j = 0, count = 0;
	//找出单词,并存入pStr中;
	for (i = 0; str[i] != '\0'; i++)
	{
		if (str[i] != ' ')
		{
			pStr[j] = &str[i]; j++;//存入单词首地址;
			count++;//单词数目;
			for (1; str[i] != '\0' ; i++)
			{
				if (str[i] == ' ')
				{
					str[i] = '\0'; break;//为这个单词结尾
				}
			}
		}
	}
     //对字符串进行大小比较
	char* s = NULL;//中间体交换指针
	for (i = 0; i < count - 1; i++)
	{
		for (j = 0; j < count - i - 1; j++)
		{
			if (strcmp(pStr[j],pStr[j + 1]) > 0)
			{
				s = pStr[j];
				pStr[j] = pStr[j + 1];
				pStr[j + 1] = s;
			}
		}
	}
	return count;

 

你可能感兴趣的:(PTA,c语言作业,c语言,c++,算法)