5

C ++では、次のことを行う必要があります。

  • ユーザー入力から文字列を読み取り、char配列に配置します[完了]
  • 次に、その配列を関数に渡します[完了]
  • この関数は文字の順序を逆にすることになっています[問題!]
  • 次に、に戻ると、main()元の配列が新しく反転した文字で表示されます。

いくつかの制限があるため、実際に反転を行う関数を作成するのに問題があります。

  • ローカル配列変数を使用できません。
  • ポインタもありません

私の関数は元の配列のみを渡します。つまり、次のようになります。

void reverse(char word[])

編集:これまでの私のコードベースは次のとおりです。

void reverse(char word[]);

void main() 
{
  char word[MAX_SIZE];

  cout << endl << "Enter a word : ";
  cin >> word; 
  cout << "You entered the word " << word << endl;

  reverse(word); 

  cout << "The word in reverse order is " << word << endl;
}

void reverse(char myword[]) 
{
  int i, temp;
  j--;

  for(i=0;i<(j/2);i++) 
  {
    temp      = myword[i];
    myword[i] = myword[j];
    myword[j] = temp; 

    j--; 
  }
}
4

5 に答える 5

10

これはかなり宿題のように見えますが、私は提案することができます:

void reverse(char word[])
{
    int len=strlen(word);
    char temp;
    for (int i=0;i<len/2;i++)
    {
            temp=word[i];
            word[i]=word[len-i-1];
            word[len-i-1]=temp;
    }
}

または、さらに良いことに、従来のXOR実装:

void reverse(char word[])
{
    int len=strlen(word);
    for (int i=0;i<len/2;i++)
    {
        word[i]^=word[len-i-1];
        word[len-i-1]^=word[i];
        word[i]^=word[len-i-1];
    }
}
于 2009-07-15T02:01:16.017 に答える
3

これは宿題なので、答えを出すだけでなく、解決策を示します。

関数は渡されreverseたを変更できwordます。知っておく必要があることの1つは、単語の長さです(つまり、反転する文字の数がわかります)。これはstrlen()関数から取得できます。ポインタの使用が許可されていない場合は、ローカルintインデックス変数を使用できます。

于 2009-07-15T02:02:21.773 に答える
-1

C文字列について話している場合、関数は次のようになります。

void reverse(char word[],size_t wordlen)

同じ質問からの最初の答え(これはCの文を逆にするからの重複ですか?

これはあなたが探していることをしませんが、あなたをかなり近づけます!

 int ReverseString(char *rev)
         {
            if(*rev!='\0')
            {
               ReverseString(rev + 1);
               putchar(*rev);//change this.
            }

            return 1;
         }

@devinbへのクレジット。

于 2009-07-15T01:48:40.713 に答える