1002. IP Address

10175102262 LarsPendragon

C语言(C班)C题题解
想写的尽量短一点,就写成这样了
12行的解释:ip地址的第i位可以看成是二进制的第i个8位转成十进制的结果,而第i位在这八位中是第i-8×(i/8)位

#include <stdio.h>
#include <math.h>
int main()
{
    int T, I;
    scanf("%d",&T);
    while(T--)
    {
        char ip[35];
        scanf("%s",ip);
        int i, x[4]={0};
        for(i=0; i<32; i++) x[i/8]+=(ip[i]-'0')*(int)(pow(2.0, (i/8)*8+7-i)+0.5);//这里用的是算幂然后四舍五入的方法保证得到准确值
        for(i=0; i<3; i++) printf("%d.",x[i]);
        printf("%d\n",x[i]);
    }
    return 0;
}
ALICE

include

include

int ten(int n)
{
int decimalNumber = 0, i = 0, remainder;
while (n!=0)
{
remainder = n%10;
n /= 10;
decimalNumber += remainder*pow(2,i);
++i;
}
return decimalNumber;
}

int main(){
int N,i;
scanf(“%d”,&N);
int a[N],b[N],c[N],d[N];
for(i=0;i<N;i++){
scanf(“%8d%8d%8d%8d”,&a[i],&b[i],&c[i],&d[i]);
}
for(i=0;i<N;i++){
printf(“%d.%d.%d.%d\n”,ten(a[i]),ten(b[i]),ten(c[i]),ten(d[i]));
}
}

你当前正在回复 博客/题目
存在问题!