int main()
{
int n, i, k, num[1000], res[1000], s;
while (scanf("%d", &n) != EOF)
{
for (i = 1, k = 0; i <= n * n; i++)scanf("%d", &num[i - 1]);
if (n % 2 != 0)
{
for (i = 1; i <= n; i++)
{
res[k++] = num[i + (i - 1) * n - 1];
if (i != (n + 1) / 2)
res[k++] = num[(n - i + 1) + (i - 1) * n - 1];
}
for (i = 1, s = 0; i <= 2 * n - 1; i++)
{
s = s + res[i - 1];
}
}
else if (n % 2 == 0)
{
for (i = 1; i <= 2 * n; i++)
{
res[k++] = num[i + (i - 1) * n - 1];
res[k++] = num[(n - i + 1) + (i - 1) * n - 1];
}
for (i = 1, s = 0; i <= 2 * n; i++)
{
s = s + res[i - 1];
}
}
printf("%d\n", s);
}
return 0;
}
该程序读取一个正方形矩阵的大小n,然后计算其主对角线和副对角线的元素之和。如果n为奇数,只计算一条对角线;若为偶数,计算两条对角线。最后输出总和。
687

被折叠的 条评论
为什么被折叠?



