1.数字处理

题目描述:给出一个不多于5位的整数,进行反序处理,要求

(1)求出它是几位数

(2)分别输出每一个数字(空格隔开)

(3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间隔)

输入描述:位数不大于5的整数

输出描述:1.整数位数 2.空格间隔输出结果 3.逆序整数

#include<iostream>
#include<string>using namespace std;
int main()
{string str;char c;bool sign = false;while (cin >> str){int length = str.length();if (str[0] == '-' || str[0] == '+'){length--;c = str[0];sign = true;str = str.substr(1, length);}cout << length << endl;for (int i = 0; i < length; i++){cout << str[i] << " ";}cout << endl;if (sign){cout << c;}for (int i = length - 1; i >= 0; i--){cout << str[i];}cout << endl;}}

2

输入四个IP端,前两个为第一个IP段的起始和终止地址,后两个是第二个IP段的起始和终止地址,判断这两个IP段是否存在交集

输入描述:输入4个IP

输出描述:如果存在交集,输出 Overlap IP ; 如果不存在交集,输出 No Overlap IP

注意
数值范围,int为2^15-1,long为2^31-1,unsigned long为2^32-1,long long为2^63-1
long long str2num(string str)
{int length = str.length();string s[4];int i = 0;int index = 0;while (i < 3){int pos = str.find('.', index);s[i++] = str.substr(index, pos - index);index = pos + 1;}s[3] = str.substr(index);long long num = stoul(s[0]) * 256 * 256 * 256 + stoul(s[1]) * 256 * 256 + stoul(s[2]) * 256 + stoul(s[3]);return num;//注意数值范围,int为2^15-1,long为2^31-1,unsigned long为2^32-1
}int main()
{string ipTop1, ipEnd1, ipTop2, ipEnd2;while (cin >> ipTop1>>ipEnd1>> ipTop2>> ipEnd2){long long top1 = str2num(ipTop1);long long end1 = str2num(ipEnd1);long long top2 = str2num(ipTop2);long long end2 = str2num(ipEnd2);//cout << top1 << " " << end1 << " " << top2 << " " << end2 << endl;if (top1 > end2 || end1 < top2){cout << "No Overlap IP" << endl;}elsecout << "Overlap IP" << endl;}
}

3

题目

给定字符串内有很多正整数,要求对这些正整数进行排序,然后返回排序后指定位置的正整数 排序要求:按照每个正整数的后三位数字组成的整数进行从小到大排序
1)如果不足三位,则按照实际位数组成的整数进行比较
2)如果相等,则按照输入字符串中的原始顺序排序 说明(以下内容考生无须检查,调用者保证):
1) 字符串以’\0’结尾,仅包含数字、空格
2) 字符串内正整数之间以单个空格分隔,字符串首尾没有空格
3) 正整数格式为十进制,大小:1~1000000,正整数的数字非零开始 示例:
如字符串内容
1223 22 3232 2016按照规定排序后
2016 22 1223 3232查询排序后的第3个数是

1223

一个数的后三位可以直接用 num%1000就可以了,就取到了后3位

