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 啊
#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++) <