PAT (Basic Level) Practice (中文)1009 说反话 (20分)(C语言版)

1009 说反话 (20分)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

代码:

#include<stdio.h>
#include<string.h>
/******************************************************************** 
自己想到的:
	1、用二维数组,用空格来判断单词的分割,但内存开销相对来说大了一些。
	2、用一维数组来存输入的字符串,倒序输出。 
网上其他方法:用栈。 

********************************************************************/

int main(void)
{
	//用第二种方法。
	char a[81] = "\0";
	int n;
	int i, j, k;
	
	gets(a); 
	
	n = strlen(a);
	i = n;
	k = n;
	while(--i)
	{
		if(a[i] == ' ')
		{
			for(j = i + 1; j < k; j++)	printf("%c", a[j]);
			printf(" ");
			k = i;
		}
	}
	
	while(i < k){printf("%c", a[i++]);}
	printf("\n");
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37961252/article/details/109077696