- 论坛徽章:
- 0
|
无论是第一个还是第二个,都是错的
a[j],i是行下标,j是列下标.
0 <= i <=4
0 <= j <= 3
由于二维数组的内存实际上还是连续分配的,实际上仍旧分配了5 x 4 = 20个4字节的单元--共80个字节.这就是你为什么没报错的原因,你的写入操作仍旧是在你分配的空间上做.但你的程序逻辑上已经出错了.
应当是
- for (i = 0; i < 5; i++)
- for (j = 0; j < 4; j++)
- {
- printf("%d%d", i, j);
- scanf("%d", &a[i][j]);
- }
复制代码
a[0][0] a[0][1] a[0][2] a[0][3] -->
a[1][0] a[1][1] a[1][2] a[1][3] -->
a[2][0] a[2][1] a[2][2] a[2][3] -->
a[3][0] a[3][1] a[3][2] a[3][3] -->
a[4][0] a[4][1] a[4][2] a[4][3]
5 行 4 列
按你的代码,你认为数据时这样布局的
a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] --->
a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] --->
a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] --->
a[3][0] a[3][1] a[3][2] a[3][3] a[3][4]
4行5列
c不是pascal,它的数组元素的存储是采用按行存储的方式,而不是按列存储.
错误的原因就是你没搞清楚,第一维是行下标,第二维是列下标.
scanf:floating point formats not linked
Abnormal program termination
至于这个错误提示,我怀疑是你的编译器太老了,你在用一种需要链接浮点库的编译器.
[ 本帖最后由 renstone921 于 2005-12-29 22:39 编辑 ] |
|