路由表转发算法

#include<iostream>

#include<stdio.h> 

#include<string>

using namespace std;

struct p

{

unsigned char a;

unsigned char b;

unsigned char c;

unsigned char d;

}ip;

struct a

{

struct p p1;//目的网络 

struct p p2;//子网掩码 

char s[30];// 下一跳 

};

 

 

int main()

{

int i;

struct p x;

struct a record[5];

 

record[0].p1.a=128;

record[0].p1.b=96;

record[0].p1.c=39; 

record[0].p1.d=0;

record[0].p2.a=255;

record[0].p2.b=255;

record[0].p2.c=255;

record[0].p2.d=128;

strcpy(record[0].s,"接口m0");

record[1].p1.a=128;

record[1].p1.b=96;

record[1].p1.c=39;

record[1].p1.d=128;

record[1].p2.a=255;

record[1].p2.b=255;

record[1].p2.c=255;

record[1].p2.d=128;

strcpy(record[1].s,"接口m1");

record[2].p1.a=128;

record[2].p1.b=96;

record[2].p1.c=40;

record[2].p1.d=0;

record[2].p2.a=255;

record[2].p2.b=255;

record[2].p2.c=255;

record[2].p2.d=128;

strcpy(record[2].s,"R2");

record[3].p1.a=192;

record[3].p1.b=4;

record[3].p1.c=153;

record[3].p1.d=0;

record[3].p2.a=255;

record[3].p2.b=255;

record[3].p2.c=255;

record[3].p2.d=192;

strcpy(record[3].s,"R3");

record[4].p1.a=0;

record[4].p1.b=0;

record[4].p1.c=0;

record[4].p1.d=0;

record[4].p2.a=0;

record[4].p2.b=0;

record[4].p2.c=0;

record[4].p2.d=0;

strcpy(record[4].s,"R4");//默认路由

 

scanf("%d.%d.%d.%d",&x.a,&x.b,&x.c,&x.d);

 

 

 

for( i=0;i<=3;i++)

{

if(((x.a&record[i].p2.a)==record[i].p1.a)&&((x.b&record[i].p2.b)==record[i].p1.b)&&((x.c&record[i].p2.c)==record[i].p1.c)&&

((x.d&record[i].p2.d)==record[i].p1.d))

 

 {printf("%s/n",record[i].s);

 break;

 }

}

      if(i==4)

 {printf("%s/n",record[4].s);

 }

return 1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值