华为上机笔试 难题
2016-09-04 20:41
316 查看
</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.254.255.0 1.0.0.1~255.0.0.0 192.168.0.2~255.255.255.0 19..0.~255.255.255.0
输出例子:
1 0 1 0 0 2 1
题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明/**
* 反转句子
*
* @param sentence 原句子
* @return 反转后的句子
*/
public String reverse(String sentence);
输入描述:将一个英文语句以单词为单位逆序排放。输出描述:得到逆序的句子
输入例子:
I am a boy
输出例子:
boy a am I
#include <iostream> #include <string> using namespace std; int main() { char a[1000]; char b[1000]; while(gets(a)) { int n=0; int m; for(;a !='\0';n++); int l=n-1; for(int i=n-1;i>=0;i--) { if((a[i]==' ')||i==0) { m=i; if(i==0) m=-1; int g; int r=m+1; for(g=n-1-l;(g<n&&(g<=n-m-2));g++) { b[g]=a[r]; r++; } /*if(g==n-1) b[g]=a[0];*/ if(g<n) b[g]=' '; l=m-1; } } for(int i=0;i<n;i++) cout<<b[i]; cout<<endl; } return 0; }
题目描述
给定n个字符串,请对n个字符串按照字典序排列。输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
输入例子:
9 cap to cat card two too up boat boot
输出例子:
boat boot cap card cat to too two upC语言中交换两个字符串需要借助strcpy函数或者使用自定义交换函数进行交换如交换a,b数组中的字符串代码:
#include <iostream>
#include "string.h"
//#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
char a[1000][100]; //
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>(a[i]); //gets()?
for(int i=0;i<n;i++)
{
for(int j=n-1;j>=1;j--) //
{
int g,h;
for(g=0;(a[j][g])!='\0';g++);
for(h=0;(a[j-1][h])!='\0';h++);
//cout<<g<<h<<endl;
//for(int q=0;q<strlen(a[j])&&q<strlen(a[j-1]);) //?
for(int q=0;q<=g&&q<=h;)
{
/*if(a[j][q]>='a')
a[j][q]=a[j][q]-32;
if(a[j-1][q]>='a')
a[j-1][q]=a[j][q]-32;*/
if(a[j][q]<a[j-1][q])
{
/*string temp1,temp2;
temp1=a[j-i];
temp2=a[j];
a[j]=temp1;
a[j-1]=temp2;*/
/*a[j-1]=a[j];
a[j]=temp;*/
char temp[100];
strcpy(temp,a[j-1]);
strcpy(a[j-1],a[j]);
strcpy(a[j],temp);
//cout<<a[j]<<a[j-1]<<endl;
break;
}
if(a[j][q]>a[j-1][q])
break;
else
q++;
}
}
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
}
//system("pause");
return 0;
}
题目描述
王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 | 附件 |
电脑 | 打印机,扫描仪 |
书柜 | 图书 |
书桌 | 台灯,文具 |
工作椅 | 无 |
输入描述:输入的第 1 行,为两个正整数,用一个空格隔开:N m(其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。)从第 2 行到第 m+1 行,第 j 行给出了编号为 j-1 的物品的基本数据,每行有 3 个非负整数 v p q(其中 v 表示该物品的价格( v<10000 ), p 表示该物品的重要度( 1 ~ 5 ), q 表示该物品是主件还是附件。如果 q=0 ,表示该物品为主件,如果 q>0 ,表示该物品为附件, q 是所属主件的编号) 输出描述: 输出文件只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值( <200000 )。
输入例子:
1000 5 800 2 0 400 5 1 300 5 1 400 3 0 500 2 0
输出例子:
2200
相关文章推荐
- tensorflow的OS X构建机器学习环境
- Java流
- C#设计模式学习小结之四 状态模式
- linux环境下如何快速升级你的Node.js
- C# 通过ConfigurationManager获取配置信息
- 如何做论文报告
- c#之MVC模式
- Linux下core dump调试--gdb
- 阿里前端编程题1
- CSS Sprites技术的优缺点
- 用两张图片实现的2D动画效果(翻转)
- Python_正则表达式
- 在kali linux之下 下载并解压的文件名呈现乱码 解决方案
- time.h
- Activity和Intent机制学习笔记
- 【Effective Java】2、构造参数过多的时候
- SCP 命令
- 四大组件:BroadCastReceiver广播
- [Linux] Crond 定时任务
- CSS3 变形效果(下)(20160830-0030)