//数组算法
/*
=============================================================
题目:求四阶矩阵上三角之积。主对角之积,副对角之积:
如:
8 3 6 5
0 4 3 2
0 6 1 5
7 0 0 2
上三角之积为:172800
主对角之积为:64
负对角之积为:630
=============================================================
*/
#include<stdio.h>
void main()
{
int i,j;
int ssj=1,zdj=1,fdj=1;
int a[4][4];
printf("输入4*4矩阵: ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("输出矩阵: ");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);
printf(" ");
}
printf("输出上三角之积:");
for(i=0;i<4;i++)
for(j=i;j<4;j++)
ssj*=a[i][j];
printf("%d ",ssj);
printf("主对角线之积:");
for(i=0;i<4;i++)
zdj*=a[i][i];
printf("%d ",zdj);
printf("副对角线之积:");
for(i=3;i>=0;i--)
fdj*=a[i][3-i];
printf("%d ",fdj);
}
/*
=============================================================
评:
*/
/*
=============================================================
题目:求四阶矩阵上三角之积。主对角之积,副对角之积:
如:
8 3 6 5
0 4 3 2
0 6 1 5
7 0 0 2
上三角之积为:172800
主对角之积为:64
负对角之积为:630
=============================================================
*/
#include<stdio.h>
void main()
{
int i,j;
int ssj=1,zdj=1,fdj=1;
int a[4][4];
printf("输入4*4矩阵: ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("输出矩阵: ");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);
printf(" ");
}
printf("输出上三角之积:");
for(i=0;i<4;i++)
for(j=i;j<4;j++)
ssj*=a[i][j];
printf("%d ",ssj);
printf("主对角线之积:");
for(i=0;i<4;i++)
zdj*=a[i][i];
printf("%d ",zdj);
printf("副对角线之积:");
for(i=3;i>=0;i--)
fdj*=a[i][3-i];
printf("%d ",fdj);
}
/*
=============================================================
评:
上三角是主对角线上面的三角形,其条件应为:行从0到n-1,列从相应行数到n-1;即
(i=0;i<=n-1;i++) (j=i;j<=n-1;j++);主对角是从a[0][0]到a[n-1][n-1]的连线。其条件为:
行从0到n-1。列=行,(i=0;i<n-1;i++)相应乘积为a[i][i];同理,负对角是从a[n-1][0]到
a[0][n-1]的连线,其条件为:行从n-1到0,列=n-1-行,(i=n-1;i>=0;i--),乘积项为
a[i][n-1-i];分析清楚这些就easy解题了!事实上这个算法能够拓展到随意阶方阵的,读
者有兴趣能够自己完毕!
=============================================================*/