-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]また、単一の であるのみを返しますcharstd::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 に答える