题目描述
IP地址是一个长度固定为 3232 位 的 01 序列,给定一个IP地址,请将它转成点分十进制后输出。
点分十进制的转化方法如下:首先将IP地址分割成四个长度为 88 的二进制数字,然后将这些数字用十进制输出,数字之间用 .
分割。
例如某个IP地址为:11000000101010000000000101100100
,那么
11000000
对应十进制数为192
;10101000
对应十进制数为168
;00000001
对应十进制数为1
;01100100
对应十进制数为100
。
这个IP地址的点分十进制是 192.168.1.100
。
输入格式
- 3232 个 01 字符:表示一个给定的IP地址
输出格式
- 若干字符:表示转换后的点分十进制。
样例数据
输入:
11000000101010000000000101100100
输出:
192.168.1.100
详见代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[100][8];
int e=0;
for(int i=2;i<=5;i++)
{
cin>>a[i][1]>>a[i][2]>>a[i][3]>>a[i][4]>>a[i][5]>>a[i][6]>>a[i][7]>>a[i][8];
if(a[i][1]=='1')
{
e+=128;
}
if(a[i][2]=='1')
{
e+=64;
}
if(a[i][3]=='1')
{
e+=32;
}
if(a[i][4]=='1')
{
e+=16;
}
if(a[i][5]=='1')
{
e+=8;
}
if(a[i][6]=='1')
{
e+=4;
}
if(a[i][7]=='1')
{
e+=2;
}
if(a[i][8]=='1')
{
e+=1;
}
if(i<5)
cout<<e<<".";
else
cout<<e;
e=0;
}
}