这道题就是一个字符串处理的问题。。。
一次AC,很爽。。。
#include <stdio.h>
char IP[35]; //存放最开始的二进制数
int address[5]; //存放最后的答案
int power2(int n)
{
//自己写的2的次方
int i;
int result=1;
for (i=0;i<n;i++)
result<<=1; //不停 *2
return result;
}
//将二进制转成4个十进制
void work()
{
int i,j;
int result;
for(i=4;i>=1;i--)
{
//i代表的就是四个格子
result=0;
for(j=i*8-1;j>=(i-1)*8;j--)
{
if(IP[j]=='1')
result+=power2(7-j%8);
}
address[i]=result;
}
}
int main()
{
int N;
scanf("%d",&N);
while(N--)
{
scanf("%s",IP);
work();
printf("%d.%d.%d.%d\n",address[1],address[2],address[3],address[4]);
}
return 0;
}