私はクラスで作業しているこの簡単なプログラムを持っています。次に、プログラムは、forループを使用して各値を表示する関数を呼び出し、forループを使用してすべての値を二重にする関数を呼び出して、前の表示関数を呼び出して配列を再度表示します。C - forループを使用して2d Arrayの値を入力すると、入力された値と異なる値が生成される
これはすべて機能しているようですが、2dArrayの値を初期化するときに、一定の領域に対して常に奇妙な出力が得られています。例えば
:
1,1,2,
1,2,3,
1,2,3,
1,2,5,
1,2,3
更に、倍加機能だけでさらに奇妙な結果を生成する:「1、2、3」の5行を入力した後、表示機能を呼び出すと、これは出力として生成しますユーザが入力したものとは異なる出力が得られた領域。私はディスプレイを掲載アレイ上の二重の機能の 出力として:プログラム全体で唯一の真の数学的な操作は、それが配列」の値を設定するforループを通る倍増機能である
2,4,8
2,4,6
2,4,6
2,4,10,
4,8,6
私の人生のために、私が書いたプログラムのどの部分がどうなるのか理解できません。[j] [i] =(array [j] [i] = array [j] [i] * 2)ユーザの入力を表示されたものに変更させる。 "1,2,3"以外の値を入力すると同様に奇妙な結果が得られます。誰でも何が間違っているのか分かりませんか?私はそれが欠けている非常に単純な間違いでなければならないように感じる。ここに私のソースコードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
void displayArray(int array[][4]);
void doubleArray(int array[][4]);
int main() {
int dArray[2][4];
int i, j, k;
for(i = 0; i <= 4; i++){
for(j = 0; j <= 2; j++){
printf("Enter a value for the array at position %d,%d.\n", j, i);
scanf("%d", &dArray[j][i]);
}
}
printf("Displaying your original array...\n");
displayArray(dArray);
printf("Doubling your array...\n");
doubleArray(dArray);
printf("Displaying your doubled array....\n");
displayArray(dArray);
system("pause");
}
void displayArray(int array[][4]){
int i, j;
for(i = 0; i <= 4; i++){
printf("\n");
for(j = 0; j <= 2; j++){
if(j == 2 && i == 4){
printf("%d", array[j][i]);
}
else{
printf("%d,", array[j][i]);
}
//system("pause");
}
}
printf("\n");
}
void doubleArray(int array [][4]){
int i, j;
for(i = 0; i <= 4; i++){
for(j = 0; j <= 2; j++){
array[j][i] = (array[j][i] * 2);
//printf("%d\n", array[j][i]);
}
}
}
これは、1つの.cファイル内のすべてだし、それはすべての違いを、私は++ DEVCを使用しています。
あなたの配列の範囲外に出て、*未定義の動作*につながります。 4つの要素を持つ配列を宣言すると、有効なインデックスは何ですか? –
それは何ですか?私はそれについて疑問に思っていた。それは最初の位置である[0] [0]で始まるだろうか?私はそれらをdArray [3] [5]のように宣言すべきですか?今それを試してみる。 – user7608513
あなたの質問に答えるには、有効なインデックスが[0]〜[3] – user7608513