矩阵相乘的结果C语言程序
C语言程序设计实验报告
实验名称数组实验
学 院机械与储运工程学院专业班级机电11-4卓越姓 名翟城城学 号2011011881任课教师连远峰实验时间2012年4月18日
实验目的
掌握数组的定义、赋值和输入/输出方法。
掌握字符数组的使用,了解字符数组的使用。
掌握语数组有关的算法(各种排序算法)。
实验内容
问题:编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。
算法描述流程图
源程序
#include
void main()
{
int m,n,p,i,j,k;
int a[10][10],b[10][10],c[10][10]={0};
printf("请输入m,n,p的数值:\n");
scanf("%d%d%d",&m,&n,&p);
printf("请输入第一个数组:\n");
for(i=0;i
for(j=0;j
scanf("%d",&a[i][j]);
printf("请输入第二个数组:\n");
for(i=0;i
for(j=0;j
scanf("%d",&b[i][j]); //给数组a,b赋初值
printf("第一个数组为:\n");
for(i=0;i
{
for(j=0;j
printf("%4d",a[i][j]);
printf("\n");
}
printf("第二个数组为:\n");
for(i=0;i
{
for(j=0;j
printf("%4d",b[i][j]);
printf("\n");
} //打出数组a,b
for(i=0;i
for(j=0;j
for(k=0;k
c[i][j]+=a[i][k]*b[k][j];
printf("数组a与b相乘得到c数组为:\n");
for(i=0;i
{
for(j=0;j
printf("%4d",c[i][j]);
printf("\n"); //输出数组c
}
}
测试数据
m=3,n=4,p=2;
a[10][10]={{1,2,3,10}{4,5,6,11}{7,8,9,12}}
b[10][10]={{1,2}{3,4}{5,6}{7,8}}
运行结果
出现问题及解决方法
问题:n,m,p为变量,不能直接用来定义数组
解决方案:取最大空间,防止外溢,即数组a,b 都取十行十列
实验心得
在实践实验中才能熟练掌握C语言知识。