华为OJ题目 -- 初级篇(机试OJ平台)
华为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平台)相关推荐
- 华为2014校园招聘的机试题目
华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...
- 华为2014校园招聘合肥机试
华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...
- 2021华为9.1秋招机试
9.1号的机试终于来了,怀着被暴击的心情,提前15分钟打开了浏览器,等待着"开始答题". 终于到19:00了,点击"开始答题",粗略的看了三道题,好家伙,除了最 ...
- 清华机试oj——手机按键
题目描述 按照手机键盘输入字母的方式,计算所花费的时间如:a,b,c都在"1"键上,输入a只需要按一次,输入c需要连续按三次.如果连续两个字符不在同一个按键上,则可直接按,如:ad ...
- 华为2018实习生软件岗机试题目(2018.04.10)
刚刚做完笔试题目,题目具体内容记得不是很清楚了,请见谅.一共三道题目,时间120分钟. 第一题 题目描述 输入一行字符串(字母或者数字,可能含重复值),按照其ASCII码顺序输出. 比如: 输入 ...
- 华为2015年实习招聘机试
今天下午1点15分至3点15分,在华工实验室进行了华为实习招聘考试.一共三道题,我只做出了两道.其中第二道第一次提交时没通过,原因是没考虑到字符串可能含有空格,而cin >> myStr在 ...
- 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)
题三: (样题,已对外公布)Word Maze(单词迷宫) 描述: Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先 ...
- 2021.7华为海思数字IC机试(回忆版)
题型:30单选(2分)+10多选(4分) 考察内容(列出关键字) 综合前.综合后仿真 Verilog编程(考了好几道,重点,熟悉常用的指令和符号优先级) Verilog关键字 uvm sequence ...
- 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- 大师兄教你如何过华为机试
大师兄教你如何过华为机试 宝典1-内功心法 大华为这个大数据时代土豪金海量式的招聘又要开始了!!! 近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是与技术有关的内容,所 ...
最新文章
- php用户登录后跳转到主页,phpmyadmin登录后跳到首页的问题
- F - 数据结构实验之排序六:希尔排序
- 荐号 | 11个人工智能与大数据相关的个人、企业优质号
- 基于ZooKeeper实现HA高可用性以及自动主备切换
- 检测到磁盘可能为uefi引导_在本地硬盘安装WinPE系统,实现UEFI引导,摆脱U盘
- java中简单的if语句_java中if语句的写法
- 使用linux服务器实现路由器的功能(实验)
- matlab fftshift
- Emmagee工具的使用以及csv数据分析
- 手机射频电路全面解析
- base64编码转图片格式
- 谷歌学术高级搜索技巧
- 毕业论文选题基于Web网站或Android APP的设计与实现
- Matlab中的c2d函数离散化
- 集算器读写 json
- oracle空的显示成减号,qdrzq
- 2019全国大学生电子设计大赛(回忆录)
- ESP32学习笔记(27)——BLE GAP主机端扫描
- 玩手机惹怒丈夫 男子用菜刀砍死怀孕8个月妻子
- mysql 频繁连接中断_记一次网络原因导致的mysql连接中断问题(druid)
热门文章
- AD 09 PCB生成GERBER生产文件全过程
- 手机组态软件 APP监控台达PLC C#全套源代码,C#开发上位机手机APP
- 威纶通触摸屏上传错误_电气人都头疼的威纶通触摸屏常见问题详解,太管用啦...
- 解析rtcm32报文工具_rtcm数据格式技术分享
- acr122 java,ACR122U使用教程
- java acr122 读取数据_acr122读写器软件下载-Acr122读写软件 1.59 官方版 - 河东下载站...
- 计算机四级网络工程师题库及详细知识点大全
- 48页PPT|小米用户画像实战,每页都是经典
- VS Code弹窗:尝试在目标目录创建文件时出错
- 雨听|生成mac风格代码块