1.定义4×5的二维数组,实现其转置
2.定义4×5的二维数组,求出最大值,最小值和平均值
3.实现两个二维数组相乘
1.矩阵转置
#include <iostream>
using namespace std;
int main()
{
int a[4][5], i, j;
int b[5][4];
//输入二维数组
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
cin >> a[i][j];
}
//转置
for (i = 0; i < 5; i++)
{
for (j = 0; j < 4; j++)
{
b[i][j] = a[j][i];
}
}
//输出二维数组
for (i = 0; i < 5; i++)
{
for (j = 0; j < 4; j++)
{
if(j<3)
cout << b[i][j] << " ";
else
cout << b[i][j] << endl;
}
}
return 0;
}
2.最大值、最小值、平均值:
#include <iostream>
using namespace std;
int main()
{
int a[4][5], i, j;
int max, min;
float ave = 0; //平均值
//输入二维数组
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
cin >> a[i][j];
ave += a[i][j];
if (i == 0 && j == 0)
{
max = min = a[0][0];
}
else
{
if (a[i][j] > max) max = a[i][j];
if (a[i][j] < min) min = a[i][j];
}
}
}
cout << "max=" << max << ",min=" << min << ",avg=" << ave/20 << endl;
return 0;
}
3.二维数组相乘
#include <iostream>
using namespace std;
int main()
{
int** a, ** b, ** c, i, j, k;
int m, n;
cout << "请输入二维数组a的行数和列数:";
cin >> m >> n;
cout << "请输入" << m << "*" << n << "的二维数组a:" << endl;
a = new int* [m];
for (i = 0; i < m; i++)
{
a[i] = new int[n];
for (j = 0; j < n; j++)
cin >> a[i][j];
}
cout << "请输入" << n << "*" << m << "的二维数组b:" << endl;
b = new int* [n];
for (i = 0; i < n; i++)
{
b[i] = new int[m];
for (j = 0; j < m; j++)
cin >> b[i][j];
}
c = new int* [m];
for (i = 0; i < m; i++)
{
c[i] = new int[m];
for (j = 0; j < m; j++)
{
c[i][j] = 0;
//行列相乘
for (k = 0; k < n; k++)
c[i][j] += a[i][k] * b[k][j];
}
}
//输出
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
if (j < m - 1)
cout << c[i][j] << " ";
else
cout << c[i][j] << endl;
}
}
return 0;
}
#include <iostream>
#define N 4
#define M 5
using namespace std;
void ReverseArray(int a[N][M]){//数组转置
int t;
int m = M>N?M:N;
for(int i = 0; i < m; i++){
for(int j = i; j < m; j++){
if(i != j){
t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;
}
}
}
}
int main() {
int max = N>M?N:M;
int a[M][M] = {{1,2,3,4,5},{5,6,7,8,9},{9,10,11,12,13},{14,15,16,17,18}};
cout<<"原始数组:\n";
for(int i = 0; i < N; i++){//打印数组
for(int j = 0; j < M; j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
ReverseArray(a);
cout<<"\n转置后的数组为:\n";
for(int i = 0; i < M; i++){//转置数组
for(int j = 0; j < N; j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!