求一个n*n矩阵主对角线之和,次对角线元素之和.用指针完成
求一个n*n矩阵主对角线之和,次对角线元素之和.用指针完成
#include <iostream>
using namespace std;
void main()
{
/* 变量定义与初始化 */
int i,j;
int nMainSum = 0;
int nSubSum = 0;
int nSize = 0;
int **arr = NULL;
/* 用户输入,指定矩阵大小 */
cout<<"Input array size:"<<endl;
do
{
cin>>nSize;
if (0 >= nSize)
{
cout<<"Invalid number,Do it again!"<<endl;
}
} while (0 >= nSize);
/* 为二级指针分配内存 */
arr = new int *[nSize];
for(j = 0; j < nSize; j++)
{
*(arr + j) = new int[nSize];
}
/* 用户输入,给矩阵赋值 */
for (i = 0; i < nSize; i++)
{
for(j = 0; j < nSize; j++)
{
cin>>*(*(arr + i) + j);
}
}
/* 计算主对角线的和 */
for (i = 0; i < nSize; i++)
{
nMainSum += *(*(arr + i) + i);
}
/* 计算次对角线的和 */
for (i = nSize - 1, j = 0; i >= 0, j < nSize; i--, j++)
{
nSubSum += *(*(arr + i) + j);
}
/* 输出结果 */
cout<<"Main sum is:"<<nMainSum<<endl<<"Sub sum is:"<<nSubSum<<endl;
/* 释放内存 */
for(j = 0; j < nSize; j++)
{
delete[] *(arr + j);
}
delete[] arr;
}