1009反语(20分)给出英语,并要求编写程序以颠倒文中所有单词的顺序输出。 (标题源PAT,入侵删除)输入格式:
测试包含测试用例,每行包含不超过80个字符串。 字符串由多个单词和多个空格组成,其中单词是由英文字母(区分大小写)组成的字符串,单词之间用一个空格分隔,输入时要保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出相反顺序的句子。
输入样例 :
Hello World Here I Come
输出样例 :
Come I Here World Hello
-----------------------------------------------------------------------------------------------------------------
—我的思路与解决方案—
scanf('%c”,s[i] )每次输入一个字符。 如果想输入字符串,则必须使用循环一次输入一个字符。 可以输入空格,换行符也可以用作输入。 char s[80]; scanf('%s ',s ); 可以输入字符串,但使用空格作为分隔符的gets(s; puts[s]; gets ) )位于----示例1----
for(I=0; i10; I ) scanf('%c ',s[i]; }输入:
012345
67890
{注意共输入了11个字符}
输出:
012345
678
{共输出了9个字符,说明换行也占了一个字符}
----示例2----
char s[80]; scanf('%s ',s );输入:
abcd efgh
{d与e之间有空格}
输出:
abcd
{表明空格是一个结束符,空格不能让存储进去}
----示例3----
char s[80]; gets(s; puts(s;输入:
abc def
ghi
输出:
abc def
{注:表明gets();不可以输入换行(即以换行作为结束),可以输入空格}
总结:
所以scanf('%s )、s ); 每次输入空格时都会移动到下一个空格
请参见----------------------------------------- -
代码: # include stdio.h # includestringusingnamespacestd; int main () chars(80 ); char c; int i=0,j; while(1) scanf ) ' %s ',s[i ]; c=getchar (; if(c=='n ' ) break; }for(j=I-1; j0; j-- ) printf('%s ',s[j]; printf(%s(n ),s[0]; 返回0; }