C语言实现有两个分别是2行3列和3行2列的矩阵,其数据均由键盘输入,这两个矩阵相乘后是一个2*2的矩阵
123121*1+2*3+3*51*2+2*4+3*62228*34==456564*1+5*3+6*54*2+5*4+6*64964...
1 2 3 1 2 1*1+2*3+3*5 1*2+2*4+3*6 22 28
* 3 4 = =
4 5 6 5 6 4*1+5*3+6*5 4*2+5*4+6*6 49 64 展开
* 3 4 = =
4 5 6 5 6 4*1+5*3+6*5 4*2+5*4+6*6 49 64 展开
2个回答
展开全部
这是程序
#include <stdio.h>
int a[2][3],b[3][2],c[2][2]; //输入a和b,输出矩阵c
int temp; //计算c中每个元素时的中间变量
void main()
{
int i,j,k; //循环变量
//键盘输入矩阵a
printf("请输入矩阵a:"); //按行输入
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
scanf("%d",&a[i][j]);
}
}
//键盘输入矩阵b
printf("请输入矩阵b:"); //按行输入
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
{
scanf("%d",&b[i][j]);
}
}
//计算c=a*b
for (i=0; i<2; i++)
{
for (j=0; j<2; j++)
{
temp=0;
for (k=0; k<3; k++)
{
temp+=a[i][k]*b[k][j];
}
c[i][j]=temp;
}
}
printf("矩阵c为:\n");
printf("%d %d",c[0][0],c[0][1]);
printf("\n");
printf("%d %d",c[1][0],c[1][1]);
printf("\n");
}
经过VC++ 6.0调试通过的,你看行不行?
#include <stdio.h>
int a[2][3],b[3][2],c[2][2]; //输入a和b,输出矩阵c
int temp; //计算c中每个元素时的中间变量
void main()
{
int i,j,k; //循环变量
//键盘输入矩阵a
printf("请输入矩阵a:"); //按行输入
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
scanf("%d",&a[i][j]);
}
}
//键盘输入矩阵b
printf("请输入矩阵b:"); //按行输入
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
{
scanf("%d",&b[i][j]);
}
}
//计算c=a*b
for (i=0; i<2; i++)
{
for (j=0; j<2; j++)
{
temp=0;
for (k=0; k<3; k++)
{
temp+=a[i][k]*b[k][j];
}
c[i][j]=temp;
}
}
printf("矩阵c为:\n");
printf("%d %d",c[0][0],c[0][1]);
printf("\n");
printf("%d %d",c[1][0],c[1][1]);
printf("\n");
}
经过VC++ 6.0调试通过的,你看行不行?
展开全部
#include<stdio.h>
int main()
{
int i1,i2,j1,j2,i,j,k;
int a[10][10]={0},b[10][10]={0},c[10][10]={0};
printf("请输入第一个矩阵的行数和列数:");
scanf("%d%d",&i1,&j1);
printf("请输入第一个矩阵的元素:");
for (i=0;i<i1;i++)
for (j=0;j<j1;j++)
scanf("%d",&a[i][j]);
printf("请输入第二个矩阵的行数和列数:");
scanf("%d%d",&i2,&j2);
printf("请输入第二个矩阵的元素:");
for (i=0;i<i2;i++)
for (j=0;j<j2;j++)
scanf("%d",&b[i][j]);
if (j1==i2)
{
for (i=0;i<i1;i++)
{
for (j=0;j<j2;j++)
{
for (k=0;k<j1;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
printf("%d ",c[i][j]);
}
printf("\n");
}
}
else printf("输入错误!\n");
return 0;
}
//如果默认知道行数和列数,即用2行3列和3行2列的矩阵相乘,可以直接写成:
#include<stdio.h>
int main()
{
int i,j,k;
int a[10][10],b[10][10],c[10][10]={0};
for (i=0;i<2;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]);
for (i=0;i<3;i++)
for (j=0;j<2;j++)
scanf("%d",&b[i][j]);
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
for (k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
if (j<1) printf("%d ",c[i][j]);
else printf("%d",c[i][j]); //这样写是为了避免多输出空格
//不过视觉上没什么影响
}
printf("\n");
}
return 0;
}
//然后直接运行,输入数据就行了...
int main()
{
int i1,i2,j1,j2,i,j,k;
int a[10][10]={0},b[10][10]={0},c[10][10]={0};
printf("请输入第一个矩阵的行数和列数:");
scanf("%d%d",&i1,&j1);
printf("请输入第一个矩阵的元素:");
for (i=0;i<i1;i++)
for (j=0;j<j1;j++)
scanf("%d",&a[i][j]);
printf("请输入第二个矩阵的行数和列数:");
scanf("%d%d",&i2,&j2);
printf("请输入第二个矩阵的元素:");
for (i=0;i<i2;i++)
for (j=0;j<j2;j++)
scanf("%d",&b[i][j]);
if (j1==i2)
{
for (i=0;i<i1;i++)
{
for (j=0;j<j2;j++)
{
for (k=0;k<j1;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
printf("%d ",c[i][j]);
}
printf("\n");
}
}
else printf("输入错误!\n");
return 0;
}
//如果默认知道行数和列数,即用2行3列和3行2列的矩阵相乘,可以直接写成:
#include<stdio.h>
int main()
{
int i,j,k;
int a[10][10],b[10][10],c[10][10]={0};
for (i=0;i<2;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]);
for (i=0;i<3;i++)
for (j=0;j<2;j++)
scanf("%d",&b[i][j]);
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
for (k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
if (j<1) printf("%d ",c[i][j]);
else printf("%d",c[i][j]); //这样写是为了避免多输出空格
//不过视觉上没什么影响
}
printf("\n");
}
return 0;
}
//然后直接运行,输入数据就行了...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询