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