-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
IP地址总是由4个0-255的数字以"."隔开的形式来显示给用户,例如192.168.0.1。在计算机中,一个IP地址用4字节来依次存储其从右到左的4个数字部分,每个字节(8比特)以2进制的形式存储相应的IP地址数字,请你实现一个从IP地址的显示格式到计算机存储格式的转换。
输入
- 每行输入一个IP地址,如果输入为-1,结束输入 输出
- 每行输出一个IP地址在计算机存储中以二进制表示的4字节内容 样例输入
-
192.168.0.1 255.255.0.0 1.0.0.1 -1
样例输出
-
11000000101010000000000000000001 11111111111111110000000000000000 00000001000000000000000000000001
问题链接:Bailian4039 IP地址转换
问题分析:这是一个十进制数转换为二进制数的问题。程序说明:需要注意输入格式、计算结果的存储和输出格式等问题。
题记:公共的功能封装到函数中,可以重复使用。
AC的C语言程序如下:
/* Bailian4039 IP地址转换 */
#include <stdio.h>
#define BASE 2
#define N 32
char ans[N + 1];
void set(int v, int n)
{
int i;
for(i=0; i<8; i++) {
ans[n--] = '0' + v % BASE;
v /= BASE;
}
}
int main(void)
{
int ip1, ip2, ip3, ip4;
ans[32] = '\0';
while(scanf("%d", &ip1) != EOF && ip1 != -1) {
scanf(".%d.%d.%d", &ip2, &ip3, &ip4);
set(ip1, 7);
set(ip2, 15);
set(ip3, 23);
set(ip4, 31);
printf("%s\n", ans);
}
return 0;
}