矩阵乘法(数据都对,可是就是零分!)
#include<stdio.h>#include<stdlib.h>
#define N 400
#define M 200
int a[N][N]={0},b[M][M]={0},c[M][M]={0},d[M][M]={0};
int main()
{
char str[512], *p;
int k,m,n, q,i,j=0,x=0,y=0;
for (i = 0; gets(str) != NULL; i++) { //gets遇到换行符或EOF结束
for (j = 0, p = str; p != NULL; p = strchr(p + 1, ' '), j++)
sscanf(p, "%d", &a[i][j]) != EOF;
if(i==0)
k=j;
else {
y=j;
if(y!=k)
n=y,x+=1;
}
}
if(x==0)
n=k;
m=i-k;
for(i=0;i<m;i++){ //b(m行k列)
for(j=0;j<k;j++)
b[i][j]=a[i][j]; //将a[][]分成所要求积的两个矩阵
}
for(i=m;i<m+k;i++){ //c(k行n列)
for(q=0;q<n;q++){
c[i-m][q]=a[i][q];
}
}
for(i=0;i<m;i++){ //i-m;j-k;q-n
for(q=0;q<n;q++){
for(j=0;j<k;j++)
{d[i][q]+=b[i][j]*c[j][q];}
if (q==n-1)
{printf("%-d \n",d[i][q]);}
else printf("%-d ",d[i][q]);
}
}
return 0;
}
先谢谢各位~ ~