用户名或者密码错误
| 注册账号 | 忘记密码
<->

ch11 二维数组 - 课堂代码

zzdd 2022-08-25 15:37:18 2022-08-25 15:48:38

#include using namespace std; int a[101][101]; int main(){

// 声明二维数组 (矩阵)
// 5 6 8
// 7 9 10
int A[2][3] = {5,6,8,7,9,10}; 
int B[2][3] = { {5,6,8} , {7,9,10}}; 
int C[ ][3] = {5,6,8,7,9,10};
int D[2][3] = { {1,2} , {3} }; 
 
// A[0][0]   A[0][1]   A[0][2]
// A[1][0]   A[1][1]   A[1][2]
 
// 遍历输入

// cin >> A[0][0] >> A[0][1] >> A[0][2];
// cin >> A[1][0] >> A[1][1] >> A[1][2];

int n, m;
cin >> n >> m; 
// 外循环负责循环每行 
for(int i = 1; i <= n; i++){
	// 内循环负责循环一行当中的每一个元素 
	for(int j = 1; j <= m; j++){
		//cout << "现在输入第 " << i << " 行";
		//cout << "第 " << j << " 列的元素:" ;
		cin >> a[i][j];
	}
}

// 遍历输出
for(int i = 1; i <= n; i++){
	// 内循环负责循环一行当中的每一个元素 
	for(int j = 1; j <= m; j++){
		cout << a[i][j] << ' ';
	}
	cout << endl;
}

// 求所有元素的和(循环)
int sum = 0;
for(int i = 1; i <= n; i++){
	for(int j = 1; j <= m; j++){
		sum += a[i][j];
	}
}
cout << "所有元素的和是:" << sum << endl;
cout << "所有元素的平均数是:" << 1.0 * sum / (n * m) << endl;


// 求所有元素的最大值及其坐标
int Max, MaxI, MaxJ;
for(int i = 1; i <= n; i++){
	for(int j = 1; j <= m; j++){
		if(i == 1 && j == 1 || a[i][j] > Max){
			Max = a[i][j]; // 记录下最大值
			MaxI = i;
			MaxJ = j; 
		} 
	}
}
cout << "最大值是:" << Max << endl;
cout << "最大值的坐标:" << MaxI << "," << MaxJ << endl;  

// 输出特定行、特定列
    // 特定行、列求和
    int row, sumR = 0; // 某一行
cin >> row; // 比如 row=1 就输出第 1 行的所有元素 
cout << "现在输出第" << row << "行的所有元素:";
// 行坐标固定,列坐标循环 
    for(int j = 1; j <= m; j++){
	// cout << a[row][j] << ' ';
	sumR += a[row][j];
}
cout << endl; 

int col; // 列 column
cin >> col; 
cout << "现在输出第" << col << "列的所有元素:";
   // 列坐标固定,循环行坐标 
   for(int i = 1; i <= n; i++){
	cout << a[i][col] << ' ';
}
	
// 边缘元素求和
//  2 5 8
//  6 7 9
//  7 7 10	
int sum2 = 0;
for(int i = 1; i <= n; i++){
	for(int j = 1; j <= m; j++){
		// 走到的那个格子,是处于边缘,才加他
		if(i == 1 || i == n || j == 1 || j == m){
			sum2 += a[i][j]; 
		} 
	}
}

// 对角线元素求和 (方阵) n * n
// (2)  5   8   7
//  6  (7)  9   4
//  7   7  (1)  3
//  1   2   3  (7)  
int sum3 = 0;
for(int i = 1; i <= n; i++){
	sum3 += a[i][i];
} 
sum3 = 0; 
for(int i = 1; i <= n; i++){
	for(int j = 1; j <= m; j++){
		// 走到的那个格子是处于对角线上,才加他
		if(i == j){
			sum3 += a[i][j]; 
		} 
	}
}

// 求 (x,y) 的四周元素之和 
//  2  5  8  7
//  6  7  9  4
//  7  7  1  3
//  1  2  3  7 
// 求 a[x][y] 这个元素的上下左右四个邻居之和
int x, y, sum4 = 0;
cin >> x >> y;
// a[x][y] 左边那个邻居 : a[x][y-1]
// a[x][y] 右边那个邻居 : a[x][y+1]
// a[x][y] 上边那个邻居 : a[x-1][y]
// a[x][y] 下边那个邻居 : a[x+1][y] 
 
 
return 0;

}