PAT乙级-1009 说反话 (20分) C语言

题目描述:

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

输入格式:

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

输出格式:

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

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

解题思路:

①将字符从后至前遍历,遇到空格就向后输出一个单词,注意最后要把第一个单词单独输出,因为第一个单词之前没有空格

②字符串输入要用gets,scanf输入字符串遇到空格就会停止。

注意⚠️要加头文件#include

#include
#include
#include
int main()
{
	char s[81];
	gets(s);
//	scanf这种格式串不能接收带空格的字符串,
//	比如输入"abc 123 678"的话,字符串只会接收到abc,遇空格就结束
//	使用 gets() 时,系统会将最后“敲”(Enter)的换行符从缓冲区中取出来,
//  然后丢弃,所以缓冲区中不会遗留换行符;
//  而使用scanf时,最后的“敲”会遗留在缓冲区中,如果使用scanf,
//  则需要使用gerchar()将缓冲区的Enter吃掉
	int loc=strlen(s);
	for(int i=strlen(s)-1;i>=0;i--)
	{
		if(s[i]==' ')
		{		
		for(int j=i+1;j

 

 

 

 

你可能感兴趣的:(PAT乙组,c语言,开发语言,算法,数据结构,leetcode)