0

配列を逆にする機能がありますが、問題があると思います。これを整理するために正しい道を案内してください。

働き:

void reversearr (int arr[], int arrlen)

    {
        int a, b, arrtemp[arrlen];
        b=arrlen;
        for (a=0; a<=arrlen; a++)
        {
            arr[a] = arrtemp[b];
            b--;
        }
        printf("\nthe reversed array is");

        for(b=0; b<arrlen; b++)
        {
            printf("%d",arrtemp[b]);
        }
    }

関数はこのように呼び出されます

reversearr(arr,max);
4

6 に答える 6

3

初期化されていないコピー元ですarrtemp

私はあなたが次のようなものが欲しいと思います

void reversearr (int arr[], int arrlen)
{
    int a;
    for (a=0; a<arrlen/2; a++)
    {
        int tmp = arr[arrlen-1-a]
        arr[arrlen-1-a] = arr[a]
        arr[a] = tmp;
    }
}
于 2012-10-09T13:55:23.790 に答える
3
void reversearr (int arr[], int arrlen)
{  
    int a, tmp;
    for (a = 0; a < arrlen / 2; ++a)
    {
         tmp = arr[a];
         arr[a] = arr[arrlen - a - 1];
         arr[arrlen - a - 1] = tmp;
    }
}
于 2012-10-09T13:56:33.047 に答える
2

の2つの問題

    int a, b, arrtemp[arrlen];
    b=arrlen;
    for (a=0; a<=arrlen; a++)
    {
        arr[a] = arrtemp[b];
        b--;
    }
  1. arrtemp[arrlen]が範囲外である場合、有効なインデックスは0〜arrlen - 1
  2. arrtemp初期化されていないものから元のにコピーしていarrます。
于 2012-10-09T13:56:08.220 に答える
1

有効なインデックスは0〜なのでarrlen - 1、次のようになります。

for(a = 0; i <= arrlen; a++)

オフバイワンエラーがあります。必要<です。

また、そのような動的な長さの配列を使用することは、Cではかなり「新しい」ことであることに注意してください。問題はないはずですが、C99コンパイラが必要です。単一の一時的な要素を単に交換するO(1)(ストレージ内)メソッドと比較して、そのようにすることには利点はありません。

于 2012-10-09T13:55:22.930 に答える
1

逆を格納するために間違った配列を使用しています。次のコードを試してください。

void reversearr (int arr[], int arrlen)

    {
        int a, b, arrtemp[arrlen];
        b=arrlen;
        for (a=0; a<=arrlen; a++)
        {
            arrtem[a] = arr[b];
            b--;
        }
        printf("\nthe reversed array is");

        for(b=0; b<arrlen; b++)
        {
            printf("%d",arrtemp[b]);
        }
    }
于 2012-10-09T13:56:57.890 に答える
0

JavaScriptで、配列があり、すべての要素の文字列を逆にする必要がある場合:

var arr = ['woow is great budd','mu me lelo','wikindi'];

function reverseString(str){
    return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);
}

for(i=0;i<arr.length;i++){
   console.log(reverseString(arr[i]));
}
于 2019-01-31T15:05:39.817 に答える