0

_<------ この文字を 2D 配列で 出力しようとしましたが、

コードをコンパイルしようとしましたが、いくつかのガベージ番号が返されました。私は何か間違ったことをしていると思います...誰かがこの問題を解決するのを手伝ってくれますか?

void main (){

    int A[9][9];

    for (int i=0; i<9; i++){
        for (int j=0; j<i; j++){
            A[i][j]= '_';//I am doing this part wrong. 
        }

    }

    for (int r=0; r<9; r++) {
        for (int c=0; c<9; c++)
            cout << setw(3) << A[r][c];
        cout << endl;
    }

    system("pause");
}
4

3 に答える 3

1

演算子は、std::cout::operator<<(自動的に) フォーマットされた出力を容易にするために、いくつかのデータ型に対してオーバーロードされます。を入力するintと、数値が出力されます。をchar指定すると、文字として印刷しようとします。したがって、配列を の配列として宣言するかchar、印刷時に配列メンバーをキャストします。

cout << static_cast<char>(array[i][j]) << endl;
于 2013-04-13T05:01:06.700 に答える
1

A は int 配列です。したがって、cout は整数を出力しようとします。試すcout << char(A[r][c]);

于 2013-04-13T05:00:39.280 に答える
0

1. 「_」ではなく整数配列に ASCII 値を割り当てます。変更しなくても機能します。しかし、私はそれがよりきれいに見えると感じます。

    A[i][j]= 95; // try this instead of '_'

  1. 印刷中、cout はキャストせずに任意のデータ型を印刷できますが、印刷する文字を探しているので、明示的な変換を試みます。

    cout << setw(3) << char(A[r][c]);
    
  2. 使用しているコンパイラについてはわかりませんが、配列を初期化して、ガベージ値が出力を改ざんしないようにすることをお勧めします

于 2013-04-13T05:15:49.303 に答える