實驗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;
}