📅  最后修改于: 2023-12-03 15:13:45.857000             🧑  作者: Mango
本文介绍的C++程序可以生成具有二次对角线之和等于完美平方的矩阵。在程序中,我们使用了求根公式计算完美平方,并利用嵌套循环生成满足条件的矩阵。
下面是完整的C++代码片段:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cout << "请输入矩阵的阶数n: ";
cin >> n;
int a[n][n];
// 生成矩阵
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i == j || i + j == n - 1)
{
a[i][j] = 0;
}
else
{
a[i][j] = 1;
}
}
}
// 计算二次对角线之和
int sum = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i + j == n - 1)
{
sum += a[i][j];
}
}
}
int p = sqrt(sum);
if(p*p == sum)
{
cout << "矩阵的二次对角线之和为" << sum << ",是一个完美平方数。" << endl;
}
else
{
cout << "矩阵的二次对角线之和为" << sum << ",不是一个完美平方数。" << endl;
}
// 输出矩阵
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的矩阵,其中二次对角线上的元素都为0,其他元素都为1。之后计算二次对角线上的元素之和,判断该和是否为完美平方数。最后,输出矩阵和判断结果。
标注代码片段:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cout << "请输入矩阵的阶数n: ";
cin >> n;
int a[n][n];
// 生成矩阵
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i == j || i + j == n - 1)
{
a[i][j] = 0;
}
else
{
a[i][j] = 1;
}
}
}
// 计算二次对角线之和
int sum = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i + j == n - 1)
{
sum += a[i][j];
}
}
}
int p = sqrt(sum);
if(p*p == sum)
{
cout << "矩阵的二次对角线之和为" << sum << ",是一个完美平方数。" << endl;
}
else
{
cout << "矩阵的二次对角线之和为" << sum << ",不是一个完美平方数。" << endl;
}
// 输出矩阵
cout << "生成的矩阵为:" << endl;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}