题目:
将32位的二进制数变成一个由点分隔开的十进制数
输入:
第一行输入一个数字n(1<=n<=100),表示要输入几个二进制数,既然下来n行输入要转化的数
输出:
n个点分十进制IP地址
#include<stdio.h>
typedef struct{
char binary[33];
int first;
int secend;
int third;
int fourth;
}IP;
int a[8]={128,64,32,16,8,4,2,1};
int main(){
int n;
int i,j;
IP ip[1000];
scanf("%d",&n);
for(i=0; i<n; i++){
scanf("%s",ip[i].binary);
ip[i].first=ip[i].secend=ip[i].third=ip[i].fourth=0;
for(j=0; j<8; j++){
ip[i].first+=a[j%8]*(ip[i].binary[j]-'0');
}
for(j=8; j<16; j++){
ip[i].secend+=a[j%8]*(ip[i].binary[j]-'0');
}
for(j=16; j<24; j++){
ip[i].third+=a[j%8]*(ip[i].binary[j]-'0');
}
for(j=24; j<32; j++){
ip[i].fourth+=a[j%8]*(ip[i].binary[j]-'0');
}
}
for(int i=0; i<n; i++){
printf("%d.%d.%d.%d\n", ip[i].first, ip[i].secend, ip[i].third, ip[i].fourth);
}
return 0;
}
本文介绍了一个将32位二进制数转换为点分十进制IP地址的C语言程序。程序首先读取指定数量的二进制数,然后使用位运算和数组映射将其转换为四个十进制数,最后输出转换后的IP地址。

2835

被折叠的 条评论
为什么被折叠?



