C语言求助!关于用数组求两个3*3矩阵相乘的问题,急!!!解决问题的再追加分!
请帮忙编写一个C语言程序,求两个3*3矩阵a,b相乘所得的矩阵。注意输入输出方式!(我被这里难住了)输入的两个矩阵的9个数字要排成一行,而输出的矩阵c要求用正常的3*3格...
请帮忙编写一个C语言程序,求两个3*3矩阵a,b相乘所得的矩阵。注意输入输出方式!(我被这里难住了)输入的两个矩阵的9个数字要排成一行,而输出的矩阵c要求用正常的3*3格式输出。还有,请只用数组编写,不用指针。编写时请加上注释,本人才开始学,有点菜,烦请编程达人们多多指教!谢谢!
展开
2个回答
展开全部
跟着步骤输入就好。可以做任两个矩阵的乘法。
#include <stdio.h>
void main()
{
int m,n,q,i,j,k,s=0,t=0,a[9][9],b[9][9],c[9][9];
printf("请输入a矩阵的行数m和列数n以及b矩阵的行数n和列数q:\n");
scanf("%d%d%d",&m,&n,&q);
printf("请输入a矩阵的m*n个数:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",a[i]+j);
}
printf("请输入b矩阵的n*q个数:\n");
for(i=0;i<n;i++)
{
for(j=0;j<q;j++)
scanf("%d",b[i]+j);
}
for(i=0;i<m;i++)
for(j=0;j<q;j++)
{
for(k=0;k<n;k++)
{
t=a[i][k]*b[k][j];
s=s+t;
}
c[i][j]=s;
s=0;
}
for(i=0;i<m;i++)
{
for(j=0;j<q;j++)
printf("%6d",c[i][j]);
printf("\n");
}
}
#include <stdio.h>
void main()
{
int m,n,q,i,j,k,s=0,t=0,a[9][9],b[9][9],c[9][9];
printf("请输入a矩阵的行数m和列数n以及b矩阵的行数n和列数q:\n");
scanf("%d%d%d",&m,&n,&q);
printf("请输入a矩阵的m*n个数:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",a[i]+j);
}
printf("请输入b矩阵的n*q个数:\n");
for(i=0;i<n;i++)
{
for(j=0;j<q;j++)
scanf("%d",b[i]+j);
}
for(i=0;i<m;i++)
for(j=0;j<q;j++)
{
for(k=0;k<n;k++)
{
t=a[i][k]*b[k][j];
s=s+t;
}
c[i][j]=s;
s=0;
}
for(i=0;i<m;i++)
{
for(j=0;j<q;j++)
printf("%6d",c[i][j]);
printf("\n");
}
}
2013-05-19
展开全部
#include<stdio.h>
void main()
{
int i,j,k=0; //一位数组初始化
int a[9]={12,34,23,34,45,34,35,45,34};
int b[9]={45,26,34,45,87,34,98,45,90};
//输出一位数组a[9] b[9]
printf("a[9]:");
for(i=0;i<9;i++)
printf("%d ",a[i]); printf("\n\n");
printf("b[9]:");
for(i=0;i<9;i++)
printf("%d ",b[i]);
//定义3*3二维数组
int c[3][3];
//依照3*3矩阵格式打印结果
printf("\n结果为:\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
//两个一位数组相乘的结果存入二维数组c[3][3]
c[i][j]=a[k]*b[k];
//k的主要目的是控制a[k]*b[k],
//这样可以取出a[0]-a[8],b[0]-[8]的值相乘存入数组
k++;
// %-6d只是控制输出格式好看点,没什么作用,直接写%d就可以
printf("%-6d",c[i][j]);
}
printf("\n");
}
}
void main()
{
int i,j,k=0; //一位数组初始化
int a[9]={12,34,23,34,45,34,35,45,34};
int b[9]={45,26,34,45,87,34,98,45,90};
//输出一位数组a[9] b[9]
printf("a[9]:");
for(i=0;i<9;i++)
printf("%d ",a[i]); printf("\n\n");
printf("b[9]:");
for(i=0;i<9;i++)
printf("%d ",b[i]);
//定义3*3二维数组
int c[3][3];
//依照3*3矩阵格式打印结果
printf("\n结果为:\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
//两个一位数组相乘的结果存入二维数组c[3][3]
c[i][j]=a[k]*b[k];
//k的主要目的是控制a[k]*b[k],
//这样可以取出a[0]-a[8],b[0]-[8]的值相乘存入数组
k++;
// %-6d只是控制输出格式好看点,没什么作用,直接写%d就可以
printf("%-6d",c[i][j]);
}
printf("\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询