C语言如何遍历二维数组 上三角、下三角、主对角线、副对角线?

int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
以这个数组为例,如何遍历上三角、下三角、主对角线、副对角线呢。

遍历上三角:
int i,j;
for (i=0;i<3;i++)
for (j=i;j<3;j++) {a[i][j]……};
遍历下三角:
for(i=0;i<3;i++) for(j=0;j<=i;j++){a[i][j]......};
遍历主对角线:
for(i=0;i<3;i++){a[i][i]......};
遍历副对角线:
for(i=0,j=3-1;i<3;i++,j--){a[i][j]......};
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-08
#define M 3

int i,j;
for(i=0;i<M;i++) printf("%3d",a[i][i]); //主对角线
for(i=0;i<M;i++) printf("%3d",a[i][M-1-i]); //次对角线
for(i=0;i<M;i++) //上三角
{

for(j=i;j<M;j++)
printf("%3d",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++) //下三角
{

for(j=0;j<=i;j++)
printf("%3d",a[i][j]);
printf("\n");
}
第2个回答  2022-06-29
上三角和下三角是根据主对角线来划分的;在你举得列子力 123 456 789 的159就是这个这个数列的主对角线 所以 123 56 9 是上三角;1 45 789 是下三角
第3个回答  2022-06-29
遍历上三角: int i,j; for (i=0;i<3;i++) for (j=i;j<3;j++) {a[i][j]……}; 遍历下三角: for(i=0;i<3;i++) for(j=0;j<=...