c语言c++题期待大家的解答奥。

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请定义一个函数,将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。输入样例:11001100100101000001010101110010(32位二进制字符串)输出样例:204.148.21.114(IP地址由4个十进制数组成,分别对应4个8位的二进制数,中间用“.”分隔开)


#include <stdio.h>
#include <math.h>
int b2t(char *s)
{
    int sum=0;
    for(int i=0;i<8;++i)
    {
        if(s[i]=='1')
            sum+=pow(2,7-i);
    }
    return sum;
}

int main()
{                   
    char ip_s[32];
    gets(ip_s);
    
    for(int i=0;i<4;++i)
    {
        printf("%d",b2t(ip_s+i*8));
        if(i!=3)
          printf(".");
    }

    return 0;    
}
#include <stdio.h>
int fac(int n) {
    sum = 1;
    for (int i = 0; i < n; i++) {
        sum *= 2;
    }

    return sum;
}

int main() {
    char ip[100];
    scanf("%s", ip);

    for (int i = 0; i < 4; i++) {
        int num = 0;
        for (int j = 0; j < 8; j++) {
            num += fac(ip[i * 8 + j]);
        }
        printf("%d", num);
        if (i != 3) {
            printf(".");
        }
    }
}