编程实现:设有一个元素皆为整数的n*n阶矩阵(n不超过10),从键盘输入矩阵的阶数n及矩阵的元素,求出其主对角线上元素的最大值及位置、次对角线上元素的最小值及位置,并完成两者的数据互换,输出互换后的结果矩阵。输入输出格式参见样张:(输出字段宽度设为4)
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
int a[10][10],n,i,j,max,p,min,q;
cout<<"请输入矩阵的阶数:";
cin>>n;
cout<<"请输入"<<n<<"*"<<n<<"阶矩阵的元素,每个数之间用空格间隔,每行输入完成后按回车:"<<endl;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
cin>>a[i][j];
max=a[0][0];
for (i=0;i<n;i++)
{
if(a[i][i]>max)
{
max=a[i][i];
p=i;
}
}
min=a[0][n-1];
for (i=0;i<n;i++)
{
if(a[i][n-i-1]<min)
{
min=a[i][n-i-1];
q=i;
}
}
cout<<"主对角线元素的最大值为:"<<max<<",位于第"<<p+1<<"行,第"<<p+1<<"列"<<endl;
cout<<"主对角线元素的最小值为:"<<min<<",位于第"<<q+1<<"行,第"<<n-q<<"列"<<endl;
a[p][p]=min;
a[q][n-q-1]=max;
cout<<"互换后的结果矩阵为:"<<endl;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
cout<<setw(4)<<a[i][j];
if ((j+1)%5==0)
cout<<endl;
}
return 0;
}
运行结果如下: