在C ++挑战中切换字母

时间:2016-12-29 19:09:08

标签: c++ string

Challenge:给定2个输入字符串,输出三行:

  1. 每个字符串中的字符数,以空格分隔;
  2. 连接在一起的字符串;
  3. 字符串在一起,用空格分隔,两个单词的第一个字母交换。
  4. 我生成的代码:

    #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
      您的输出(标准输出)
          4 2
          abcdef
          ebcd af
      预期输出
          4 2
          abcdef
          ebcd af
      编译器消息
      错误答案

    对我来说(作为初学者),输出看起来就像预期的输出。我的代码(using namespace std;除外)是否会导致此问题无效?我还是初学者,我想知道出了什么问题。

2 个答案:

答案 0 :(得分:4)

字符串s的索引编号为0到s.length() - 1(含)。您正在使用以下条件进行迭代:i <= firstString.length()表示从字符串末尾开始读取。

答案 1 :(得分:2)

代码似乎工作正常,您也可以获得所需的输出。我认为没有什么可以出错 enter image description here