-3

我用 C++ 写了这段代码

   #include <iostream>
   using namespace std;

    char convert1 (char x[])
    {
    for ( int i =0; i<5;i++)
    {
    if ( i/2 ==0 )
    x[i] =tolower(x[i]);
    else
    x[i] = toupper(x[i]);

    return x[i];

}
    }

   int main()
   {
      char z[] = "REDCA";
      cout<<convert1(z); 
      return 0;
   }

它会工作,但它总是只打印第一个字母 R 的小写字母。但我想打印像这个 rEdCa 这样的完整单词

所以我该如何修改它

4

2 回答 2

3

你想要if(i%2 == 0)而不是if(i/2 == 0)(可能是错字)。

此外,您只是返回x[i],这是一个单一的char. 更好的主意是使用std::string而不是char *,但您也可以使用它char *。(我不会提供完整的代码,正如我们在您之前的问题中确定的那样,这是您的任务,您应该这样做,而不是我们。)

于 2013-02-10T21:14:01.470 回答
1

convert1的返回值为char。所以,cout << convert1(x)看到 a char,因此你得到第一个r

你可能想要这样的东西:

template<size_t S>
char const* convert1(char (&x)[S])
{
    for(int i = 0; i < S; ++i)
    {
        if(i%2 ==0) {
            x[i] = tolower(x[i]);
        } else {
            x[i] = toupper(x[i]);
        }
    }

    return x;
}

想要更好,使用std::string.

于 2013-02-10T21:15:56.167 回答