C++上机练习:调整方阵

题目描述:

输入一个 N N N N < = 10 N<=10 N<=10)阶方阵,按照如下方式调整方阵:

1.将第一列中最大数所在的行与第一行对调。
2.将第二列中从第二行到第 N 行最大数所在的行与第二行对调。依此类推... N-1.将第N-1列中从第N-1行到第N行最大数所在的行与第N-1行对调。N.输出这个方阵

输入描述:

包含多组测试数据,每组测试数据第一行为一个整数 N N N ,表示方阵的阶数。接下来输入这个 N N N阶方阵。


输出描述:

输出调整后的 N N N阶方阵

示例:

输入:

4
3 6 8 7
6 7 5 3
8 6 5 3
9 8 7 2

输出:

9 8 7 2
6 7 5 3
3 6 8 7
8 6 5 3

源码分析:

#include
using namespace std;
#define max_len 11
int a[max_len][max_len];

//交换两个数组的方法 
void transfer(int a[max_len][max_len],int n,int i,int j){
     
	for(int l=0;l<n;l++){
     
		int tmp = a[i][l];
		a[i][l] = a[j][l];
		a[j][l] = tmp;
	}
}
	
	//主方法
	int main(void){
     
		int n;
		int b[max_len];
		cout << "请输入方阵的阶数:" << endl; 
		while(cin >> n){
     
			cout << "请输入原方阵:" << endl;
			for(int i=0;i<n;i++)
				for(int j=0;j<n;j++){
     
					int x;
					cin >> x;
					a[i][j] = x;
				}
				
			//循环遍历输出调整后的方阵 
			for(int i=0;i<n;i++){
     
				int max=i;
				for(int j=i;j<n;j++){
     
					if(a[max][i]<a[j][i])
						max = j;//本列中最大数所在行 
				}
				transfer(a,n,i,max);//调用方阵中的方法 
			}
			
			cout << "调整后的方阵为:" << endl;
			for(int i=0;i<n;i++){
     
				for(int j=0;j<n;j++)
					cout << a[i][j] << ' ';
				cout << endl;
			}
		}
		return 0;
}

运行结果:

C++上机练习:调整方阵_第1张图片

每日一练,感谢来访;-)
C++上机练习:调整方阵_第2张图片

你可能感兴趣的:(C++_Study,C语言期末复习,c++,算法)