次对角线和有问题
minor_sum+=a[m-1][i]应该改为minor_sum+=a[m-i-1][i]
你的max=min=a[0][0]比较好啊,矩阵也可以为负啊,minor_sum+=a[i][m-i-1]
楼上把bug都说完了。你可以在给max和min赋值的时候顺便记录下其坐标。这样就不需要第二次遍历了。
int _tmain(int argc, _TCHAR* argv[])
{
int m = 5, n = 5;
int a[5][5] = {0};
int i = 0, j = 0;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
cin >> a[i][j];
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
cout << a[i][j] << " ";
}
cout <<endl;
}
int nMin = a[0][0], nMax = a[0][0];
int nMain_Sum = 0, nMinor_Sum = 0;
int nRowMin = 0, nColMin = 0;
int nRowMax = 0, nColMax = 0;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
int nTem = a[i][j];
if (nMin > nTem)
{
nMin = nTem;
nRowMin = i;
nColMin = j;
}
if (nMax < nTem)
{
nMax = nTem;
nRowMax = i;
nColMax = j;
}
}
nMain_Sum += a[i][i];
nMinor_Sum += a[m-i-1][i];
}
cout<< "最大值为:" << nMax << "在第" << nRowMax << "行" << "第" << nColMax << "列" << endl;
cout<< "最小值为:" << nMin << "在第" << nRowMin << "行" << "第" << nColMin << "列" << endl;
cout<< "主对角线之和为:" << nMain_Sum <<endl;
cout<< "次对角线之和为:" << nMinor_Sum <<endl;