//3题
//思路一,比较明显的桶排序
vector<int> splitstr(string str)
{vector<int> num;int length = str.length();int index = 0;while (index<length){int pos = str.find(' ', index);//string中查找时用单引号if (pos == string::npos)break;num.push_back(stoi(str.substr(index, pos - index)));index = pos + 1;}num.push_back(stoi(str.substr(index)));   return num;
}vector<int> Sortnum(vector<int> num,int e)
{int output[100]; //涉及到不按顺序索引时,用数组int length = num.size();int bucket[10] = { 0 };for (int i = 0; i < length; i++)bucket[num[i] / e % 10]++;for (int i = 1; i < 10; i++)bucket[i] += bucket[i - 1];for (int i = length - 1; i >= 0; i--)output[--bucket[num[i] / e % 10]] = num[i];for (int i = 0; i < length; i++)num[i] = output[i];return num;
}
int main()
{string str;int N;while (getline(cin,str)){//输入一行字符可以用getline获得cin >> N;vector<int> num = splitstr(str);for (int e = 1; e <= 100; e *= 10){num = Sortnum(num, e);}cout << num[N - 1] << endl;}
}
//思路二,用简单的选择排序来做
vector<string> splitstr1(string str)
{vector<string> num;int length = str.length();int index = 0;while (index<length){int pos = str.find(' ', index);//string中查找时用单引号if (pos == string::npos)break;num.push_back(str.substr(index, pos - index));index = pos + 1;}num.push_back(str.substr(index));return num;
}vector<int> str2num(vector<string> num)
{int length = num.size();vector<int> n;for (int i = 0; i < length; i++){int len = num[i].length();string sub = num[i];if (len>3)sub = num[i].substr(len - 3);n.push_back(stoi(sub));}return n;
}vector<string> Sortstr(vector<string>num, vector<int> subnum)
{int length = subnum.size();for (int i = 0; i < length - 1; i++){int j = i + 1;int index = i;for (j = i + 1; j < length; j++){if (subnum[j]<subnum[index]){index = j;}}swap(subnum[i], subnum[index]);swap(num[i], num[index]);}return num;
}
int main()
{string str;int N;while (getline(cin,str)){//输入一行字符可以用getline获得cin >> N;vector<string> num = splitstr1(str);vector<int> subnum = str2num(num);num=Sortstr(num, subnum);cout << num[N - 1] << endl;}
}

2018华为校招机试题目练习相关推荐

  1. 2018华为校招机试题目

    华为机试一共3道题,第1题100分,第2题200分,第3题300分,满分600分.考试时间为两个小时.想拿sp,当然要全部AC了. 1.数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 ...

  2. 2016华为校招机试题目02

    题目: 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号.  处理: 1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加:(文件所在的 ...

  3. 校招linux面试题,2013华为校招机试与面试题整理

    2013华为校招机试与面试题整理 2013华为校招机试与面试题整理 1 (1.) 字母大小写反转 这到题没什么可说的,只是我很久没写这样要IO输入输出的代码,当时看到华为的提示纸条上写着"只 ...

  4. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  5. 2015华为校招机试面试

    昨天参加了华为南研所校招的机试,一共三道题,第一题很简单,输入一个字符串格式的日期,年-月,输出该月有多少天,主要注意闰年((%4==0&&%100!=0)||%400==0)2月的不 ...

  6. 华为校招机试真题目录

    专栏介绍 本专栏将逐步收集历年华为校招算法真题 专栏权益 每篇博客都包含: 算法考点解析(文字+画图) 算法源码(支持 Java / JS / Python) 每晚9:00 ~ 11:00 在线答疑 ...

  7. 华为博士招聘上机考试题目_华为招聘机试题目

    2012 届华为校园招聘上机考试题目( 9 月 6 日下午 1 点场) 昨天去参加了华为的校园招聘上机考试,题目一共三道,都比较简单,不要求 算法效率, 也不要求对所给数据的合法性作检测, 主要还是注 ...

  8. 华为2012机试题目及解答程序(仅供参考,版权归华为所有)

    题目:(原来是VC++ 6.0的环境,此处修改为简单cpp文件,不需要func.h文件 /* 请在这里实现下列函数, c c++语法不限, 最后需要保证程序编译连接通过, 并生成test.exe文件. ...

  9. 华为校招机试 - 检测热点字符(Java JS Python)

    目录 题目描述 输入描述 输出描述 用例 题目解析 JavaScript算法源码 Java算法源码

最新文章

  1. 201671010417 金振兴 词频统计软件项目报告
  2. python生成wheel包注意事项
  3. Vue.js – 基于 MVVM 实现交互式的 Web 界面
  4. Swift - 重写导航栏返回按钮
  5. 选择排序与冒泡排序的区别
  6. 通过rsync搭建一个远程备份系统(二)
  7. gvim for php,转 : Gvim建立IDE编程环境 (Windows篇)
  8. Flutter PageView左右滑动切换视图
  9. 特斯拉明年会有100万辆自动驾驶出租车 你敢坐吗?
  10. Vim中的remap,noremap,nnoremap和vnoremap映射命令有什么区别?
  11. spring security 注解_Spring框架使用@Autowired自动装配引发的讨论
  12. 写给想做好社区网站人员的一本书
  13. css+html+对错号,错号怎么打 接着点击符号/其他符号;
  14. word转简洁html工具,Convert Word to HTML(Word转HTML工具)
  15. 巴塞罗那2019-20赛季球队大名单
  16. 从维密天使到编程大拿,她的彪悍人生不需要解释!
  17. linux系统怎么数据恢复,linux系统数据恢复
  18. Android之WebView的使用与简单浏览器
  19. python青少年编程_机器人Python青少年编程开发实例
  20. 081020_文本分类(Text Classification)

热门文章

  1. centos8安装nfs服务器
  2. Cesium开发实践(二)模拟多架飞机飞行
  3. truncate表后恢复方法总结
  4. 30行代码—基于auto.js自动给女朋友发早安
  5. SpringBoot对接微信小程序支付功能开发(一,下单功能)
  6. AI神器竟然能代替PS抠图了
  7. Excel如何提取含有关键词的所有数据
  8. PTA L1-054 福到了 (15 分)
  9. Inte E3-1230 V2技嘉B75-D3V GTX660成功安装黑苹果
  10. 数字化转型时代,如何让你的 App 摆脱“内卷”?