• (TOJ 4413)IP address


    描述

        To give you an IP address, it may be dotted decimal IP address, it may be 32-bit binary IP address.
        Is now required to give you an IP address, if the IP address is in dotted decimal output is 32-bit binary IP address,On the contrary, the output dotted decimal IP address.for example,the dotted decimal IP address 192.168.0.1,192->11000000,168->10101000,0->00000000,1->00000001,and the result is11000000101010000000000000000001 。

    输入

    Multiple inputs, each input a string,the length of the string is less than 33;

    输出

    Outputrequirements of the subject, if you enter an IP address in dotted decimal, then the output32-bit binary IP addresses, and vice versa, then the outputdotted decimal IP address.

    样例输入

    192.168.0.1

    样例输出

    11000000101010000000000000000001
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<ctype.h>
    
    char s[100];
    void translate(int n)  //将10进制转换为8位的二进制
    {
    	int a[10];
    	int i,j;
    	i=0;
    	while(1)
    	{
    		a[i++]=n%2;
    		if(n/2==0) break;
    		n/=2;
    	}
    	i--;
    	for(j=1; j<8-i; j++)
    	{
    		printf("0");
    	}
    	for(j=i; j>=0; j--)
    	{
    		printf("%d",a[j]);
    	}
    }
    
    void decimalTobinary(char *s)
    {
    	int i,j,len,sum;
    	sum=0; i=0;len=strlen(s);
    	while(i<len)
    	{
    		if(s[i]!='.')
    		{
    			sum+=s[i]-'0';
    			sum*=10;
    		}
    		if(s[i]=='.' || i==len-1)
    		{
    			translate(sum/10);
    			sum=0;
    		}
    		i++;
    	}
    	printf("\n");
    }
    
    void binaryTodecimal(char *s)
    {
    	int sum,i,j;
    	sum=0;
    	for(i=0; i<=24; i+=8)
    	{
    		for(j=i; j<i+7; j++)
    		{
    			sum+=s[j]-'0';
    			sum*=2;
    		}
    		sum+=s[j]-'0';
    		printf("%d",sum);
    		if(i!=24)  printf(".");
    		sum=0;
    	}
    	printf("\n");
    }
    
    void solve()
    {
    	char *p;
    	while(gets(s))
    	{
    		p=strchr(s,'.');
    		if(p==NULL)
    		{
    			binaryTodecimal(s);
    		}
    		else
    		{
    			decimalTobinary(s);
    		}
    	}
    }
    
    int main()
    {
    	solve();
    	return 0;
    }
    


    作者:cpoint
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    iOS启动项目(二)引入第三方库
    Swift技巧(九)CGImage To CVPixelBuffer
    Swift技巧(四)设置照片尺寸和格式
    Swift技巧(十) Protocol 的灵活使用
    Alamofire5.0.0 以上报错
    Swift技巧(八)CVPixelBuffer To CGImage
    Swift技巧(十一)重写运算符
    Swift技巧(五)设置圆角的代码
    Swift技巧(七)重识 Array
    Swift技巧(六)设置按钮状态并更改
  • 原文地址:https://www.cnblogs.com/cpoint/p/3367336.html
Copyright © 2020-2023  润新知