问题描述:主对角线一下都是零的方阵称为上三角矩阵。给出一个n列n行的方阵,判断是不是上三角矩阵,如果是则求出上三角元素和,如果不是则统计下三角元素个数。
3 5 5 3 2 6
0 2 1 1 0 4
0 0 5 0 2 1
(a) (b)
输入说明:输入的第一行为一个整数n(1<n<50)表示方阵行数和列数;接下来是n行,每行n个整数,表示方阵的各个元素。
输出说明:如果方阵是上三角元素,就输出上三角元素和(不含主对角线上的元素);如果不是,则输出下三角元素的非零元素个数(不含主对角线上的元素)。
输入样例1:
3
3 5 5
0 2 1
0 0 5
输入样例2:
3
3 2 6
1 0 4
0 2 1
输出样例1:11
输出样例2:2
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,count=0;
scanf ("%d", &n);
int a[n][n];
int i, j,sign,sum=0;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
scanf ("%d",&a[i][j]);
}
}
for(i=1;i<n;i++)//判断,sign的用法真的很妙啊
{
for(j=0;j<i;j++)
{
if(a[i][j]!=0)
{
sign = 0;
break;
}
}
}
if(sign!=0)//上三角矩阵求和
{
for(j=1;j<n;j++)
{
for(i=0;j>i;i++)
{
sum=sum+a[i][j];
}
}
printf("%d",sum);
return 0;
}
else//计数下三角矩阵非零元素
{
for (i=1;i<n;i++)
{
for (j=0;j<i;j++)
{
if(a[i][j]!=0)
{
count ++;
}
}
}
printf ("%d", count);
return 0;
}
}