0

我一直在尝试_在二维数组中打印出 <----- 这个字符......但是当我

尝试编译代码,它返回了一些垃圾数字。我想我做错了什么......谁能帮我解决这个问题?

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

A 是一个整数数组。所以 cout 会尝试打印一个整数。尝试cout << char(A[r][c]);

于 2013-04-13T05:00:39.280 回答
1

运算符针对多种数据类型进行了重载,std::cout::operator<<以便于(自动)格式化输出。如果你给它一个int,那么它会打印一个数字。如果你给它一个char,它会尝试将它打印为一个字符。因此,要么将您的数组声明为 的数组char,要么在打印时强制转换数组成员:

cout << static_cast<char>(array[i][j]) << endl;
于 2013-04-13T05:01:06.700 回答
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 回答