int pd(int a[][]) { int i,j,n; for(i=0;i<n;i++) for(j=0;j<n;j++) { if(a[i][j]!=a[j][i]) return 0; }

哪错了?
2025-01-07 01:09:40
推荐回答(3个)
回答1:

看你的意思是想求质数,但是 for(i=2;i<=100;i++)
for(j=1;j {
if(i/j==0)
{
a[i]=0;
break;
}
}
首先不应该写i/j,应该是求余数,i % j == 0,j的范围是1 到i - 1,任何一个数除以比自己小的数都会商1,这个条件i/j == 0是不可能满足的,其次,你这个循环没有对是质数的数对应的a[i]赋值,数组也没初始化,怎么可能会不打乱的数字。
修改下:

//首先初始化为全0
int a[101] = ;

for(i=2;i<=100;i++)
{
for(j=1;j {
if(i % j==0)
break;
}

if(j == i) //如果j == i了,那么说明上个循环不是break掉的,说明i是质数
a[i] = i;
}

回答2:

推测你的用意是想判断一个n行n列的矩阵是否是对称矩阵。
int pd(int* p, int n)
{
int i,j;
for(i=0; i for(j=0; j if(p[i*n+j]!=p[j*n+i])
return 0;
return 1;
}
调用的时候把第一个元素的地址和行列数传过去就行了。
比如int a[3][3], b[5][5];
if(pd(&a[0][0], 3)) ...;
if(pd(&b[0][0], 5)) ...;

回答3:

你在写for循环的时候你的循环上限n具体是什么值?你都没有定义怎么可能对呢?