欢迎来到天天文库
浏览记录
ID:48594799
大小:39.00 KB
页数:24页
时间:2020-01-28
《华为_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();......inafunc6、tion:{result=optimize();ASSERT(result==simple());}这样,在调试阶段,如果简单算法和优化算法的结果不一致,就会打出断言。同时,在程序的发布版本,却不会包含笨重的simple()函数。——任何大型工程软件都需要预先设计良好的调试手段,而这里提到的就是一种有用的方法。一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age,在些链表中删除学生年龄等于age的学生信息。#include"stdio.h"#inclu7、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;i8、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
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();......inafunc6、tion:{result=optimize();ASSERT(result==simple());}这样,在调试阶段,如果简单算法和优化算法的结果不一致,就会打出断言。同时,在程序的发布版本,却不会包含笨重的simple()函数。——任何大型工程软件都需要预先设计良好的调试手段,而这里提到的就是一种有用的方法。一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age,在些链表中删除学生年龄等于age的学生信息。#include"stdio.h"#inclu7、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;i8、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
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;i8、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
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
此文档下载收益归作者所有