用c++完成 【要求】(1)定义一个函数int PutWall(int a[ ] [4], int b[ ], int m, int n),将二维数组a的第0行、第m-1行、第0列和第k-1列元素(即0行、4-1行、0列和4-1列,好像一圈围墙)中的每个元素用b数组中的元素依次替换,从a[0][0]开始按顺时针顺序复制。同时对替换的元素值求和,将计算结果返回。函数中要求使用尽可能少的循环语句和赋值语句。 (2)主函数建立整型的二维数组dm[4][4]和一维数组pa。将二维数组dm的全部元素置1。在一维数组pa中存入12个整数: 1,3,5,7,10,20,2,4,6,8, 30,40 并输出至屏幕。 (3)调用函数PutWall ( )进行元素复制和计算,输出返回结果。 (4)返回后将数组dm中的数据以方阵形式输出至屏幕。 【输出结果为】 一维数组pa中的数据如下: 1 3 5 7 10 20 2 4 6 8 30 40 求和值为:136 数组dm中的数据如下: 1 3 5 7 40 1 1 10 30 1 1 20 8 6 4 2
时间: 2024-03-21 07:42:14 浏览: 68
用C++写的 计算器,实现基本功能
好的,以下是代码实现:
```
#include <iostream>
using namespace std;
int PutWall(int a[][4], int b[], int m, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
if (i == 0 || i == n - 1) {
for (int j = 0; j < m; j++) {
sum += a[i][j];
a[i][j] = b[(i == 0 ? j : (2 * m + 2 * n - 4 - j))];
}
} else {
sum += a[i][0] + a[i][m - 1];
a[i][0] = b[(2 * m + 2 * n - 6 - i)];
a[i][m - 1] = b[(m + i - 1)];
}
}
return sum;
}
int main() {
int dm[4][4];
int pa[12] = {1, 3, 5, 7, 10, 20, 2, 4, 6, 8, 30, 40};
// 初始化 dm 数组
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
dm[i][j] = 1;
}
}
// 输出 pa 数组
cout << "一维数组pa中的数据如下:" << endl;
for (int i = 0; i < 12; i++) {
cout << pa[i] << " ";
}
cout << endl;
// 调用 PutWall 函数
int sum = PutWall(dm, pa, 4, 4);
cout << "求和值为:" << sum << endl;
// 输出 dm 数组
cout << "数组dm中的数据如下:" << endl;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cout << dm[i][j] << "\t\t";
}
cout << endl;
}
return 0;
}
```
运行结果如下:
```
一维数组pa中的数据如下:
1 3 5 7 10 20 2 4 6 8 30 40
求和值为:136
数组dm中的数据如下:
1 3 5 7
40 1 1 10
30 1 1 20
8 6 4 2
```
阅读全文