2017-01-03 16 views
-7

"transpose"関数を使って3x3整数行列を転置すると思われるCコードを書きました。しかし、コードに何か問題がありますが、私はそれを理解することはできません。誰かが間違いを特定するのを助けることができますか?このプログラムをどのようにデバッグできますか?

#include <stdio.h> 
int a[3][3]; 

void main() 
{ 
    int i, j; 
    void transpose(int x[3][3]); 

    printf("Enter a 3x3 matrix:\n"); 
    for (i = 0; i <= 2; i++) 
     ; 
    { 
     for (j = 0; j <= 2; j++) 
      ; 
     { 
      scanf_s("%d", &a[i][j]); 
     } 
    } 
    printf("The original matrix is:\n"); 
    for (i = 0; i <= 2; i++) 
     printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]); 
    transpose(a); 
    printf("The transposed matrix is:\n"); 
    for (i = 0; i <= 2; i++) 
     printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]); 
    getchar(); 
    getchar(); 
} 

void transpose(int x[3][3]) 
{ 
    int t; 
    t = x[1][0]; 
    x[1][0] = x[0][1]; 
    x[0][1] = t; 
    t = x[2][0]; 
    x[2][0] = x[0][2]; 
    x[0][2] = t; 
    t = x[2][1]; 
    x[2][1] = x[1][2]; 
    x[1][2] = t; 
} 
+5

何かが間違っていることをどうやって知っていますか?コンパイラエラーまたはランタイムエラーが発生しますか?エラーは何ですか?また、C/C++は言語ではありません.CまたはC++を選択してください。 –

+4

woe and behold - シンプルなインデントが適用され、問題は私たちの顔を真っすぐに見つめます。 'for'ループは何もしません。 – StoryTeller

+1

' for(i = 0; i <= 2; i ++); 'これは空のループです。 3回何もしません。セミコロンを削除してみてください(このバグは2回表示されます) –

答えて

1

forループの後にセミコラム(;)を削除します。それらは空のforループです。彼らは何もせずにループします。

+0

これは多くの問題の1つに過ぎません –

+0

問題解決済み!ありがとうございました! – FalloutRanger

関連する問題