小伙伴们, 还在为不知道怎么下手而头疼吗, 我们程序竞赛协会来帮你们啦~\(≧▽≦)/~啦啦啦。
另外, 如果有对编程含有浓厚兴趣的同学, 我们随时欢迎你们的加入哟~~。
以下代码仅供参考, 如果你直接copy导致课设不及格, 我们可不服责任哟!!!(如果有问题的话, 可以在下面留言哦, 话说up主编程水平就这样, 有错轻喷啊)
策划:谭兆飞
编程:管怀文
协助:一号人员要求给她打码╮(╯_╰)╭,干脆二号也打码好了o(╯□╰)o(其实只是提供了题目啦~)
面向对象部分_203
#include <iostream>
using namespace std;
class Mat
{
private:
int M, N;
int a[110][110];
public:
Mat(int**, int, int);
void process();
void show();
};
Mat::Mat(int** b, int m, int n)
{
M = m;
N = n;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
a[i][j] = b[i][j];
}
}
}
void Mat::process()
{
int x = 0, y = 0, t = 0;
for (int i = 0; i < M; i++) // 二维数组搜索一遍寻找最大的一个,用x, y来存储最大值的横坐标和纵坐标
{
for (int j = 0; j < N; j++)
{
if (a[x][y] < a[i][j])
{
x = i;
y = j;
}
}
}
t = a[x][y]; // 最大数与规定位置书的交换
a[x][y] = a[0][0];
a[0][0] = t;
x = 0, y = 0;
for (int i = 0; i < M; i++) // 同上, 可以多开两个整型变量, 然后在一次搜索中结束,
{ // 但分两次时间复杂度不变 而且便于阅读
for (int j = 0; j < N; j++)
{
if (a[x][y] > a[i][j])
{
x = i;
y = j;
}
}
}
t = a[x][y];
a[x][y] = a[M - 1][N - 1];
a[M - 1][N - 1] = t;
}
void Mat::show()
{
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
}
int main()
{
int a[3][4] = {{1, 4, 5, 6}, {7, 2, 10, 11}, {8, 9, 12, 3}};
int* b[3] = {a[0], a[1], a[2]};
Mat ma(b, 3, 4);
ma.process();
ma.show();
return 0;
}