第二届程序设计大赛 IP地址
Time Limit:1000MS Memory Limit:65536K
Total Submit:360 Accepted:225
Description
常见的IP地址的表示方式为x.x.x.x,如172.16.163.66,它还可以用“位”来表示。
你的任务是将32个’0’和’1’构成的二进制序列转换为十进制的表示格式,每8位之间以’.’间隔。
Input
输入数据第一行是一个正整数N(1 <= N <= 20),表示有N组数据需要转换。
接下来的N行表示N组数据。
Output
每行输入数据对应一行输出数据。
每行输入的二进制数据对应一个十进制的输出数据,每8位以’.’间隔。
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
slove:
#include<stdio.h>
int conversion(char a[],int k);
int main()
{
int n,i,k;
char a[32];
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
for(k=1;k<=4;k++)
{
printf("%d",conversion(a,k));
if(k<4)
{
printf(".");
}
}
printf("\n");
}
return 0;
}
int conversion(char a[],int k)
{
int sum=0,i,temp=1,num;
for(i=8*k-1;i>=8*k-8;i--)
{
num=a[i]-'0';
sum+=num*temp;
temp*=2;
}
return sum;
}