我有这个问题的问题我不知道我的代码出了什么问题我每次都不知道什么是输出的格式我会得到演示错误你能帮我解决这个问题我很抱歉我的代码有点令人困惑
这是问题http://sharecode.ir/section/problemset/problem/1208
的链接#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
string temp=" ";
bool cheak3=false,cheak4=false;
int n,num;
cin>>n;
while(n != 0)
{
if(cheak4 == true)
cout<<endl;
cheak4=true;
cin>>num;
cheak3=false;
string cheak1,cheak;
while(1)
{
if(num ==-1)
break;
getline(cin,temp);
for(int i=0 ; i<temp.size() ; i++)
{
if(temp[i] != ' ')
cheak.push_back(temp[i]);
else
{
reverse(cheak.begin(),cheak.end());
cheak1+=cheak;
cheak.clear();
if(cheak3 == true)
cheak1.push_back(' ');
}
}
reverse(cheak.begin(),cheak.end());
cheak1+=cheak;
cheak.clear();
num--;
if(cheak3 == true)
{
cheak1.push_back(' ');
cout<<cheak1<<endl;
cheak1.clear();
}
cheak3=true;
}
n--;
}
}
答案 0 :(得分:0)
我认为棘手的部分是你应该在输出块之间打一个空行。
你的代码逻辑太复杂了!这是我解决这个问题的方法:
#include <iostream>
#include <string>
using namespace std;
int main() {
int N, lines;
string word;
cin>>N;
while (N--) {
cin>>lines;
while (lines--) {
char end;
do {
cin >> word;
end = cin.get();
for (int i=word.length()-1;i>=0;i--) cout<<word[i];
cout << end;
} while (end != '\n');
}
if (N) cout << endl;
}
return 0;
}
第if (N) cout << endl;
行确保为除最后一个输出块之外的每个输出块打印换行符(当N等于0时)。
读完一行中的每个单词后,您可以使用cin.get();
来确定下一个字符。如果是空格,则打印并阅读下一个单词。否则,如果它是\n
打印它并转到下一行! :)