上海市计算机学会竞赛平台2021年6月月赛丙组IP地址

题目描述

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;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值