【发布时间】:2014-07-31 12:19:35
【问题描述】:
我正在编写一个 C 程序来检查矩阵是否为单位。我没有得到任何输出。谁能找出我的代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int **matrix;
int i,j,n,flag=0;
matrix=(int**)malloc(n*sizeof(int*));
scanf("%d",&n);
for(i=0;i<n;i++)
{
matrix[i]=(int*)malloc(n*sizeof(int));
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&matrix[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(matrix[i][j]!=1 && matrix[j][i]!=0)
flag=0;
break;
}
}
if(flag==1)
printf("\nIt is identity");
else
printf("\nIt isn't");
for(i=0;i<n;i++)
{
free(matrix[i]);
}
free(matrix);
return 0;
}
【问题讨论】:
-
scanf("%d",&n);matrix=(int**)malloc(n*sizeof(int*)); -
在初始化之前使用变量
n。这导致undefined behavior。 -
你有一个调试器。请尝试使用它。
-
if(flag==1): 不可能设置flag。 -
哎哟!!猜猜就是这样......再次检查。谢谢。