c语言 上三角矩阵

来源:百度知道 编辑:UC知道 时间:2024/06/21 07:27:23
#include "stdio.h"
#include "math.h"
int main( )
{
int a[6][6],flag,i,j,n,sum=0;

scanf("%d",&n);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<n;i++){
for(j=0;j<i;j++)
sum=sum+a[i][j];}
if(sum==0)
flag=1;
if(flag) printf("YES\n");
else printf("NO\n");

}
为什么不管我输什么都是yes 啊


原因是这样的 :

int flag; 定义了一个整形变量falg 但是没有给他赋初值,这样系统给他自动一个随机值

你可以用下面语句看看

int a[6][6],flag,i,j,n,sum=0;

printf("%d\n",flag);

我运行的时候 flag是-1500456468

而在c中 只要不为0 都看作真 所以 -1500456468 是真

也就是if(flag) 恒成立


解决办法 :

预先赋初值

int falg=0;



if(sum==0)
flag=1;
else flag=0;

scanf("%d",&n); //读取n

for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf("%d",&a[i][j]); //读取n*n的数组

for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
sum=sum+a[i][j];
}
if(sum==0) flag=1;
if(flag) printf("YES\n");
else printf("NO\n");

#include "stdio.h"
#include "math.h"
void main( )
{
int a[6][6],flag,i,j,n,sum=0;

scanf("%d",&n);
for (i=0;i<n;i++) <