华为上机笔试 难题

这篇博客包含三道编程题目,分别是:根据IP地址和掩码进行A-E类分类,英文句子单词逆序排列,以及C语言中交换字符串的方法。题目要求分别统计不同类型IP的数量,实现句子逆序输出,以及理解并应用C语言中的strcpy函数进行字符串交换。
摘要由CSDN通过智能技术生成
</pre><pre name="code" class="cpp">#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s;
	int a[7]={0};
	while(cin>>s)
	{
		int i=0;
		int b[8];
		for(int q=0;q<8;q++)
		{
			int m=0;
			for(;(s[i]!='.')&&(s[i]!='~')&&(s[i]!='\0');i++)
			{
				m++;
                s[i]=s[i]-'0';
			}
			
			//if(m==0)
				//a[5]=a[5]+1;
			if(m==1)
				b[q]=s[i-1];  //
			if(m==2)
			{
				b[q]=10*s[i-2]+s[i-1];
			}
			if(m==3)
			{
				b[q]=100*s[i-3]+10*s[i-2]+s[i-1];
			}
			//else
				//a[5]=a[5]+1;
	        i++;
		}
		if(((b[4]-b[5])!=0&&(b[4]-b[5])!=255)||((b[5]-b[6])!=0&&(b[5]-b[6])!=255)||((b[6]-b[7])!=0&&(b[6]-b[7])!=255)||b[0]>255||b[1]>255||b[2]>255||b[3]>255||b[0]<0||b[0]==127)
			a[5]=a[5]+1;
		else
		{
			if(b[0]>=1&&b[0]<=126)
				a[0]=a[0]+1;
			if(b[0]>=128&&b[0]<=191)
				a[1]=a[1]+1;
			if(b[0]>=192&&b[0]<=223)
				a[2]=a[2]+1;
			if(b[0]>=224&&b[0]<=239)
				a[3]=a[3]+1;
			if(b[0]>=240&&b[0]<=255)
				a[4]=a[4]+1;
			if(b[0]==10)
				a[6]=a[6]+1;
			if(b[0]==172&&(b[1]>=16)&&(b[1]<=31))
				a[6]=a[6]+1;
			if(b[0]==192&&(b[1]==168))
				a[6]=a[6]+1;
		}
	}
	for(int j=0;j<7;j++)
		cout<<a[j]<<' ';
	return 0;
}



题目描述

请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。


所有的IP地址划分为 A,B,C,D,E五类


A类地址1.0.0.0~126.255.255.255;


B类地址128.0.0.0~191.255.255.255;


C类地址192.0.0.0~223.255.255.255;


D类地址224.0.0.0~239.255.255.255;


E类地址240.0.0.0~255.255.255.255




私网IP范围是:


10.0.0.0~10.255.255.255


172.16.0.0~172.31.255.255


192.168.0.0~192.168.255.255




子网掩码为前面是连续的1,然后全是0。(例如:255.255.255.32就是一个非法的掩码)
本题暂时默认以0开头的IP地址是合法的,比如0.1.1.2,是合法地址



输入描述:
 
 

多行字符串。每行一个IP地址和掩码,用~隔开。

输出描述:
 
 

统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数,之间以空格隔开。


输入例子:
10.70.44.68~255.25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值