c语言以IP地址形式输出
发表在C语言图书答疑 2010-07-11
是否精华
版块置顶:
#include<stdio.h>
int bin_dec(int x, int n)          /*自定义函数将二进制数转换成十进制数*/
{
    if (n == 0)
     /*递归结束条件*/
    {
        return 1;
    }
    return x *bin_dec(x, n - 1);         /*递归调用bin_dec()函数*/
}
main()
{
    int i;
    int ip[4] ={0};
    char a[33];            /*存放输入的二进制数*/
    printf("please input binary number:\n");
    scanf("%s", a);           /*二进制数以字符串形式读入*/

    for (i = 0; i < 8; i++)
    {
        if (a[i] == '1')
        {
            ip[0] += bin_dec(2, 7-i);        /*计算0-7转换的结果*/
        }
    }
    for (i = 8; i < 16; i++)
    {
        if (a[i] == '1')
        {
            ip[1] += bin_dec(2, 15-i);       /*计算8-15转换的结果*/
        }
    }
    for (i = 16; i < 24; i++)
    {
        if (a[i] == '1')
        {
            ip[2] += bin_dec(2, 23-i);        /*计算16-23转换的结果*/
        }
    }
    for (i = 24; i < 32; i++)
    {
        if (a[i] == '1')
        {
            ip[3] += bin_dec(2, 31-i);        /*计算24-31转换的结果*/
        }
        if (a[i] == '\0')
        {
            break;
        }
    }
    printf("ip:\n");
    printf("%d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);    /*将最终结果以ip形式输出*/
}





中间int bin_dec(int x, int n)          
{
    if (n == 0)
     /*递归结束条件*/
    {
        return 1;
    }
    return x *bin_dec(x, n - 1);         /*递归调用bin_dec()函数*/
}

和     for (i = 0; i < 8; i++)
    {
        if (a[i] == '1')
        {
            ip[0] += bin_dec(2, 7-i);        /*计算0-7转换的结果*/
        }
    }是怎样做的,我想知道详细的过程。我是自学的。
分享到:
精彩评论 1
Lemon
学分:0 LV1
2010-07-13
沙发
您好!

递归过程bin_dec() 当n=0的时候结束递归调用,否则继续调用函数本身。

例如 
   函数过程 a=bin_dec(2,3)的执行过程
   a=2*bin_dec(2,2)
   a=2*2*bin_dec(2,1)
   a=2*2*2*bin_dec(2,0)
   a=2*2*2*1
   a=8
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照