1 / 8
文档名称:

华为面试笔试题.doc

格式:doc   大小:38KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

华为面试笔试题.doc

上传人:文库旗舰店 2018/6/16 文件大小:38 KB

下载得到文件列表

华为面试笔试题.doc

文档介绍

文档介绍:华为硬件面试题[硬件工程师]
全都是几本模电数电信号单片机题目 :sram,ssram,sdram :在时域与频域关系 :和4题差不多 ,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期.. ..) ,特点,比较 ?(负逻辑?) ,判错 ,求回差电压 ,什么参数(压控振荡器?) 12. 13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号 14. 用D触发器做个4进制的计数 ? 一、研发(软件) 用C语言写一个递归算法求N!; 给一个C的函数,关于字符串和数组,找出错误; 防火墙是怎么实现的? 你对哪方面编程熟悉?硬件:1、继电器控制电路。2、SDRAM是怎么工作的3、写出逻辑表达式说明A2A1A0大于B2B1B0。4、常用触发器有几种5、示波器有几种触发方式,举出三种
华为笔试题含答案[软件工程题]
            写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。
如:100个1是一个组合,5个1加19个5是一个组合。。。。请用C++语言写。
答案:最容易想到的算法是:
    设x是1的个数,y是2的个数,z是5的个数,number是组合数
    注意到0<=x<=100,0<=y<=50,0<=z=20,所以可以编程为:
    number=0;
    for (x=0; x<=100; x++)
        for (y=0; y<=50; y++)
            for (z=0; z<=20; z++)
                if ((x+2*y+5*z)==100)
                    number++;
    cout<<number<<endl;
    上面这个程序一共要循环100*50*20次,效率实在是太低了
    事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:
    因为x+2y+5z=100
    所以x+2y=100-5z,且z<=20 x<=100 y<=50
    所以(x+2y)<=100,且(x+5z)是偶数
    对z作循环,求x的可能值如下:
     z=0, x=100, 98, 96, ... 0
     z=1, x=95, 93, ..., 1
     z=2, x=90, 88, ..., 0
     z=3, x=85, 83, ..., 1
     z=4, x=80, 78, ..., 0
     ......
     z=19, x=5, 3, 1
     z=20, x=0
    因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,
即为:
(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(