PTA | 7-4 IP地址转换

题目

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。

输入格式

输入在一行中给出32位二进制字符串。

输出格式

在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。

输入样例:

11001100100101000001010101110010

输出样例:

204.148.21.114

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

解题思路

首先,我们要知道ip地址是从0到255的

答案

#include 
int main() {
	static char bin[33], res[16];
	scanf("%s", &bin);
	char *p = bin, *q = res;
	int sum = 0;
	int digit = 0;
	for(int j = 1; j <= 4; j++) {
		for(int i = 1; i <= 8; i++, p++) {
			if(*p == '0') {
				sum *= 2;
			} else if(*p == '1') {
				sum = sum * 2 + 1;
			}
		}
		int flag = 0;
		while (sum >= 0) {
			digit = sum / 100;
			sum %= 100;
			if(digit != 0) {
				*q = digit + '0';
				q++;
				flag = 1;
			}
			digit = sum / 10;
			sum %= 10;
			if(digit != 0 || flag == 1) {
				*q = digit + '0';
				q++;
			}
			digit = sum;
			*q = digit + '0';
			q++;
			sum = -1;
		}
        sum = 0;
		flag = 0;
		if(j < 4) {
			*q = '.';
			q++;
		}
	}
	printf("%s", res);
}

你可能感兴趣的:(#,PTA,c语言)