华为OJ初级篇是本人搜集的一些题目,都run过OK,初级题我个人感觉必要在15-20min以内完成,不然时间不够用,一共三道,后两道中高级题目。
题目一:
操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越 高。
函数接口 void scheduler(int task[], int n, int system_task[], int user_task[])
函数scheduler实现如下功能:
将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),
并且优先级高的任务排在前面,数组元素为-1表示结束。

例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}
system_task[] = {0, 3, 1, 7, -1}
user_task[] = {4, 8, 2, 6, -1}

代码:
OJ.CPP

#include <stdio.h>
#include <string.h>
#include "oj.h"void bubble_sort(struct elem *src, int len)
{int i,j;int temp;int flag =1;for(i=0;i<=len-2 && flag;i++){flag = 0;for(j=0; j<=len-2-i; j++){if(src[j].val > src[j+1].val){temp = src[j].val;src[j].val = src[j+1].val;src[j+1].val = temp;temp = src[j].index;src[j].index = src[j+1].index;src[j+1].index = temp;flag = 1;}}}
}void choose_sort(struct elem *src, int len)
{int i,j;int ch;int temp;for(i=0;i<=len-2;i++){ch=i;for(j=i+1; j<=len-1; j++){if(src[ch].val > src[j].val) ch = j;}if(i != ch){temp = src[ch].val;src[ch].val = src[i].val;src[i].val = temp;temp = src[ch].index;src[ch].index = src[i].index;src[i].index = temp;}}
}void scheduler(int task[], int len, int system_task[], int user_task[])
{struct elem small[100];struct elem big[100];int i;int m=0,n=0;for(i=0; i<len; i++){if(task[i]<0 || task[i]>255) continue;if(task[i]<50){small[m].index = i;small[m].val = task[i];m++;}else{big[n].index = i;big[n].val = task[i];n++;}}bubble_sort(small,m);bubble_sort(big,n);for(i=0; i<m; i++)system_task[i] = small[i].index;system_task[m] = -1;for(i=0; i<n; i++)user_task[i] = big[i].index;user_task[n] = -1;
}

OJ.H

#ifndef __OJ_H__
#define __OJ_H__/*
功能:输入:输出:返回:
*/void scheduler(int task[], int n, int system_task[], int user_task[]);struct elem{int val;int index;
};#endif

从这里大家也可以熟悉一下OJ考试平台,平台测试比较严格,很多同学反映自己在VS上测试都通过,但是一上OJ就出问题,首先我要说的是,不要怀疑OJ,毕竟很多人都过了,要坚信你代码要么写的不规范,要么入口或其他条件未判断。

这个题目比较坑,一开始我用选择排序,妈蛋的,居然在比如用例为:
int task[] = {255,255,0,-1,256,2,138}; 255,255的下标会交换,不得已改为冒泡好了。

题目二:
我国公民的身份证号码特点如下:
1、 长度为18位;
2、 第1~17位只能为数字;
3、 第18位可以是数字或者小写英文字母x。
4、 身份证号码的第7~14位表示持有人生日的年、月、日信息。

例如:511002198808080111或51100219880808011x。

请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校验。年份大于等于1900年,小于等于2100年。
需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整除 或 能被400整除的年份,闰年的2月份为29天,非闰年的2月份为28天。
其他情况的合法性校验,考生不用考虑。

函数返回值:
1) 如果身份证号合法,返回0;
2) 如果身份证号长度不合法,返回1;
3) 如果身份证号第1~17位含有非数字的字符,返回2;
4) 如果身份证号第18位既不是数字也不是英文小写字母x,返回3;
5) 如果身份证号的年信息非法,返回4;
6) 如果身份证号的月信息非法,返回5;
7) 如果身份证号的日信息非法,返回6(请注意闰年的情况);
【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

要求实现函数:
int verifyIDCard(char* input)
【输入】 char* input,表示输入的身份证号码字符串
【输出】 无
【返回】 判断的结果,类型为int

#include <stdio.h>
#include <string.h>
#include "oj.h"int str2num(char *src, int len)
{int i;int res=0;int flag = 1;for(i=len-1; i>=0; i--){res+= (src[i]-'0')*flag;flag *= 10;}return res;
}int verifyIDCard(char *input)
{int i=0;int year,month,day;int len = strlen(input);if(len!=18) return 1;for(i=0;i<17;i++){if(input[i]<'0' || input[i]>'9') return 2;}if((input[17]<'0' || input[17] >'9') && (input[17] != 'x'))return 3;year = str2num(input+6,4);month = str2num(input+10,2);day = str2num(input+12,2);if(year <1900 || year >2100) return 4;if(month<1||month>12) return 5;if(day<1||day>31) return 6;if(month==2){if((year%4 == 0)&&(year%100 != 0) || (year%400 == 0)){if(day>29) return 6;}else{if(day>28) return 6;}}return 0;
}

题目三:
判断输入的字符串是不是一个有效的IP地址
详细描述:
请实现如下接口
boolisIPAddressValid(constchar* pszIPAddr)

输入:pszIPAddr 字符串
输出:true 有效的IP地址,false,无效的IP地址

约束
输入IP为XXX.XXX.XXX.XXX格式
字符串两端含有空格认为是合法IP
字符串中间含有空格认为是不合法IP
类似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP
子段为单个0 认为是合法IP,0.0.0.0也算合法IP

