这道题就是一个字符串处理的问题。。。
一次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; }