N维矩阵的乘法n维矩阵乘法:A B-1 功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果.分步实施:1) 初步完成总体设计,搭好框架,确定人机对
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/28 17:38:55
![N维矩阵的乘法n维矩阵乘法:A B-1 功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果.分步实施:1) 初步完成总体设计,搭好框架,确定人机对](/uploads/image/z/8360491-67-1.jpg?t=N%E7%BB%B4%E7%9F%A9%E9%98%B5%E7%9A%84%E4%B9%98%E6%B3%95n%E7%BB%B4%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95%EF%BC%9AA+B%EF%BC%8D1+%E5%8A%9F%E8%83%BD%EF%BC%9A%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9B%B8%E4%B9%98%E7%9A%84%E7%A8%8B%E5%BA%8F%2C%E9%A6%96%E5%85%88%E4%BB%8E%E9%94%AE%E7%9B%98%E8%BE%93%E5%85%A5%E4%B8%A4%E4%B8%AA%E7%9F%A9%E9%98%B5a%2Cb%E7%9A%84%E5%86%85%E5%AE%B9%2C%E5%B9%B6%E8%BE%93%E5%87%BA%E4%B8%A4%E4%B8%AA%E7%9F%A9%E9%98%B5%2C%E8%BE%93%E5%87%BAab%EF%BC%8D1%E7%BB%93%E6%9E%9C.%E5%88%86%E6%AD%A5%E5%AE%9E%E6%96%BD%EF%BC%9A1%EF%BC%89+%E5%88%9D%E6%AD%A5%E5%AE%8C%E6%88%90%E6%80%BB%E4%BD%93%E8%AE%BE%E8%AE%A1%2C%E6%90%AD%E5%A5%BD%E6%A1%86%E6%9E%B6%2C%E7%A1%AE%E5%AE%9A%E4%BA%BA%E6%9C%BA%E5%AF%B9)
N维矩阵的乘法n维矩阵乘法:A B-1 功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果.分步实施:1) 初步完成总体设计,搭好框架,确定人机对
N维矩阵的乘法
n维矩阵乘法:A B-1
功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,
输出ab-1结果.
分步实施:
1) 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2) 完成最低要求:建立一个文件,可完成2维矩阵的情况;
3) 一步要求:通过键盘输入维数n.有兴趣的同学可以自己扩充系统功能.
要求:1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的.
N维矩阵的乘法n维矩阵乘法:A B-1 功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果.分步实施:1) 初步完成总体设计,搭好框架,确定人机对
写过一个矩阵乘法,给你参考一下.
#include
#include
void print(int m,int p,int *p4); /*函数声明*/
int main()
{
int test_num = 0; /*要计算的次数*/
int comp_times = 0; /*已经执行计算的次数*/
int m,n,p,i,j,k,sum,x; /*m,n,p确定矩阵形式,i,j表行与列,sum求每次计算之和*/
int *p1 = NULL; /*定义3个指针并初始化*/
int *p2 = NULL;
int *p3 = NULL;
scanf ("%d",&test_num); /*读入要运算的次数*/
for( ; comp_times < test_num; comp_times++) /*当执行次数等于所要运行次数时退出*/
{
scanf("%d %d %d",&m,&n,&p); /*确定矩阵形式,m*n和n*p阶矩阵*/
p1 = malloc( (m * n) * sizeof(int) ); /*申请内存*/
p2 = malloc( (n * p) * sizeof(int) );
p3 = malloc( (m * p) * sizeof(int) );
for( i = 0; i < m * n; i++) /*读入第一个矩阵*/
{
scanf("%d",&*(p1 + i));
}
for( i = 0; i < n * p; i++) /*读入第二个矩阵*/
{
scanf("%d",&*(p2 + i));
}
/*以下计算矩阵乘法,并将每次的运算结果存入第三块内存*/
for(i = 0; i < m; i++)
{
for(j = 0; j < p; j++)
{
for (k = sum = 0; k < n; k++)
{
x = *(p1 + k + i*n) * *(p2 + k*p + j);
sum += x; /*累加求和*/
}
*(p3 + i*p + j) = sum;
}
}
print(m,p,p3);
free(p1);
free(p2);
free(p3);
}
return 0;
}
/*定义打印矩阵相乘结果的函数,变量分别为矩阵类型以及指
针p4用以实现每打p个数值后面就有一个回车,否则为空格*/
void print(int m,int p,int *p4)
{
int i = 0;
while (i < m * p)
{
if (i % p == p - 1)
printf("%d\n",*(p4 + i));
else
printf("%d ",*(p4 + i));
i++;
}
}