Challenge:给定2个输入的字符串,输出三行:切换字母
- 在每个字符串的字符数,用空格隔开;
- 串连在一起;
- 将字符串放在一起,用空格分隔,并将两个字的第一个字母交换。
代码我公司生产的:
#include <iostream>
#include <string>
using namespace std;
int main() {
// Complete the program
string firstString, secondString;
cin>>firstString>>secondString;
cout<<firstString.length()<<" "<<secondString.length()<<"\n";
cout<<firstString<<secondString<<"\n";
string wierdString;
wierdString = secondString[0];
for (int i = 1; i <= firstString.length(); i++) {
wierdString += firstString[i];
}
wierdString = wierdString + " " + firstString[0];
for (int j = 1; j <= secondString.length(); j++) {
wierdString += secondString[j];
}
cout << wierdString;
return 0;
}
测试用例:
输入(stdin)
abcd ef
你的输出(stdout)
4 2
abcdef
ebcd af
期望输出
4 2
abcdef
ebcd af
编译消息
错误答案
对于我(作为初学者)来说,输出看起来就像预期的输出。我的代码有问题(using namespace std;
除外)会导致此问题无效吗?我仍然是初学者,我想知道什么是错的。
你可能正在输出一些更多(不可见的)字符的地方。检查换行符等 –
@AlexanderTorstling我尝试了将预期的输出和收到的输出复制到Notepad ++中,并打开所有隐藏的字符。他们似乎匹配(每行结尾的CR/LF)。 –
为什么所有的循环代码只是为了交换值?有'std :: swap'可以为你做到这一点。 'std :: swap(firstString [0],secondString [0]);' – PaulMcKenzie