c程序查错,为什么不出结果呢

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:58:18
#include<stdio.h>
#include<math.h>

int fun(int x,int y)
{int z,r=0;

int d[20]={0};
int b[20]={0};
int c[20];
int l,k=0;

while(x>0||y>0)
{
d[k]=x%2; d[k]=y%2;
if(d[k]==b[k]) c[k]=0;
else c[k]=1;
k++;
x=x/2;y/=2; }

for(l=k;l>=0;k--)
{r+=c[l]*pow(2,l);}
return r;
}

main()
{
int i,j,n;
long long ret=0;
int a[60];
printf("input n\n");
scanf("%d",&n);
printf("input a[i]\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
printf("%d ",a[i]);

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{

ret+=fun(a[i],a[j]);

}
}

printf("%d",ret);}

fun的功能是 进行 xor运算
现在把错的for(l=k;l>=0;k--) 改成for(l=k;l>=0;l--)就能运行了 ,但运行结果不对;
以下为测试数

#include<stdio.h>
#include<math.h>

long long fun(int x,int y)
{long long z,r=0;

int d[20]={0};
int b[20]={0};
int c[20]={0};
int l,k=0;

while(x>0||y>0)
{
d[k]=x%2; b[k]=y%2;
if(d[k]==b[k]) c[k]=0;
else c[k]=1;
k++;
x=x/2;y/=2; }

for(l=0;l<=k;l++)
{r+=c[l]*pow(2,l);}
return r;
}

main()
{
int i,j,n;
long long ret=0;
int a[60];
printf("input n\n");
scanf("%d",&n);
printf("input a[i]\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
printf("%d ",a[i]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{

ret+=fun(a[i],a[j]);

}
}

printf("%ld",ret);
getch();
}

adff