求教:简单问题,输出有误,错在哪?
题目:第一行输入n,表示有几组测试数据每组测试数据由三十二位二进制编码组成,每八位一组转化为相应十进制,以IP地址格式输出。
Sample Input
4
00000000000000000000000000000000
00000011100000001111111111111111
11001011100001001110010110000000
01010000000100000000000000000001
Sample Output
0.0.0.0
3.128.255.255
203.132.229.128
80.16.0.1
我的代码:
#include"stdio.h"
#include"math.h"
main()
{
int n,i,j;
long d[4]={0};
char a[33];
scanf("%d",&n);
while(n--)
{ for(j=1;j<=32;j++)
scanf("%c",&a[j]);
for(i=1;i<=8;i++)
{ if(a[i]=='1')
d[0]+=pow(2,8-i);
}
for(i=9;i<=16;i++)
{if(a[i]=='1')
d[1]+=pow(2,16-i);
}
for(i=17;i<=24;i++)
{if(a[i]=='1')
d[2]+=a[32-i]*pow(2,24-i);
}
for(i=25;i<=32;i++)
{ if(a[i]=='1')
d[3]+=pow(2,32-i);
}
printf("%ld.%ld.%ld.%ld\n",d[0],d[1],d[2],d[3]);
}
}
运行结果莫名其妙,不知道该怎么改,求高人指教。