C语言4X4矩阵相乘问题!

#include <stdio.h>//指定头文件
void main()
{
int a[4][4],b[4][4],c[4][4];//定义三个二维数组作为矩阵
int i,j,k;//定义三个变量用于循环
int s[4][4]={0};
printf("请输入矩阵A:\n");
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
printf("\n");
printf("请输入矩阵B:\n");
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&b[i][j]);
}
}
printf("矩阵A:\n");
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
printf("%d ",a[i][j]);
if(j==4)
printf("\n");

}
}
printf("\n");
printf("矩阵B:\n");
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
printf("%d ",b[i][j]);
if(j==4)
printf("\n");
}
}
printf("\n");
printf("矩阵C=A*B:\n");
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
for(k=1;k<=4;k++)
{
s[i][j]+=a[i][k]*b[k][j];
}
c[i][j]=s[i][j];
printf("%d ",c[i][j]);
if(j==4)
printf("\n");
}

}

}

为什么矩阵C到第三行第四列开始就出错了呢?
谁给解答下

#include <stdio.h>

void main()

{

int a[4][4],b[4][4],c[4][4];

int i,j,k;int s[4][4]={0};

printf("请输入矩阵A:\n");

for(i=0;i<=3;i++)

{

for(j=0;j<=3;j++)

{

printf("a[%d][%d]=",i,j);

scanf("%d",&a[i][j]);

}

}

printf("\n");

printf("请输入矩阵B:\n");

for(i=0;i<=3;i++)

{

for(j=0;j<=3;j++)

{

printf("a[%d][%d]=",i,j);

scanf("%d",&b[i][j]);

}

}

printf("矩阵A:\n");

for(i=0;i<=3;i++)

{

for(j=0;j<4;j++)

{

printf("%d ",a[i][j]);

if(j==3)

printf("\n");

}

}

printf("\n");

printf("矩阵B:\n");

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

printf("%d ",b[i][j]);

if(j==3)

printf("\n");

}

}

printf("\n");

printf("矩阵C=A*B:\n");

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

for(k=0;k<4;k++)

{

s[i][j]+=a[i][k]*b[k][j];

}

c[i][j]=s[i][j];

printf("%d ",c[i][j]);

if(j==3)

printf("\n");

}

}


}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-26
你从上面输入就不对吧??
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}

数组的下标是从0开始的,你定义的行数和列数都是4,那么 下标的范围是0-3,怎么会出现a[4][4]呢??
第2个回答  2014-03-26
溢出了,数组的下标是从0开始的
相似回答