#define M MAX
#define N MAX
#define T MAX
#define S MAX
int Mult(double a[][N],int m,int n,double b[][T]int s,int t,double c[][T]) {
int i,j,k
if(n != s) {
printf("两矩阵相明销纤乘,左矩阵的列数与斗枯右矩阵的行数必须相等。\n")
return 0
}
int c
tmp.m_Mat = new double *[tmp.m_Rows]
for(int i = 0i < tmp.m_Rowsi++) tmp.m_Mat[i] = new double[tmp.m_Cols]
for(i = 0 i < m ++i) 激仿{
for(j = 0 j < n ++j) {
c[i][j] = 0
for(k = 0 k < t ++k)
c[i][j] += c[i][k] * c[k][j]
}
}
return 1
}
#include<stdio.h>typedef struct
{
int m
int n
int array[100][100]
}Ju_def
int main()
{
Ju_def Ju[11]
int i=0,m,n,k
int flag[10]
while(1)
{
flag[i]=0
printf("此宽大In put m and n:\森竖n")
scanf("%d%d",&Ju[i].m,&Ju[i].n)
while(Ju[i].m<=0||Ju[i].m>100||Ju[i].n<=0||Ju[i].m>100)
{
printf("In put m and n again:\n")
scanf("%d%d",&Ju[i].m,&Ju[i].n)
}
printf("In put your array:\n")
for(m=0m<Ju[i].mm++)
{
for(n=0n<Ju[i].nn++)
{
scanf("%d",&Ju[i].array[m][n])
if(Ju[i].array[m][n]==0)
flag[i]++
}
}
if(flag[i]==(Ju[i].m*Ju[i].n))//矩阵元素全为0才退出循环
{
flag[i]=1
break
}
else
flag[i]=0
i++
i=i%10//超过10个矩阵,则又循环到第1个。
}
for(i=1i<10i++)
{
if((Ju[i].m!=Ju[0].n)&&(flag[i]==0))
{
printf("Not satisfied the definition of matrix multiplication !\n")
return 0
}
if(flag[i])
{
break
}
for(m=0m<Ju[0].mm++)
{
for(n=0n<Ju[0].nn++)
{
Ju[10].array[m][n]=0
for(k=0k<Ju[i].mk++)
{
Ju[10].array[m][n]+=Ju[0].array[m][n]*Ju[i].array[k][n]
}
Ju[0].array[m][n]=Ju[10].array[m][n]
}
}
}
for(m=0m<Ju[0].mm++)
{
for(n=0n<Ju[0].nn++)
{
printf("%-8d",Ju[0].array[m][n])
}
printf("\巧让n")
}
}
你试试这个我的矩阵乘法是这样的了,A=A*B*C...(10个以内)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)