0

この特定のコード行を理解しようとしています。

これに3つの割り当てステートメントが必要な理由を理解するのに苦労しています。必要最低限​​だと思っているのですが、なかなか頭に入ってきません。

誰かがこれの各行が何をするのかを英語で教えてくれたら、それは素晴らしいことです.

ありがとう。

void to_upper(char *word) {

  int index = 0;

  while (word[index] != '\0') {
    word[index] = toupper(word[index]);
    index++;
  }
}

int length(char *word) {

  int index=0;

  while (word[index] != '\0')
    index++;
  return index;
}

void reverse(char *word) {
  int index, len;
  char temp;
  len = length(word);
  for (index=0; index<len/2; index++) {
    temp = word[index];
    word[index] = word[len-1-index];
    word[len-1-index] = temp;
  }
}
4

2 に答える 2

2
  for (index=0; index<len/2; index++) {
1    temp = word[index];
2    word[index] = word[len-1-index];
3    word[len-1-index] = temp;
  }

1: の値を保存しますword[index](後で必要になります)

2: 配列の中点から等距離にある単語配列の値をword[index]

3: の元の値をword[index]配列の中点から等距離の位置に格納します

例: ifの場合index = 0、最初の単語が最後の単語と交換されます。

于 2013-02-19T02:31:30.323 に答える
1

基本的には C++ 101 のものであるため、コードのlengthとの部分を理解していると仮定します。to_upper

//Well, just be the title, I would assume this function reverses a string, lets continue.
void reverse(char *word) {
  int index, len;  //declares 2 integer variables
  char temp;       //creates a temporary char variable
  len = length(word); //set the length variable to the length of the word
  for (index=0; index<len/2; index++) {
    //Loop through the function, starting at 
    //index 0, going half way through the length of the word
    temp = word[index]; //save the character at the index
    word[index] = word[len-1-index]; //set the character at the index in the array 
                                     //to the reciprocal character.
    word[len-1-index] = temp; //Now set the reciprocal character to the saved one.
  }
}

//This essentially moves the first letter to the end, the 2nd letter to the 2nd 
//to end, etc.

したがって、「レース」という単語がある場合、「r」を「e」に置き換え、次に「a」を「c」に置き換えて、最後の文字列「ecar」を取得するか、逆方向にレースします。

3 つの割り当てが必要な理由を理解するにword[index] = word[len-1-index]は、両方の場所で then を設定すると、同じ文字が存在します。これは、「race」を「racr」に設定するようなものです。次に を設定word[len-1-index] = word[index]すると、同じ文字を最初の部分に戻すだけなので、「racr」から「racr」に移動します。文字列の先頭の文字を置き換えることができるように、元の値を保存する一時変数が必要です。

于 2013-02-19T02:35:10.750 に答える