开发者社区> 问答> 正文

一个c语言的简单acm问题,求两个二进制数有多少位不同,输入的是十进制数.

include
int main()
{
int n,p=0,k,m,t;
int a[50];
int b[50];
int c[50];
int d[50];
int i=0,j,u,z,w,q,e,s;
int r;
int count=0;
scanf("%d",&r);
while(r--){
scanf("%d%d",&n,&m);
while(n>0)
{
j=n%2;
n=n/2;
a[i++]=j;
}
while(m>0)
{
k=m%2;
m=m/2;
b[p++]=k;
}
if(i>p){ 
for(q=i-1,u=0;q>=0;q--,u++)
c[q]=a[u];
for(z=p+(i-p)-1,u=0;z>=i-p;u++,z--)//先从右往左填充d数组,前面留下的空位置置0 
d[z]=b[u];
for(e=0;e d[e]=0;
for(w=0;w if(c[w]!=d[w])
count++;
}
else if(i
{
for(q=p-1,u=0;q>=0;q--,u++)
c[q]=b[u];
for(z=i+(p-i)-1,u=0;z>=p-i;u++,z--)//同上 
d[z]=a[u];
for(e=0;e<p-i;e++)
d[e]=0;
for(w=0;w<p;w++)
if(c[w]!=d[w])
count++;
}
else{
for(q=0;q<i;q++)
if(a[q]!=b[q])
count++;
}
printf("%d",count);
}
return 0;
}
http://swun.openjudge.cn/practice/1009/题目在这里
我的代码出来结果一样怎么会没办法AC

展开
收起
a123456678 2016-03-23 13:39:25 2295 0
1 条回答
写回答
取消 提交回答
  • #include
    #include
    int main()
    {
    int n,p,k,m,t;
    int a[50];
    int b[50];
    int c[50];
    int d[50];
    int i,j,u,z,w,q,e,s;
    int r;
    int count;
    scanf("%d",&r);
    while(r--){
    count=0;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(a));
    i=0;p=0;
    scanf("%d%d",&n,&m);
    while(n>0)
    {
    j=n%2;
    n=n/2;
    a[i++]=j;
    }
    while(m>0)
    {
    k=m%2;
    m=m/2;
    b[p++]=k;
    }
    if(i>p){ 
    for(q=i-1,u=0;q>=0;q--,u++)
    c[q]=a[u];
    for(z=p+(i-p)-1,u=0;z>=i-p;u++,z--)
    
    d[z]=b[u];
    for(e=0;e d[e]=0;
    for(w=0;w if(c[w]!=d[w])
    count++;
    }
    else if(i
    
    {
    for(q=p-1,u=0;q>=0;q--,u++)
    c[q]=b[u];
    for(z=i+(p-i)-1,u=0;z>=p-i;u++,z--)
    d[z]=a[u];
    for(e=0;e<p-i;e++)
    d[e]=0;
    for(w=0;w<p;w++)
    if(c[w]!=d[w])
    count++;
    }
    else{
    for(q=0;q<i;q++)
    if(a[q]!=b[q])
    count++;
    }
    printf("%d\n",count);
    }
    return 0;
    }

    修改以后可以通过了,也谢谢各位的回复

    2019-07-17 19:10:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载