用c语言写代码 IP地址转换 题目描述 一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。 输入 输入在一行中给出32位二进制字符串。 输出 在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
时间: 2024-02-23 08:01:31 浏览: 76
好的,这是一个比较基础的 C 语言编程题目,你可以按照如下的方式实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char binary[33]; // 存储二进制字符串,以 '\0' 结尾
scanf("%s", binary); // 读取输入的二进制字符串
int decimal[4] = {0}; // 存储四个十进制数
int len = strlen(binary);
for (int i = 0; i < len; i++) {
int byte = i / 8; // 第 i 位在哪个字节中
int bit = i % 8; // 第 i 位在字节中的位置
decimal[byte] <<= 1; // 左移一位
decimal[byte] |= binary[i] - '0'; // 将当前位的值加到对应的字节中
}
printf("%d.%d.%d.%d\n", decimal[0], decimal[1], decimal[2], decimal[3]); // 输出十进制格式的 IP 地址
return 0;
}
```
代码的思路是先读取输入的二进制字符串,然后将其转换为四个十进制数,最后输出十进制格式的 IP 地址。具体地,我们可以用一个名为 `binary` 的字符数组来存储输入的二进制字符串,然后使用 `scanf` 函数读取输入。接下来,我们需要将这个二进制字符串转换为四个十进制数。我们可以使用一个名为 `decimal` 的整型数组来存储这四个数,初始值都为 0。然后,我们遍历二进制字符串中的每一位,对于第 i 位,我们可以通过 `i / 8` 和 `i % 8` 来确定它在哪个字节中以及在字节中的位置。接着,我们将对应的字节左移一位,然后将当前位的值加到字节中。最后,我们使用 `printf` 函数输出十进制格式的 IP 地址。
希望这个例子可以帮助你解决问题!
阅读全文