C语言菜鸟,一道简单题实在没辙了,求高手帮忙找出错误。。
题目:Description
假定你从任何设备读二进制数据流,它代表IP地址,你的任务是转化一个32位的二进制数,变成一个由点分隔开的十进制数。这个32为的IP地址被分为4组,每组代表一个十进制数(0-255) 对应的关系如下:
Input
第一行输入包含一个数字n(1<=n<=100),表示要输入几个二进制数,下面就是需要转化的数
Output
输出必须包含对应的n个IP地址
Sample Input
2
00000000000000000000000000000000
11111111111111111111111111111111
Sample Output
0.0.0.0
255.255.255.255
我的程序:
#include<stdio.h>
#include<math.h>
void main()
{
int n,i,j,k,a[4],d,t;
char s[32];
scanf("%d",&n);
getchar();
for (i=0;i<n;i++)
{
d=0;a[0]=0;a[1]=0;a[2]=0;a[3]=0;k=0;
for (j=0;j<32;j++)
scanf("%c",&s[j]);
getchar();
for (j=0;j<8;j++)
{
if (s[j+d*8]=='1') t=pow(2,j);
else t=0;
a[d]=t+a[d];
if (j==7) {j=-1;d++;}
k++;
if (k==32) break;
}
printf("%d.%d.%d.%d\n",a[0],a[1],a[2],a[3]);
}
}
看了好几个小时了,就是不知道错在哪里。。。