急求一道关于IP地址与子网掩码的C语言编程题(用C语言实现)

题目:任意给出一个IP地址和其掩码,请:(1)判断这个IP地址是否有效(2)判断这个掩码是否有效(3)列出此IP所在网络的全部有效IP地址(4)任意给出第二个IP地址,判... 题目:
任意给出一个IP地址和其掩码,请:
(1)判断这个IP地址是否有效
(2)判断这个掩码是否有效
(3)列出此IP所在网络的全部有效IP地址
(4)任意给出第二个IP地址,判断它是否和第一个IP地址处在同一子网中
展开
 我来答
舒hao
2014-05-29 · TA获得超过565个赞
知道小有建树答主
回答量:75
采纳率:100%
帮助的人:31.7万
展开全部
不知道您有没有学习过计算机网络。如果没有,下面简单介绍一下IP地址和掩码。
IP地址是32位的,也就是4字节。取值可以任意。
掩码也是32位的,一般建议前面的位都为1,后面的位都为0。所以本题:
(1)只要是32位的都是有效的。
(2)判断是否全1后面接全0,可用如下代码实现:
#include<stdio.h>
void main()
{
unsigned yanma,bianliang=0x80000000;
int isyanma=0,i;
printf("用十六进制输入一个32位整数\n");
scanf("%x",&yanma);
for(i=0;i<32;i++)
{
if(yanma==bianliang)
{
isyanma=1;
break;
}
bianliang=bianliang>>1;
bianliang+=0x80000000;
}
if(isyanma)
printf("%x是掩码\n",yanma);
else
printf("%x不是掩码\n",yanma);
}
(3)如果掩码的前n位为1,那么此IP所在网络全部有效IP地址是此IP地址的前n位不变,后面的位从全0到全1,比如IP地址为1.1.1.1掩码为FFFF0000,那么此IP地址所在网络的全部有效IP地址是从1.1.0.0到1.1.255.255。
(4)两个IP地址都与掩码进行二进制与,看得到的结果是否相同,如果相同则在同一子网中,否则不在同一子网中。这个用c很容易实现。
追问
能每一题都给出详细的程序吗?我们要交作业用的。
追答

在附件中。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式