#include "IPAddressValid.h"int string2int(char *s, int len)
{int res=0;int f = 1;int i=0;for(i=len-1; i>=0; i--){res = res + (s[i] - '0')*f;f = f*10;}return res;
}bool isIPAddressValid(const char* pszIPAddr)
{// 请在此处实现int len=0,i=0,j=0,k=0;int count=0;char src[100] = {0};char s[10]={0};// 如果不加 就出现运行错误,他妈的if(pszIPAddr == 0 || pszIPAddr == "") return false; while(pszIPAddr[len]) {src[len] = pszIPAddr[len];len++;}src[len] = '\0';for(i=0;i<len;i++){if((i==0 || i==len-1)&&(src[i] == ' ')) continue;if((src[i]<'0' || src[i] >'9')&& (src[i]!='.'&& src[i]!=' ')) return false; s[j++] = src[i];if(src[i] == '.')       {   count++;if(src[i+1] == '.' || src[i+1] == '\0') return false;if(j>4) return false;if(j>2 && s[0] == '0') return false;for(k=0;k<j-1;k++){if(s[k] == ' ') return false;}if(j==4){if(string2int(s,3) > 255) return false;}j=0;}}if(count!=3) return false;return true;
}

华为OJ题目 -- 初级篇(机试OJ平台)相关推荐

  1. 华为2014校园招聘的机试题目

    华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...

  2. 华为2014校园招聘合肥机试

    华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...

  3. 2021华为9.1秋招机试

    9.1号的机试终于来了,怀着被暴击的心情,提前15分钟打开了浏览器,等待着"开始答题". 终于到19:00了,点击"开始答题",粗略的看了三道题,好家伙,除了最 ...

  4. 清华机试oj——手机按键

    题目描述 按照手机键盘输入字母的方式,计算所花费的时间如:a,b,c都在"1"键上,输入a只需要按一次,输入c需要连续按三次.如果连续两个字符不在同一个按键上,则可直接按,如:ad ...

  5. 华为2018实习生软件岗机试题目(2018.04.10)

    刚刚做完笔试题目,题目具体内容记得不是很清楚了,请见谅.一共三道题目,时间120分钟. 第一题 题目描述 输入一行字符串(字母或者数字,可能含重复值),按照其ASCII码顺序输出. 比如: 输入   ...

  6. 华为2015年实习招聘机试

    今天下午1点15分至3点15分,在华工实验室进行了华为实习招聘考试.一共三道题,我只做出了两道.其中第二道第一次提交时没通过,原因是没考虑到字符串可能含有空格,而cin >> myStr在 ...

  7. 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)

    题三: (样题,已对外公布)Word Maze(单词迷宫) 描述: Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先 ...

  8. 2021.7华为海思数字IC机试(回忆版)

    题型:30单选(2分)+10多选(4分) 考察内容(列出关键字) 综合前.综合后仿真 Verilog编程(考了好几道,重点,熟悉常用的指令和符号优先级) Verilog关键字 uvm sequence ...

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

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

  10. 大师兄教你如何过华为机试

    大师兄教你如何过华为机试 宝典1-内功心法 大华为这个大数据时代土豪金海量式的招聘又要开始了!!! 近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是与技术有关的内容,所 ...

最新文章

  1. php用户登录后跳转到主页,phpmyadmin登录后跳到首页的问题
  2. F - 数据结构实验之排序六:希尔排序
  3. 荐号 | 11个人工智能与大数据相关的个人、企业优质号
  4. 基于ZooKeeper实现HA高可用性以及自动主备切换
  5. 检测到磁盘可能为uefi引导_在本地硬盘安装WinPE系统,实现UEFI引导,摆脱U盘
  6. java中简单的if语句_java中if语句的写法
  7. 使用linux服务器实现路由器的功能(实验)
  8. matlab fftshift
  9. Emmagee工具的使用以及csv数据分析
  10. 手机射频电路全面解析
  11. base64编码转图片格式
  12. 谷歌学术高级搜索技巧
  13. 毕业论文选题基于Web网站或Android APP的设计与实现
  14. Matlab中的c2d函数离散化
  15. 集算器读写 json
  16. oracle空的显示成减号,qdrzq
  17. 2019全国大学生电子设计大赛(回忆录)
  18. ESP32学习笔记(27)——BLE GAP主机端扫描
  19. 玩手机惹怒丈夫 男子用菜刀砍死怀孕8个月妻子
  20. mysql 频繁连接中断_记一次网络原因导致的mysql连接中断问题(druid)

热门文章

  1. AD 09 PCB生成GERBER生产文件全过程
  2. 手机组态软件 APP监控台达PLC C#全套源代码,C#开发上位机手机APP
  3. 威纶通触摸屏上传错误_电气人都头疼的威纶通触摸屏常见问题详解,太管用啦...
  4. 解析rtcm32报文工具_rtcm数据格式技术分享
  5. acr122 java,ACR122U使用教程
  6. java acr122 读取数据_acr122读写器软件下载-Acr122读写软件 1.59 官方版 - 河东下载站...
  7. 计算机四级网络工程师题库及详细知识点大全
  8. 48页PPT|小米用户画像实战,每页都是经典
  9. VS Code弹窗:尝试在目标目录创建文件时出错
  10. 雨听|生成mac风格代码块