zoukankan      html  css  js  c++  java
  • 【华为公司2014届校园招聘软件类上机考试样题】包含前两题答案

    2013-09-04 22:25:17

    华为公司2014届校园招聘软件类上机考试样题

    粤港澳    2013-08-30 13:49:20
    华为公司2014届校园招聘软件类上机考试样题  
    需进行上机考试的岗位:软件开发工程师、操作系统工程师、底层软件开发工程师、云计算开发工程师、DSP工程师 
    在线考试:机考系统的内核为VS2005及JDK1.7,使用Java答题时,类名必须为“Main”;使用C/C++答题时,使用VS2005支持的数据类型和函数。
    题目类型:涉及数组、链表、指针、字符串、循环、枚举、排序等等。
    考试时长:2小时
    考试题目:3道题(共计320分),初级题(60分),中级题(100),高级题(160分),难度递增。
     
    各难度上机考试样题
     
    初级题:从考试成绩中划出及格线 
    10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:
    (1) 及格线是10的倍数;
    (2) 保证至少有60%的学生及格;
    (3) 如果所有的学生都高于60分,则及格线为60分
     
    中级题:亮着电灯的盏数
     
    一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。
    n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。
    注:电灯数和学生数一致。
     
    高级题:地铁换乘
    已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。
    地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18
    地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15
     
    前两个题比较简单,最后一题有点难,没做,哪位大神做出来了分享一下哦。
     注意:
    1. 对bool变量取反,不能用按位取反运算符~,而应该用逻辑非!,因为用~时,因为操作数的整形提升,使得操作数为1时,结果仍为1,而非0;

    如下:

    bool b = true;  //布尔变量按位取反,与取非!效果不一样
        b = ~b;
        cout<<b<<endl;

    输出为1;

    若b为false,输出也为1。

     
    前两个题代码(欢迎交流指正):
      1 #include <iostream>
      2 #include <cassert>
      3 using namespace std;
      4 
      5 typedef size_t DataType;
      6 const int SIZE = 10;
      7 
      8 void DisplayArray(DataType *array,size_t len)
      9 {
     10     assert(array != NULL);
     11 
     12     size_t index = 0;
     13     while (index < len)
     14     {
     15         cout<<array[index]<<"	";
     16         ++index;
     17     }
     18     cout<<endl;
     19 }
     20 
     21 void DisplayArray(bool *array,size_t len)
     22 {
     23     assert(array != NULL);
     24 
     25     size_t index = 0;
     26     while (index < len)
     27     {
     28         cout<<array[index]<<"	";
     29         ++index;
     30     }
     31     cout<<endl;
     32 }
     33 
     34 //int compare(const DataType *p,const DataType *q)
     35 int compare(const void *p,const void *q)   //参数是void *类型
     36 {
     37     return (*(DataType *)p - *(DataType *)q);
     38 }
     39 
     40 DataType GetPassLine(DataType *scoreArray,size_t len)
     41 {
     42     assert(scoreArray != NULL);
     43     assert(len == 10);
     44 
     45     qsort(scoreArray,len,sizeof(DataType),compare);
     46 
     47     cout<<"the sorted score is : "<<endl;
     48     DisplayArray(scoreArray,len);
     49 
     50     if (scoreArray[0] > 60)
     51     {
     52         return 60;
     53     }
     54 
     55     return ( (scoreArray[4] / 10) * 10);
     56 }
     57 
     58 size_t GetNumberOfLigthOn(size_t n)
     59 {
     60     bool *OnOffState = new bool[n + 1];   //多申请一个空间,是的有效下标从1开始
     61     memset(OnOffState,1,n*sizeof(bool));   //有问题么?没问题
     62 
     63     size_t onCount = 0;
     64     size_t index;
     65     size_t j;
     66 
     67     for (index = 2;index <= n;++index)
     68     {
     69         //DisplayArray(OnOffState + 1,n);
     70 
     71         for (j = index;j <= n;j += index)
     72         {
     73             OnOffState[j] = !OnOffState[j];  //不能OnOffState[j] = ~OnOffState[j];
     74         }
     75     }
     76 
     77     for (index = 1;index <= n;++index)
     78     {
     79         onCount = OnOffState[index] ? (onCount + 1) : onCount;
     80     }
     81 
     82     return onCount;
     83 }
     84 
     85 
     86 void TestDriver()
     87 {
     88     //测试GetPassLine
     89     //DataType scoreArray[SIZE] = {61,67,89,71,  73,78,90,65, 100,82};   //60,全部及格
     90     //DataType scoreArray[SIZE] = {60,67,89,71,  73,78,90,65, 100,82};    //70,此时有7个及格
     91     ////DataType scoreArray[SIZE] = {60,67,89,62,  73,78,90,65, 100,82};    //70,有6个及格
     92 
     93     //size_t len = SIZE;
     94     //
     95     //cout<<"the pass line is : "<<GetPassLine(scoreArray,len)<<endl;
     96 
     97     //测试GetNumberOfLigthOn(size_t n)
     98     size_t numberOfLights = 10;
     99 
    100     cout<<GetNumberOfLigthOn(numberOfLights)<<" lights in "<<numberOfLights<<" are on finally!"<<endl;
    101 }
    102 
    103 int main()
    104 {
    105     /*bool b = false;  //布尔变量按位取反,与取非!效果不一样
    106     b = ~b;
    107     cout<<b<<endl;
    108 */
    109     TestDriver();
    110     return 0;
    111 }
  • 相关阅读:
    剑指offer-用两个栈实现队列
    Java数组判空的正确打开方式
    浏览器输入URL后后的过程
    HTTP状态码
    HTTP和HTTPS
    北京好未来公司linux面试题
    三剑客 -- sed
    三剑客 -- grep
    shell脚本
    自动化 -- expect
  • 原文地址:https://www.cnblogs.com/youngforever/p/3302229.html
Copyright © 2011-2022 走看看