准备-上机考试-华为
1、选秀节目打分
这里注意两点:
if(NULL==score||NULL==judge_type||0==n) {return 0; }
第二个地方,
sum=(int)(zhuanjia/zhuanjia_num*0.6+dazhong/dazhong_num*0.4);
这里题目中如果强调了平均分取整数,就应该注意小数所放的位置。
2、左右护法排序
这题刚开始看觉得简单,但是到实际编写的时候完全没思路。
其实我好笨笨阿,这个既然已经知道他的参数,那么完全不用担心是不是越界之类。
这里用的冒泡排序,也把快排复习一下。
if (1==n%2) //奇数 { int mid=n/2; int k=0; output[mid]=sort_input[k++]; for(int j=1;j<=n/2;j++) { output[mid-j]=sort_input[k++]; output[mid+j]=sort_input[k++]; } } else { int mid=n/2; int k=0; output[mid]=sort_input[k++]; for(int j=1;j<n/2;j++) { output[mid-j]=sort_input[k++]; output[mid+j]=sort_input[k++]; } output[0]=sort_input[k++]; }
这里注意它是以排序后的数组来排列的,以中心为开始向两边扩散。我写的程序:
void sort(int input[], int n, int output[]){int i,j;int *temp=new int[n];int t;for(i=0;i<n;i++) {for(j=i+1;j<n;j++) {if(input[i]<input[j]) { t=input[i]; input[i]=input[j]; input[j]=t; } } } if(n%2==0)//ou { j=1; output[n/2]=input[0];for(i=1;i<n/2;i++) { output[n/2-i]=input[j++]; output[n/2+i]=input[j++]; } output[0]=input[j]; }else //ji { j=1; output[n/2]=input[0];for(i=1;i<=n/2;i++) { output[n/2-i]=input[j++]; output[n/2+i]=input[j++]; }/* output[0]=input[j++]; output[n-1]=input[j];*/ } }
这里注释里的内容是我先写的,后来改了也可以,不改也可以,主要注意几点:
1、n/2+n/2不等于n,因为整数的取整(当N是奇数的时候)。
2、delete ... 是很好的习惯;
3、 注意Input里面的那个标示的加减不要和外面的弄混。
int *sort_input=new int[n]; for(int i=0;i<n;i++) { sort_input[i]=input[i]; }
3、操作系统任务调度
这一提说起来比较简单,我写的代码:
void scheduler(int task[],int n,int system_task[],int user_task[]){int *system_value=new int[n];int *user_value=new int [n];int * system_num=new int[n];int * user_num=new int[n];int temp; int i,j=0,k=0,m;for(i=0;i<n;i++) {if(task[i]>255||task[i]<0) ; else if(task[i]<50) { system_value[j]=task[i]; system_num[j++]=i; }else { user_value[k]=task[i]; user_num[k++]=i; } } for(i=0;i<j;i++) {for(m=i+1;m<j;m++) {if(system_value[m]<system_value[i]) { temp=system_value[m]; system_value[m]=system_value[i]; system_value[i]=temp; temp=system_num[m]; system_num[m]=system_num[i]; system_num[i]=temp; } } } for(i=0;i<k;i++) {for(m=i+1;m<k;m++) {if(user_value[m]<user_value[i]) { temp=user_value[m]; user_value[m]=user_value[i]; user_value[i]=temp; temp=user_num[m]; user_num[m]=user_num[i]; user_num[i]=temp; } } }for(i=0;i<j;i++) { system_task[i]=system_num[i]; } system_task[i]=-1; for(i=0;i<k;i++) { user_task[i]=user_num[i]; } user_task[i]=-1; }
这么写虽然是对的,但并不是很好。看得思路也不是很清楚,而且,如果是人为打分的话,代码的可读性是很差的。
这是一种思路,还有一种思路,是将原有的数据进行排序,排序时也记录了序号的变化,最后再进行while全部遍历一遍,该加的加进来。记得最后delete 指针型变量。
注意事项:写出层次。
4、删除子串
哈哈,下面是我编写的代码:
int delete_sub_str(const char *str, const char *sub_str, char *result_str){int i,j=0,k,m=0;int num=0;for(i=0;i<strlen(str)/*sizeof(str)/sizeof(char)*/;i++) { j=0; k=i;while((str[k]!='\0')&&(str[k]==sub_str[j])) { k++; j++; }if(j==strlen(sub_str)) { i=k; result_str[m++]=str[k]; num++; }else{ result_str[m++]=str[i]; } }return num; }
有一点很重要:str[k]!='\0',因为很可能遇到要删除的内容是在要查阅的内容的最末尾。
还有,返回的这个result_str在最后最好还是加上'\0'比较好~~
5、高精度整数加法
这个题目比较没思路,看了看答案,觉得它的应该比我好:
1、首先,不用分的那么细,下面一句就挺好的:
if (num1[0]=='-'&&num2[0]=='-'||(num1[0]!='-'&&num2[0]!='-')) //作加法运算
另外两种情况另议。
当是同符号的时候,要减去前面的符号位,进行运算,result的末尾也记得要加\0。对于数据当然是从后往前取,但是总会有一个先到达符号位,对于后到达的项,继续用while去循环。到最后加\0,reverse(result).
2、
这个题目确实比较难,每一步都必须考虑好
当两者异号的时候,首先做一个分类,把绝对值较大的放在Num1,另一个放在Num2,传入到sub(char *,char *,char* result)中.然后在这个里面,对借位进行处理,如果一直为'0'就一直往前借位。
最后加入负号和\0休止符,最后倒转。倒转的方法也不难,就是前后交换,用一个中间变量。OK~
不去记0的ASCII码也无所谓,因为按照'0'相减等等就可以了~
6、数组比较
好吧,这个题目最重要的是读懂题意,还是比较容易的。
7、约瑟夫问题
考察的主要是建立循环链表,注意在建立的过程中node =new Node; node->data=input_array[i];p->next=node;p=node; 而p初始化为Node *p=head; 而head则是Node *head=new Node; head->data=input_array[0];
struct Node { int data; Node *next; }; void array_iterate(int len, int input_array[], int m, int output_array[]) { if (NULL==input_array||0==m||0==len) ; Node *node=new Node; Node *head=new Node; head->data=input_array[0]; Node *p=head; int k=0; for (int i=1;i<len;i++) { node=new Node; node->data=input_array[i]; p->next=node; p=node; } p->next=head; p=head; Node *q=new Node; int count; while (p->next!=p) { count=1; while (count<m) { q=p; p=p->next; count++; } m=p->data; output_array[k++]=m; q->next=p->next; p=q->next; } output_array[k]=p->data; }
恩,到此为止吧。
华为的上机考试,已经考完了。链表的操作还是不是特别熟,要多加练习。
转载于:https://www.cnblogs.com/liuliunumberone/archive/2011/09/27/2179468.html
准备-上机考试-华为相关推荐
- 华为上机考试注意事项及编程技巧
华为上机考试注意事项及编程技巧 这是一篇关于华为招聘软件类职位上机考试的博客,主要介绍一下华为机考的流程.注意事项以及一些机试题中常用的编程技巧,写得有点长,但都是尽心尽力敲的,如果真的要参加华为招聘 ...
- 2016年华为校招上机考试试题答案
2016年华为校招上机考试试题答案 [转载请注明出处]http://blog.csdn.net/guyuealian/article/details/50968368 华为 ...
- 华为校招软件上机考试题目解析
转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/52184215 http://www.ganecheng.tech/blog/521 ...
- 华为博士招聘上机考试题目_华为招聘机试题目
2012 届华为校园招聘上机考试题目( 9 月 6 日下午 1 点场) 昨天去参加了华为的校园招聘上机考试,题目一共三道,都比较简单,不要求 算法效率, 也不要求对所给数据的合法性作检测, 主要还是注 ...
- 华为2022通用硬件岗位招聘分享(一)上机考试
这几天刚过了华为的通用硬件上机考试,说一下考试的大概内容吧. 首先投的是数通的单板开发. 大体上来说,考的就是模电,数电,微机原理,然后杂散的内容比较多,有电磁兼容,电源拓扑(buck,boost等) ...
- 华为博士招聘上机考试题目_华为校园招聘上机考试题
<华为校园招聘上机考试题>由会员分享,可在线阅读,更多相关<华为校园招聘上机考试题(14页珍藏版)>请在人人文库网上搜索. 1.华为校园招聘上机考试题目(9月6日下午1点场) ...
- 2012届华为校园招聘上机考试题目(9月6日下午1点场)
昨天去参加了华为的校园招聘上机考试,题目一共三道,都比较简单,不要求算法效率,也不要求对所给数据的合法性作检测,主要还是注重基础知识的考察,和大家分享一下,希望对接下来的同学有所帮助. 1.选秀节目打 ...
- c语言程序设计上机考试占多少分,C语言程序设计上机考试题目汇编.doc
C语言程序设计上机考试题目汇编 C语言程序设计上机考试题目汇编 1.编写程序对ss字符中所有下标为奇数位置上的字母为大写 2.编写程序对指定字符在字符串a中出现的次数进行统计, 统计的数据存到b数组中 ...
- 安徽信息技术初中会考上机考试模拟_中学信息技术上机操作考试技巧
中学信息技术上机操作考试技巧 中学信息技术上机操作考试技巧 惠安三中 曾惠忠 [内容摘要] 本文是作者结合两年来福建省中学信息技术上机操作考试情况,对考生容易出现的一些问题加以分析.总结.希望本文的介 ...
最新文章
- 2021年大数据Spark(十九):Spark Core的​​​​​​​共享变量
- 300 多行代码搞定微信 8.0 的「炸」「裂」特效!
- Python 学习笔记(1)Hello Python
- 财务学python有什么用_学习Python对财务工作者有哪些用途?
- 为DedeCms的RSS生成绝对地址
- C语言:用字符读取流和输出流来读写入数据。(文本文件)
- Cacti迁移RRA数据迁移脚本
- 经典面试题(5):小心javascript自动插入分号机制
- 基于python开发的口罩供需平台
- 关于mqtt+js前端中mqtt服务器关闭重连服务器后js前端接收不到消息的问题
- 颜色RGB 与 html 代码 对照表
- 使用Arduino和Node.js实现网页界面控制LED的亮度
- 图片转换成代码的小工具Image2Lcd使用说明
- 在外部JS中使用validity进行表单验证出现未定义问题
- 数据库mysql+401.1_MySQL 数据库
- 一个程序员如何给LPL发弹幕加油
- python实例100例百度文库-18个Python爬虫实战案例(已开源)
- 导数求函数的单调性与极值习题
- 社交电商+新零售=社交新零售,没思路的创业者看过来
- java连接oracle报错_java 项目连接oracle 报错如下
热门文章
- 基础知识(二)matlab与c++混合编程之经验笔记
- 在java中对于构造函数_在Java语言中,下面有关于构造函数的描述正确的是()。
- 嵌入式linux面试题库,嵌入式linux面试题解析(二)——C语言部分三
- linux接收数据并保存到环形缓冲区,自定义print函数缓存打印数据到环形缓冲区...
- 2016年系统集成项目管理工程师最新考试说明
- Android常用名令集锦(图文并茂)!
- 【雕爷学编程】Arduino动手做(16)---数字触摸传感器
- 关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值的解决方法...
- Linux串口接收不到0X11数据
- classic example2