题目描述
IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
用户看到的IP地址通常用“点分十进制”,表示成(a.b.c.d)的形式,其中,a, b, c, d都是0~255(含0和255)之间的十进制整数。
但是在网络传输时,a, b, c, d都被编码成8位二进制,一起拼成32位二进制数传输。如果把32位二进制数看成无符号的十进制整数X,
则有下列关系:
X = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d
我们以样例说明,192.9.16.12各自对应的8位二进制如下图,将这些二进制连接起来构成的整数,对应的十进制是3221819404。
现在的问题是给定X,求其点分形式。
输入
一个无符号十进制整数X(0<=X<232).
输出
输出X对应的点分十进制表示的IP地址,形式为a.b.c.d。
样例输入 Copy
3221819404
样例输出 Copy
192.9.16.12
提示
定义类型用unsigned int,scanf输入格式用"%u"
答案
#include<stdio.h>
int main(){
unsigned long long X,a,b,c,d;
scanf("%llu",&X);
d=X%256;
X=X/256;
c=X%256;
X=X/256;
b=X%256;
X=X/256;
a=X%256;
printf("%d.%d.%d.%d",a,b,c,d);
return 0;
}
//writed by sorrymaker