华为_IT公司笔试题.doc

华为_IT公司笔试题.doc

ID:48594799

大小:39.00 KB

页数:24页

时间:2020-01-28

华为_IT公司笔试题.doc_第1页
华为_IT公司笔试题.doc_第2页
华为_IT公司笔试题.doc_第3页
华为_IT公司笔试题.doc_第4页
华为_IT公司笔试题.doc_第5页
资源描述:

《华为_IT公司笔试题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、写一个程序,要求功能:求出用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

2、++;cout<

3、,78,...,0......z=19,x=5,3,1z=20,x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为:(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for(

4、intm=0;m<=100;m+=5){number+=(m+2)/2;}cout<

5、行为。那么,那种最容易想到的算法就完全没有用吗?不,这种算法正好可以用来验证新算法的正确性,在调试阶段,这非常有用。在很多大公司,例如微软,都采用了这种方法:在调试阶段,对一些重要的需要好的算法来实现的程序,而这种好的算法又比较复杂时,同时用容易想到的算法来验证这段程序,如果两种算法得出的结果不一致(而最容易想到的算法保证是正确的),那么说明优化的算法出了问题,需要修改。可以举例表示为:#ifdefDEBUGintsimple();#endifintoptimize();......inafunc

6、tion:{result=optimize();ASSERT(result==simple());}这样,在调试阶段,如果简单算法和优化算法的结果不一致,就会打出断言。同时,在程序的发布版本,却不会包含笨重的simple()函数。——任何大型工程软件都需要预先设计良好的调试手段,而这里提到的就是一种有用的方法。一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age,在些链表中删除学生年龄等于age的学生信息。#include"stdio.h"#inclu

7、de"conio.h"structstu{charname[20];charsex;intno;intage;structstu*next;}*linklist;structstu*creatlist(intn){inti;//h为头结点,p为前一结点,s为当前结点structstu*h,*p,*s;h=(structstu*)malloc(sizeof(structstu));h->next=NULL;p=h;for(i=0;i

8、f(structstu));p->next=s;printf("Pleaseinputtheinformationofthestudent:namesexnoage");scanf("%s%c%d%d",s->name,&s->sex,&s->no,&s->age);s->next=NULL;p=s;}printf("Createsuccessful!");return(h);}voiddeletelist(structstu*s,inta){structstu*p;while

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。