一到C语言题目,在线等,挺急的
【问题描述】文本文件data.txt中保存了一组整数,其中解释为:前两个数表示一个矩阵(记为A)的行数和列数(记为n和m),随后是矩阵的先按行再按列排列的元素数据,接着的...
【问题描述】文本文件data.txt中保存了一组整数,其中解释为:前两个数表示一个矩阵(记为A)的行数和列数(记为n和m),随后是矩阵的先按行再按列排列的元素数据,接着的两个数是有一个矩阵(记为B)的行数和列数(记为m和k),随后是矩阵B的先按行再按列的数据。请编程将两个矩阵分别读入到二维数组中,然后计算A和B的乘积(一个n行k列的矩阵)并保存到结果文件result.txt中。
【输入形式】
【输出形式】
【样例输入】设文件data.txt中的数据为:3 2 1 2 3 4 5 6 2 3 1 2 3 4 5 6 ,则表示的矩阵A为{{1, 2}, {3, 4}, {5, 6}},矩阵B为{{1, 2, 3}, {4, 5, 6}}
【样例输出】输出文件result.txt中的内容应为:3 3 9 12 15 19 26 33 29 26 33 29 40 51
【样例说明】
【评分标准】 展开
【输入形式】
【输出形式】
【样例输入】设文件data.txt中的数据为:3 2 1 2 3 4 5 6 2 3 1 2 3 4 5 6 ,则表示的矩阵A为{{1, 2}, {3, 4}, {5, 6}},矩阵B为{{1, 2, 3}, {4, 5, 6}}
【样例输出】输出文件result.txt中的内容应为:3 3 9 12 15 19 26 33 29 26 33 29 40 51
【样例说明】
【评分标准】 展开
1个回答
展开全部
#include <stdio.h>
int main()
{
int n,m,k,i,j,l,a[500][500],b[500][500],t; //i,j,l为循环控制变量,t为临时变量
FILE*in,*out;
if((in=fopen("data.txt","r"))==NULL) //打开文件
return -1;
if((out=fopen("result.txt","w"))==NULL)
return -1;
fscanf(in,"%d%d",&n,&m); //读入第一个矩阵
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fscanf(in,"%d",&a[i][j]);
fscanf(in,"%d%d",&m,&k); //读入第二个矩阵
for(i=0;i<m;i++)
for(j=0;j<k;j++)
fscanf(in,"%d",&b[i][j]);
fprintf(out,"%d %d ",n,k);
for(i=0;i<n;i++) //计算乘法并输出到文件
for(j=0;j<k;j++)
{
t = 0;
for(l=0;l<m;l++)
t += a[i][l]*b[l][j];
fprintf(out,"%d ",t);
}
fclose(in);
fclose(out);
return 0;
}
请采纳并点赞。
更多追问追答
追问
不好意思,为什么c语言运行出错啊,能不能用c语言写呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询