用C++写一个是一维数组的对角阵
时间: 2023-06-09 16:07:49 浏览: 51
好的,我理解了你的要求。以下是用 C 语言编写一个一维数组的对角阵的代码:
```
#include <stdio.h>
#define N 5 // 定义阵的大小
void print_matrix(int *matrix);
int main() {
int matrix[N*N] = {0}; // 定义一维数组作为阵
// 生成对角阵
for (int i = 0; i < N; i++) {
matrix[i*(N+1)] = 1;
}
// 打印阵
print_matrix(matrix);
return 0;
}
void print_matrix(int *matrix) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", matrix[i*N+j]);
}
printf("\n");
}
}
```
在这个例子中,我们定义了一个大小为 5 的一维数组 `matrix`,并将其初始化为全 0。然后我们在它的主对角线上填 1,生成一个对角阵。最后我们通过 `print_matrix` 函数将这个对角阵打印出来。注意:因为这里用的是一维数组,我们需要用下标进行计算来确定阵元所在的位置。
相关问题
将一个n*n的二维数组右对角设置为零 c++代码
以下是将一个n*n的二维数组右对角设置为零的C++代码:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入n的值:" << endl;
cin >> n;
int a[n][n];
cout << "请输入数组元素的值:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
cout << "原始数组:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
// 将右对角设置为零
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i + j == n - 1) {
a[i][j] = 0;
}
}
}
cout << "处理后的数组:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
首先,我们定义一个n*n的二维数组a,然后通过循环输入数组元素的值。
接着,我们将原始数组输出,然后将右对角元素设置为零。右对角元素的特点是行下标和列下标之和等于n-1,因此我们可以通过两层循环遍历数组,判断当前元素是否位于右对角,并将其值设置为零。
最后,我们输出处理后的数组,完成程序。
c++求二维数组的对角线之和
以下是 C++ 代码实现二维数组的对角线之和:
```cpp
#include <iostream>
using namespace std;
const int N = 105;
int a[N][N]; // 二维数组
int main()
{
int n;
cin >> n; // 输入二维数组的行数和列数
// 输入二维数组的元素
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
int sum1 = 0, sum2 = 0;
for (int i = 0; i < n; i++)
{
sum1 += a[i][i]; // 第一条对角线之和
sum2 += a[i][n - i - 1]; // 第二条对角线之和
}
cout << "第一条对角线之和:" << sum1 << endl;
cout << "第二条对角线之和:" << sum2 << endl;
return 0;
}
```
在这个代码中,我们定义了一个 `N` 大小的二维数组 `a`,并且输入了二维数组的行数和列数。接下来,我们使用两个变量 `sum1` 和 `sum2` 来分别记录第一条对角线和第二条对角线的元素之和。最后输出两个变量的值即可。