C++程序设计初级题目

1、 实验内容或题目
编写一个程序,计算一个M*N阶矩阵和一个N*M阶矩阵相乘,并输出结果矩阵,同时求出矩阵元素最大值、最小质及所有元素平均值。
2、实验目的与要求
⑴ 进一步熟悉熟悉VC++6编译环境,掌握运用VC编译C程序的基本方法
⑵ 掌握常见的流程控制结构,熟练掌握二维数组的定义与访问
⑶ 注意输出格式美观。
必须要二维数组

怎么这么像我学校的程序设计比赛题。。。正好:
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>

using namespace std;

typedef vector<vector<int> > mat;

void print1(const mat& a) //用于判别输入数是否成功和是否错误
{
for(int i=0;i<a.size();++i)
{
for(int j=0;j<a[i].size();++j)
cout<<"a["<<i<<"]["<<j<<"]"<<"="<<a[i][j]<<" ";
cout<<endl;
}
}

void print2(vector<int>& v,int m,int n,ofstream& out) //输出结果
{
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
out<<v[j+n*i]<<" ";
out<<endl;
}
}

void mul(mat& a,int m,int s,int n,ofstream& out) //进行矩阵乘法
{
int sum=0;
vector<int> v;

for(int x=0;x<m;++x)
{
for(int y=0;y<n;++y)
{

for(int z=0;z<s;++z)
sum+=a[x+1][z]*a[1+m+z][y];

v.push_back(sum);
sum=0;
}
}
print2(v,m,n,out);
}

int main()
{
ifstream in("matrix.txt");
ofstream out("estdout.pc2");

mat a;
int m,s,n;

for(string t;getline(in,t);)
{
vector<int> b;
istringstream sin(t);

for(int i;sin>>i;)
b.push_back(i);
a.push_back(b);
}

m=a[0][0];
s=a[0][1];
n=a[0][2];

// print1(a);
mul(a,m,s,n,out);
return 0;
}
额。。。没看到要用二维数组,我用二维向量做的。。。比较省事的方法,另外那个最大元素只要做个double for就好了。。。应该很容易吧。。。剩下的。。算了。。当我路过好了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-09
在清华版的《数据结构》上是作为例题讲的。。
相似回答