C语言之基本算法35—数组上三角之积 主对角之积 副对角之积
2016-02-03 13:36
555 查看
//数组算法
/*
=============================================================
题目:求四阶矩阵上三角之积。主对角之积,副对角之积:
如:
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矩阵:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("输出矩阵:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);
printf("\n");
}
printf("输出上三角之积:");
for(i=0;i<4;i++)
for(j=i;j<4;j++)
ssj*=a[i][j];
printf("%d\n",ssj);
printf("主对角线之积:");
for(i=0;i<4;i++)
zdj*=a[i][i];
printf("%d\n",zdj);
printf("副对角线之积:");
for(i=3;i>=0;i--)
fdj*=a[i][3-i];
printf("%d\n",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解题了!事实上这个算法能够拓展到随意阶方阵的,读
者有兴趣能够自己完毕!
=============================================================
*/
/*
=============================================================
题目:求四阶矩阵上三角之积。主对角之积,副对角之积:
如:
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矩阵:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("输出矩阵:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);
printf("\n");
}
printf("输出上三角之积:");
for(i=0;i<4;i++)
for(j=i;j<4;j++)
ssj*=a[i][j];
printf("%d\n",ssj);
printf("主对角线之积:");
for(i=0;i<4;i++)
zdj*=a[i][i];
printf("%d\n",zdj);
printf("副对角线之积:");
for(i=3;i>=0;i--)
fdj*=a[i][3-i];
printf("%d\n",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解题了!事实上这个算法能够拓展到随意阶方阵的,读
者有兴趣能够自己完毕!
=============================================================
*/
相关文章推荐
- Effective C++ 05:了解C++默默编写并调用哪些函数
- [C++]Hanoi
- C++中智能指针的设计和使用
- 【转】C++11 标准新特性:Defaulted 和 Deleted 函数
- C++如何拒绝编译器自动生成的函数
- c++ for_each 用法
- 第二次作业----自学c++的选择与计划
- C++学习之多态篇(纯虚函数和虚函数的区别)
- C语言字符串操作总结大全(超详细)
- C++学习之多态篇(纯虚函数和接口类)
- C++实现大数据乘法
- C++中vector的用法实例解析
- C++ string 字符串详解
- C++ 总结
- Tencent-电话面试C语言问题汇总
- 《Effective C++》学习笔记(一)
- C语言中 ln(以自然对数e为底) lg(以十为底) 以及logab(以a为底,b为真数)的相关知识
- C++ development cross platforms
- C++学习札记一
- C++基本概念——细数auto和decltype之间的区别