题目要求:
通过变长数组的方式,输入二维数组的行与列 (nn),并计算数组对角线之和.
解题思路:
首先确定变长数组的行和列,利用两个for循环嵌套输入这个二维数组的每个元素.存储好数组后,可以输出一遍该二维数组方便观察验证后续的计算结果.用嵌套的两个for循环遍历该二维数组,如果遇到对角线上的元素就累加到变量count里储存.(观察二维数组n*n的对角线规律,行和列相等时为一条对角线,行和列相加等于n+1为另一条对角线.)同时要避免对角线交叉时元素的重复累加.
代码实现:
#include <stdio.h>
int main()
{
int x,y,count=0;
printf("请输入二维数组的行x和列y的值:");
scanf("%d %d",&x,&y);
int array[x][y];
for (int i = 0; i < x; i++)
{
printf("请输入第%d行的%d个整数数据:",i+1,y);
for (int j = 0; j < y; j++)
{
scanf("%d",&array[i][j]);
}
}
printf("该二维数组为:\n");
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
printf("%5d",array[i][j]);//输出数组元素
if(i==j)
{
count = count + array[i][j];
}
else if (i+j==x-1)//防止重复累加
{
count += array[i][j];
}
}
printf("\n");
}
printf("该二维数组的对角线之和为:%d",count);
}