写得太复杂。用循环语句,一个数一个数地读入计算就可以了。
pow() 用 math.h 里的就可以了。
8 位2进制到10进制计算 用 v[j] = v[j]+ d * pow(2,7-k);
#include
#include
main(){
int i,j,k,n;
char s[32];
static int v[4],d;
scanf("%d",&n);
for (i=0;i
v[j]=0;
for (k=0;k<8;k++){
scanf("%1d",&d);
v[j] = v[j]+ d * pow(2,7-k);
}
};
printf("%d.%d.%d.%d\n",v[0],v[1],v[2],v[3]);
};
return 0;
}
#include
int main() {
int i,j,n,IP[4];
char s[33];
scanf("%d",&n);
while(n--) {
fflush(stdin);
fgets(s,33,stdin);
for(i = 3; i >= 0; --i) {
IP[i] = 0;
for(j = 8 * (3 - i); j < 8 * (4 - i) && s[j]; ++j)
IP[i] = 2 * IP[i] + s[j] - '0';
printf("%d%c",IP[i],((i > 0) ? '.' : '\n'));
}
}
return 0;
}
显示结果错吗??还是优化问题?