實驗8-2-10 IP地址轉換 | 浙大版《C語言程序設計實驗與習題指導(第3版)》題目集

實驗8-2-10 IP地址轉換

一個IP地址是用四個字節(每個字節8個位)的二進制碼組成。請將32位二進制碼錶示的IP地址轉換爲十進制格式表示的IP地址輸出。

輸入格式:

輸入在一行中給出32位二進制字符串。

輸出格式:

在一行中輸出十進制格式的IP地址,其由4個十進制數組成(分別對應4個8位的二進制數),中間用“.”分隔開。

輸入樣例:

11001100100101000001010101110010

輸出樣例:

204.148.21.114

第一種答案:

#include <stdio.h>
#include <math.h>
#include <string.h>

#define N 8
#define M 4

int main(){
    int i, j, k;
    char str[M][N];
    int sum[M] = {0};
    
    for(i=0;i<M;i++){
        for(j=0;j<N;j++){
            str[i][j]=getchar();
        }
    }
    
    for(i=0;i<M;i++){
        k=0;
        for(j=8;j>0;j--){
            sum[i] = sum[i]+ (str[i][j-1]-'0')*pow(2,k);
            k++;
        }
    }
    
    for(i=0;i<M;i++){
        printf("%d", sum[i]);
        if(i!=3){
            printf(".");
        }
    }
    printf("\n");
    
    
    return 0;
}


#include <stdio.h>
#include <math.h>

#define N 8
#define M 4

int main(){
    int n[M]={0}, i,j, count;
    char ch[M][N];
    
    for(i=0;i<M;i++){
        for(j=0;j<N;j++){
            ch[i][j]=getchar();
        }
        
    }
    
    for(i=0;i<M;i++){
        count = 7;
        for(j=0;j<N;j++){
            n[i]=n[i]+(ch[i][j]-'0')*pow(2,count);
            count--;
        }
    }
    
    for(i=0;i<M;i++){
        printf("%d", n[i]);
        if(i<3){
            printf(".");
        }
    }
    
    
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章