C语言二维数组初始化错误及解决方法
#include<stdio.h> #define int a[3][2] int main() { int i,j,m=0,l,h; printf('Enter 6 integers:\n'); for(i=0;i<3;i++) { for(j=0;j<2;j++) scanf('%d',&a[i][j]); } for(i=0;i<3;i++) { for(j=0;j<2;j++) {printf('%4d',a[i][j]); if(m<a[i][j]) { m=a[i][j]; l=i; h=j; } printf('\n'); } } printf('max=a[%d][%d]=%d',l,h,m); }
错在哪了内容:在代码中定义了一个二维数组a[3][2],但是没有给数组元素进行初始化。在scanf函数中,对数组元素进行了赋值操作,但是由于数组没有初始化,所以数组中的元素是未知的值。因此,在找到最大值时,可能会出现错误的结果。
正确的做法是在定义数组时同时进行初始化,例如:
int a[3][2] = {{0}};
或者在使用数组前,先将数组元素初始化为一个较小的值,例如:
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
a[i][j] = INT_MIN;
}
原文地址: https://www.cveoy.top/t/topic/pfs2 著作权归作者所有。请勿转载和采集!