华为机试一共3道题,第1题100分,第2题200分,第3题300分,满分600分。考试时间为两个小时。想拿sp,当然要全部AC了。

1.数字处理

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

(1)求出它是几位数

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

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

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

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

#include <vector>
#include <string>
#include <iostream>
using namespace std;int main()
{int iInput;int iNum=0;char* strRst="";int iOutput=0;cin >> iInput;int k = 0;int temp;int flag;int iTemp;if (iInput < -99999 || iInput > 99999)return -1;if (iInput < 0){flag = -1;iInput = -iInput;}elseflag = 1;temp = iInput;vector<int> resStr;while (temp){++iNum;iTemp = temp % 10;resStr.push_back(iTemp);iOutput = iOutput * 10 + iTemp;temp /= 10;}cout << iNum << endl;if (flag == -1)cout << "-";for (int i = iNum - 1; i >= 0; --i){if (i == iNum - 1)cout << resStr[i];else{cout << " " << resStr[i];}}cout << endl;iOutput = flag*iOutput;cout << iOutput << endl;system("pause");return 0;
}

2.IP地址交集判断

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

输入描述:输入4个IP

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

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cassert>
using namespace std;int *dec2bin(int decnum)
{int i, a, *b = { 0 };a = decnum;for (i = 7; i >= 0; i--){b[i] = a % 2;a = a / 2;}return b;
}int ipToInt(char *ipString)
{assert(ipString != NULL);int i = 0, j, n, count = 0, return_num = 0;char *tmp;int *tmp_num=NULL, *num=NULL, *d2b;char *s = ipString, *s_tmp=NULL;if (*s == '.')count++;count++;if (count != 4)return 0;while (*s != '\0'){if (*s != '.'){n = s - s_tmp;tmp = (char*)malloc(n*sizeof(char));memcpy(tmp, s, n);tmp_num[i] = atoi(tmp);d2b = dec2bin(tmp_num[i]);for (j = 0; j<8; j++)num[8 * i + j] = d2b[j];s++;i++;s_tmp = s;}s++;}if (*s = '\0'){n = s - s_tmp;tmp = (char*)malloc(n*sizeof(char));memcpy(tmp, s, n);tmp_num[i] = atoi(tmp);d2b = dec2bin(tmp_num[i]);for (j = 0; j<8; j++)num[8 * i + j] = d2b[j];}for (j = 0; j<32; j++)return_num = return_num * 2 + num[j];return return_num;
}int main(void)
{char *s1, *s2, *s3, *s4;s1 = new char;s2 = new char;s3 = new char;s4 = new char;cin >> s1 >> s2 >> s3 >> s4;int n1, n2, n3, n4, i;n1 = ipToInt(s1);n2 = ipToInt(s2);n3 = ipToInt(s3);n4 = ipToInt(s4);if (n4<n1 || n3>n2)cout << "No Overlap IP" << endl;elsecout << "Overlap IP" << endl;system("pause");return 0;
}

3.数字排序

题目描述: 给定字符串内有很多正整数,要求对这些正整数进行排序,然后返回排序后指定位置的正整数,排序要求:按照每一个正整数的后三位数字组成的整数进行从小到大排序(1)如果不足三位,则按照实际位数组成的整数进行比较(2)如果相等,则按照输入字符中的原始顺序排序

说明:(1)字符串以‘\0’结尾,仅包含数字、空格(2)字符串内正整数之间以单个空格分隔,字符串首尾没有空格(3)正整数格式为十进制,大小1~1000000,正整数的数字非零开始

输入描述:第一行为一个整数字符串,里面包含若干个整数,以空格分割,第二行为一个整数,即指定的位置

输出描述:输出指定位置的整数

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;int find_string(const char* input_string, int serial_number, int output_string_max_length, char* output_string)
{int size = strlen(input_string);vector<int> vec;int tmp = 0;for (size_t i = 0; i <= size; ++i){if (input_string[i] == ' ' || i == size){if (tmp == 0){return -1;}vec.push_back(tmp);tmp = 0;}else{tmp = tmp * 10 + input_string[i] - '0';}}int n = vec.size();for (int i = 0; i < n - 1; ++i){for (int j = 0; j < n - i - 1; ++j){if (vec[j] % 1000 > vec[j + 1] % 1000){swap(vec[j], vec[j + 1]);}}}if (serial_number > vec.size()){return -1;}char num[11];sprintf(num, "%d", vec[serial_number - 1]);int len = strlen(num);cout << num;return 0;
}int main()
{string s1;getline(cin, s1);int t;char *input_string = const_cast<char *>(s1.data());int serial_number, output_string_max_length=0;char* output_string = NULL;cin >> serial_number;t=find_string(input_string, serial_number, output_string_max_length, output_string);system("pause");return 0;
}

因为只要AC就可以了,所以代码写得不够简洁,求轻喷。如有更好的做法,欢迎交流。

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

  1. 2018华为校招机试题目练习

    1.数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 (1)求出它是几位数 (2)分别输出每一个数字(空格隔开) (3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间隔 ...

  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. oracle求sql的cpu贡献率,oracle 实时查询最耗CPU资源的SQL语句
  2. 用这样的方法,我解决了leetcode的大部分的这种题型!
  3. mysql集群数据引擎_MySQL数据引擎
  4. [恢]hdu 2511
  5. [C++] C++ Primer 笔记
  6. 360兼容模式页面错位_如何处理网站兼容性
  7. Delphi XE 操作sqlite数据库
  8. 网络操作系统与分布式操作系统的区别
  9. cad卸载不干净_流氓软件卸不干净?这6款超强软件卸载神器专治各种流氓软件...
  10. ThoughtWorks培训总结
  11. wingftpserver完整配置免费ftp站点(指南)
  12. PATC语言1-50
  13. 计算机网恢,电脑附身
  14. STM32单片机接直流减速电机编码器注意点
  15. linux 如何延迟100ms,Linux延时函数
  16. 软件盗版与非商业使用
  17. Android端实现多人音视频聊天应用(二):多人视频通话
  18. java插入数据到mysql数据库
  19. 计算机仿真法 实验报告,计算机仿真氢光谱实验报告(共6篇).doc
  20. PC安装Android TV x86 9.0 常见问题汇总

热门文章

  1. FANUC机器人iRVision-2D相机的安装和相关设置步骤
  2. swift-类结构源码探寻(一)
  3. Ubuntu20.04,ROS Neotic。Move It!(2)--初探机械臂控制--使用Python控制机器人
  4. 关于灯板上LED灯总是坏的问题
  5. 中等专业学校校园网设计——交换模块设计
  6. 鸿蒙系统注册谷歌教程
  7. 运营商的“逆袭”或将令苹果雪上加霜
  8. 评高工英语计算机免考条件,评高级工程师外语什么情况下免试?
  9. 非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.6 抽象类
  10. 旅游景区管理系统(四 )代码介绍和展示(MFC实现)