c语言以IP地址形式输出

[复制链接]
查看11 | 回复1 | 2013-7-16 19:39:35 | 显示全部楼层 |阅读模式
#include
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 == '1')

{

ip[0] += bin_dec(2, 7-i);
/*计算0-7转换的结果*/

}

}

for (i = 8; i < 16; i++)

{

if (a == '1')

{

ip[1] += bin_dec(2, 15-i);
/*计算8-15转换的结果*/

}

}

for (i = 16; i < 24; i++)

{

if (a == '1')

{

ip[2] += bin_dec(2, 23-i);
/*计算16-23转换的结果*/

}

}

for (i = 24; i < 32; i++)

{

if (a == '1')

{

ip[3] += bin_dec(2, 31-i);
/*计算24-31转换的结果*/

}

if (a == '\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 == '1')

{

ip[0] += bin_dec(2, 7-i);
/*计算0-7转换的结果*/

}

}是怎样做的,我想知道详细的过程。

回复

使用道具 举报

千问 | 2013-7-16 19:39:35 | 显示全部楼层
ip地址是以xxx.xxx.xxx.xxx表示而此程序则是将二进制转化为十进制,即将一个32位的数转换为十进制输出,先二进制数分为4个整体,每个整体有8个数,而其中的bin_dec()是将这个二进制数转换为十进制,且利用递归调用求出。下面是 for (i = 0; i < 8; i++)
{
if (a == '1')
{
ip[0] += bin_dec(2, 7-i);
/*计算0-7转换的结果*/
}
}转换的一个例子(列一个就行了,其余的都一样)设输入二进制数11111111
则bin_dec(2,7
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行