C 程序交换给定矩阵中的对角线元素

cserver side programmingprogramming更新于 2024/11/9 14:53:00

问题

我们需要编写代码来交换主对角线元素与次对角线元素。矩阵的大小在运行时给出。

如果矩阵 m 和 n 值的大小不相等,则打印给定矩阵不是正方形。

只有方阵才能交换主对角线元素,才能与次对角线元素交换。

解决方案

编写 C 程序来交换给定矩阵中的对角线元素的解决方案如下 −

交换对角线元素的逻辑如下所述 −

for (i=0;i<m;++i){
   a = ma[i][i];
   ma[i][i] = ma[i][m-i-1];
   ma[i][m-i-1] = a;
}

示例

以下是 C 程序,用于交换给定矩阵中的对角线元素

#include<stdio.h>
main (){
   int i,j,m,n,a;
   static int ma[10][10];
   printf ("请输入矩阵m和n的阶
");    scanf ("%dx%d",&m,&n);    if (m==n){       printf ("请输入矩阵的系数
");       for (i=0;i<m;++i){          for (j=0;j<n;++j){             scanf ("%d",&ma[i][j]);          }       }       printf ("给定的矩阵是
");       for (i=0;i<m;++i){           for (j=0;j<n;++j){             printf (" %d",ma[i][j]);            }           printf ("
");       }       for (i=0;i<m;++i){          a = ma[i][i];          ma[i][i] = ma[i][m-i-1];          ma[i][m-i-1] = a;       }       printf ("改变后的矩阵
");       printf ("主对角线和次对角线
");       for (i=0;i<m;++i){           for (j=0;j<n;++j){             printf (" %d",ma[i][j]);          }            printf("
");       }    }    else       printf("给定的阶数不是方阵
"); }

输出

当执行上述程序时,它会产生以下结果 −

运行 1:
输入矩阵 m 和 n 的阶数
3x3
输入矩阵的系数
1
2
3
4
5
6
7
8
9
给定的矩阵是
1 2 3
4 5 6
7 8 9
改变后的矩阵
主要及次对角线
3 2 1
4 5 6
9 8 7

运行 2:
输入矩阵 m 和 n 的阶
4x3
给定的阶不是方阵

相关文章