编写c++程序,用随机数产生一个5行5列的整数数组,每个元素均为3位数,输出该数组,计算该数组非对角线元素值的和
时间: 2023-12-16 19:02:40 浏览: 75
求给定数组主副对角线元素之和,每个元素只参加一次计算。
以下是一个C++程序,可以实现你的要求:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
const int ROWS = 5;
const int COLS = 5;
int nums[ROWS][COLS];
int sum = 0;
srand(time(0));
// 生成随机数数组
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
nums[i][j] = rand() % 900 + 100; // 产生3位数的随机数
}
}
// 输出数组
cout << "随机数数组:" << endl;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cout << nums[i][j] << " ";
}
cout << endl;
}
// 计算非对角线元素值的和
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (i != j && i + j != ROWS - 1) { // 判断是否为非对角线元素
sum += nums[i][j];
}
}
}
cout << "非对角线元素值的和:" << sum << endl;
return 0;
}
```
这个程序使用了 `srand()` 函数和 `rand()` 函数来产生随机数,并使用了 `time()` 函数来获取当前时间作为随机数的种子,以保证每次运行程序时都能得到不同的随机数。
程序首先生成一个5行5列的整数数组 `nums`,然后输出该数组。接着,程序使用两个嵌套的循环遍历整个数组,计算非对角线元素值的和,并输出结果。
运行程序时,你将得到一个类似下面的输出:
```
随机数数组:
247 131 819 178 388
237 687 396 834 104
646 558 776 571 666
632 349 471 369 602
679 898 441 707 305
非对角线元素值的和:11193
```
阅读全文