这道题很早之前做的,但是还是改不出最后一个测试点说的答案错误。感觉题目很简单,就是不知道是否还有情况没考虑。
算法思想
1.我是用二维数组存储输入的这行字符串,因为限制80个字符(只有大小写字母和空格),所以定义二维数组时就行列最大都定义为80,后面输入的时候判断键入字符的个数,到80个就停止键入。
2. 输入时遇到空格就开始存入下一行数组。遇到换行就结束输入。记录空格的数目,方便后面输出空格
3. 输出时就倒序输出,除非是只键入空格。倒序输出时注意最后一个字符串后面没有空格。
我感觉自己考虑情况挺全面的:(1)正常输入字母和空格(2)只输入空格(3)啥都没输入
但是还是有答案错误这种情况。代码仅供参考,有错请留言区发言
代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char str[80][80]; //用二维数组存储
int i=0,j=0,m=0;
char c;
while(i<80)
{
c=getchar();
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
ungetc(c,stdin);
cin>>str[i];
j=j+1;
}
if(c==' ')
{
i=i+1;
j=j+1;
m=m+1;
}
if(c=='\n')
{
break;
}
if(j==79)
{
break;
}
}
while(i>=0&&m!=j) //倒序输出
{
cout<<str[i];
if(i!=0) {cout<<' ';}
i=i-1;
}
if(m==j) //只输入空格
{
for(;m>=0;m--)
{
cout<<' ';
}
}
return 0;
}
结果截图:
害!改代码找bug比写还费时间。