《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p137
习题5
7.判断N*N矩阵是否为上三角矩阵,所谓上三角矩阵指不含主对角线下班半三角都为0,要求用指针实现
题目要求的上三角矩阵,
若为3*3矩阵(不含主对角线)
1 2 3
0 5 6
0 0 9
数组 对应 a[1][0]
a[2][0] a[2][1]
指针 对应 *(p[1]+0)
*(p[2]+0) *(p[2]+1)
#include<stdio.h>
#include<string.h>
#define N 3
int main(void)
{
int a[N][N],sum=0,i,j;
int (*pa)[N],cnt=0;
pa=&a[0];
printf("输入%d*%d的数组\n",N,N);
//输入数组
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",*(pa+i)+j);
}
}
//打印数组
puts("打印输入的数组:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",*(*(pa+i)+j));
}
puts("\n");
}
puts("\n");
for(i=1;i<N;i++)
{
for(j=0;j<i;j++)
{
if(*(pa[i]+j)==0)
cnt++;
}
}
for(i=N-1;i>=0;i--)
{
sum+=i;
}
if(cnt==sum)
{
puts("是 上三角矩阵");
}
else
{
puts("不是 上三角矩阵");
}
}