7-92 IP地址转换 (20 分)
一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
输入格式:
输入在一行中给出32位二进制字符串。
输出格式:
在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
输入样例:
11001100100101000001010101110010
输出样例:
204.148.21.114
#include <stdio.h>
#include<string.h>
#include<math.h>
#define MAXN 32
int main()
{
char str[MAXN],ch;
int i,j,count=0,k=0;
double sum=0;
int a[4]; //存输出的答案
//输入
ch=getchar();
for(i=0;i<MAXN;i++){
str[i]=ch;
ch=getchar();
}
//转换
for(i=MAXN-1;i>=0;i--){//从后往前
if(str[i]=='1')
sum+=pow(2,count);
count++;//每8个字符算一次和
if( count%8==0){
a[k]=sum;
sum=0;
k++;
count=0;
}
}
//输出
for(j=3;j>=0;j--){
printf("%d",a[j]);
if(j!=0)
printf(".");
}
return 0;
}