关于网友提出的“ 用int a[3][3],和int a[3][3]={0}为什么结果会不一样”问题疑问,本网通过在网上对“ 用int a[3][3],和int a[3][3]={0}为什么结果会不一样”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 用int a[3][3],和int a[3][3]={0}为什么结果会不一样
描述:
一道矩阵相乘的题
#include
int main()
{
int a[3][3]={0};
int b[3][3]={0};
int c[3][3]={0};
int i,j,k;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(j==2)
printf("%d\n",c[i][j]);
else
printf("%d ",c[i][j]);
}
return 0;
}
能够得到正确结果
但是如果把数组定义换成int a[3][3]就得不到正确答案
解决方案1: a和b是scanf输入赋值,不初始化也没事。c没有初始化。里面是垃圾值,不是0
解决方案2: c数据 += 要赋初值吧
解决方案3: a和b数组可以不初始化,但是c数组必须要初始化。数组不初始化就是随机值,随机值加上a和b的值,就是不确定了。
a和b数组从终端输入,即使不初始化,是随机值,但是会被终端输入的数据覆盖。
以上介绍了“ 用int a[3][3],和int a[3][3]={0}为什么结果会不一样”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4484766.html