C 如何检查矩阵反对角线上的项是否相同?

C 如何检查矩阵反对角线上的项是否相同?,c,function,matrix,multidimensional-array,diagonal,C,Function,Matrix,Multidimensional Array,Diagonal,这是我目前掌握的代码。我相信这与checkdiag2函数本身有关,因为我看着程序分步运行,它从未超过最后一个“if”语句。我不知道为什么。这是无效条件吗?我以前试过用I,它被分配了反对角线的第一个值 #include <stdio.h> #include <stdlib.h> int checkdiag2 (int **m, int size); int main(void) { int i, j, dim, result; int **arr; FILE *in;

这是我目前掌握的代码。我相信这与checkdiag2函数本身有关,因为我看着程序分步运行,它从未超过最后一个“if”语句。我不知道为什么。这是无效条件吗?我以前试过用I,它被分配了反对角线的第一个值

#include <stdio.h>
#include <stdlib.h>
int checkdiag2 (int **m, int size);

int 
main(void)
{
int i, j, dim, result;
int **arr;
FILE *in;
in = fopen("matrix3.txt", "r");
fscanf(in, "%d", &dim);
arr = (int**) calloc(dim, sizeof(int*));
for (i=0; i<dim; ++i)
    arr[i] = (int*) calloc(dim, sizeof(int));
for (i=0; i<dim; ++i)
    for (j=0; j<dim; ++j)
        fscanf(in, "%d", &arr[i][j]);
result = checkdiag2(arr, dim);
if (result == 1)
    printf("The matrix is %dx%d and all the numbers on the antidiagonal are the same", dim, dim);
else
    printf("The matrix is %dx%d and all the numbers on the antidiagonal are NOT the same", dim, dim);
for (i=0; i<dim; ++i)
    free(arr[i]);
free(arr);
return(0);
}

int checkdiag2 (int **m, int size)
{
int i, j, count=0;
i = m[0][size];
for (i=0; i<size; ++i)
    for (j=0; j<size; ++j)
        if ((i+j)==size)
            if(m[i][j]==m[0][size])
                count=count+1;
if (count==size)
return(1);
else
return(0);
}
#包括
#包括
int checkdiag2(int**m,int大小);
int
主(空)
{
int i,j,dim,result;
int**arr;
文件*in;
in=fopen(“matrix3.txt”,“r”);
fscanf(在、%d、&dim中);
arr=(int**)calloc(dim,sizeof(int*);

对于(i=0;iC中的数组索引是基于0的;因此,如果矩阵是NxN,则反对角线上任何元素的索引总和将为N-1,而不是N