用java生成一个nxn主对角和的程序
时间: 2023-04-05 18:03:24 浏览: 99
可以的,以下是一个Java程序示例:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入矩阵的维数n:");
int n = sc.nextInt();
int[][] matrix = new int[n][n];
int sum = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
matrix[i][j] = 1;
} else {
matrix[i][j] = 0;
}
sum += matrix[i][j];
}
}
System.out.println("主对角线和为:" + sum);
}
}
```
该程序通过输入矩阵的维数n,生成一个nxn的主对角线和矩阵,并计算主对角线上所有元素的和。
相关问题
java产生一个nxn的整型二维数组并完成如下功能。(1)找出最大值和最小值(2)统计平均值(3)分别求出主、副对角线的元素的平均值(4)求出数组外圈元素之和 (5)把主对角线以下的元素设置为0
```
import java.util.Random;
public class ArrayOperations {
public static void main(String[] args) {
int n = 5; // 二维数组大小
int[][] array = new int[n][n];
Random random = new Random();
// 初始化二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
array[i][j] = random.nextInt(100); // 随机生成0-99的整数
}
}
// 输出二维数组
System.out.println("二维数组:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
// 找出最大值和最小值
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (array[i][j] > max) {
max = array[i][j];
}
if (array[i][j] < min) {
min = array[i][j];
}
}
}
System.out.println("最大值:" + max);
System.out.println("最小值:" + min);
// 统计平均值
double sum = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
sum += array[i][j];
}
}
double average = sum / (n * n);
System.out.println("平均值:" + average);
// 分别求出主、副对角线的元素的平均值
double mainDiagonalSum = 0;
double viceDiagonalSum = 0;
for (int i = 0; i < n; i++) {
mainDiagonalSum += array[i][i]; // 主对角线
viceDiagonalSum += array[i][n - i - 1]; // 副对角线
}
double mainDiagonalAverage = mainDiagonalSum / n;
double viceDiagonalAverage = viceDiagonalSum / n;
System.out.println("主对角线平均值:" + mainDiagonalAverage);
System.out.println("副对角线平均值:" + viceDiagonalAverage);
// 求出数组外圈元素之和
int outsideSum = 0;
for (int i = 0; i < n; i++) {
outsideSum += array[0][i]; // 上边
outsideSum += array[n - 1][i]; // 下边
outsideSum += array[i][0]; // 左边
outsideSum += array[i][n - 1]; // 右边
}
outsideSum -= array[0][0]; // 左上角
outsideSum -= array[0][n - 1]; // 右上角
outsideSum -= array[n - 1][0]; // 左下角
outsideSum -= array[n - 1][n - 1]; // 右下角
System.out.println("外圈元素之和:" + outsideSum);
// 把主对角线以下的元素设置为0
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) { // 主对角线以下
array[i][j] = 0;
}
}
System.out.println("主对角线以下的元素设置为0后的二维数组:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
```
用c++编写一个程序输入一个 nxn 的矩阵,求出两条对角线元素值之和。
为了编写一个C++程序,用于计算给定nxn矩阵的对角线元素之和,你可以这样做:
首先,定义一个二维动态数组(称为matrix)来存储矩阵的元素。接下来,初始化两个变量分别用于计算主对角线(从左上角到右下角)和副对角线(从右上角到左下角)的元素总和。
下面是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
int main() {
int n, sumMainDiagonal = 0, sumSecondaryDiagonal = 0;
// 获取矩阵的大小
cout << "请输入矩阵的行数(n): ";
cin >> n;
// 创建一个动态数组来表示矩阵
int matrix[n][n];
// 输入矩阵的元素
cout << "请输入矩阵的元素:\n";
for(int i=0; i<n; ++i) {
for(int j=0; j<n; ++j) {
cin >> matrix[i][j];
// 主对角线元素累加
if(i == j)
sumMainDiagonal += matrix[i][j];
// 副对角线元素累加,注意当i+j等于n-1时是对角线元素
if(i + j != n - 1)
sumSecondaryDiagonal += matrix[i][j];
}
}
// 输出结果
cout << "主对角线元素之和: " << sumMainDiagonal << endl;
cout << "副对角线元素之和: " << sumSecondaryDiagonal << endl;
return 0;
}
```
在这个程序中,我们遍历矩阵的每一个元素,如果当前位置在主对角线上(即行索引等于列索引),则将该元素添加到主对角线元素之和中;同样地,如果位置不在主对角线上但满足副对角线条件(即行索引加列索引不等于n-1),则将其添加到副对角线元素之和中。
阅读全文