您的位置:首页 > 其它

文件读写方式实现矩阵相乘

2013-06-01 11:33 369 查看
#include <stdio.h>
const int M = 5;
const int N = 4;
const int L = 3;

void main(){
int i = 0,j = 0,k;
FILE *fp1,*fp2;
int matr1[M]
,matr2
[L],matr3[M][L];

//从文本文件1中读入矩阵
printf("The array 1 is :\n");
if((fp1 = fopen("../array1.txt","r"))==NULL)
{
printf("Can not open file!\n");

}
for (i=0;i<M;i++){
for (j=0;j<N;j++){
fscanf(fp1,"%d",&matr1[i][j]);
}
}

for (i=0;i<M;i++){
for (j=0;j<N;j++){
printf("%d\t",matr1[i][j]);

}
printf("\n");
}
fclose(fp1);

//从文本文件2中读入矩阵
printf("The array 2 is:\n");
if((fp2 = fopen("../array2.txt","r"))==NULL)
{
printf("Can not open file!\n");

}
for (i=0;i<N;i++){
for (j=0;j<L;j++){
fscanf(fp2,"%d",&matr2[i][j]);
}
}

for (i=0;i<N;i++){
for (j=0;j<L;j++){
printf("%d\t",matr2[i][j]);

}
printf("\n");
}
fclose(fp2);

//实现矩阵相乘,并将结果矩阵写入新的文件
printf("The result is :\n");
FILE* fp;
if((fp = fopen("../result.txt","a+"))==NULL)
{
printf("Can not open file!\n");

}

for(i = 0;i<M;i++){
for(j = 0;j<L;j++){
matr3[i][j] = 0;
for(k = 0;k<N;k++){
matr3[i][j] += matr1[i][k]*matr2[k][j];
}

printf("%d\t",matr3[i][j]);

}

printf("\n");
}

for(i = 0;i<M;i++){
for(j = 0;j<L;j++){
fprintf(fp,"%d\t",matr3[i][j]);
}
fputs("\n",fp);
}

fclose(fp);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: