c++笔试题大全

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

c++试题(26)假设一个国家发行了n种面值的邮票,面值已知,并规定每封信上最多只能贴m张邮票,设计一个算法,求出在一个信封上能贴出的最大连续区间.例如发行了4种邮票面值分别为1,4,12,21.每封信上最多能贴5张邮票,求出能贴出的最大连续区间.即区间(a,b)则在a,b之间的任意个整数值都能构贴出来.原题即不清楚了,大意就这要,数据都是原题的.发表于@2006年02月25日23:01:00|评论(0)c++试题(24)摘要:24(全文共80字)——点击此处阅读全文发表于@2006年02月25日22:33:00|评论(0)c++试题(23)有一数组a[0..n-1],数组中的元素已排好序,设存在一元素a[m]=m,设计一算法,求得m,且时间复杂度为O(logN).#includestdio.hintfind(inta[],intn){intlow=0,high=n-1,m;while(low=high){m=(low+high)/2;if(a[m]==m)returnm;elseif(a[m]m)high--;elselow++;}return-1;}voidmain(){inta[5]={1,2,2,4,5};printf(%d,find(a,5));}发表于@2006年02月25日22:30:00|评论(0)c++试题(27)PartA1)实现stringtoHex(int)把一个十进制转换成十六进制。(完全用算法实现)2)实现一个计算大位数(如100位以上)相乘结果的函数stringmultiply(sting,string)。(请完全用算法实现)3)一个数据库中有两个表,一张表为Customer,含字段ID,Name,一张表为Order,含字段ID,CustomerID(连向Customer中ID的外键),Revenue;写出求每个Customer的Revenue总和的SQL语句。4)一个学生成绩登记系统,其中学生和课程均是可添加的,请设计一个库表结构实现,尽量保证系统使用中库表结构不再改变。5)请简要描述出你最熟悉的技术架构,包括架构中的各种中间件。(建议用图的形式)PartB1)请简述CriticalSection和Mutex的不同点。2)请描述下面函数声明中各个const的作用:constchar*Test()const3)举3个以上ASP.Net与ASP相比的进步。4)ASP.Net中usercontrol和customcontrol的区别。5)用一个C语言用来删除单链表的头元素的函数,请找出其中的问题并加以纠正。voidRemoveHead(node*head){free(head)head=head-next}6)试编写函数判断计算机的字节存储顺序是开序(littleendian)还是降序(bigendian)7)给定如下SQL数据库:Test(numINT(4))请用一条SQL语句返回num的最小值,但不许使用统计功能,如MIN,MAX等。8)输出下面程序结果。#includeiostream.husingnamespacestd;classA{public:virtualvoidprint(void){coutA::print()endl;);};classB:publicA{public:virtualvoidprint(void){coutB::print()endl;};};voidprint(Aa){a.print();}voidmain(void){Aa,*pa,*pb,*pc;Bb;Cc;pa=&a;pb=&b;pc=&c;a.print();b.print();c.print();pa-print();pb-print();pc-print();print(a);print(b);print(c);}c++试题(22)有些非负整数文件中存在许多连续相等的整数段。设计程序将这种整数原文件按以下规则压缩到另一个压缩文件中:.一个连续相等的整数段,如有C(C1)个连续相等整数,在压缩文件中存入C和这个整数。.一个不连续相等的整数段,如有C(C≥1)个整数,其中每个整数都与其相邻的整数不等,在压缩文件中存入-C和这C个整数。例如,原文件为222444838111121则它的压缩文件为3234-383841-221voidmain(){intn,c=1,d=1,i;intt=0;inta[max],b[max];cout请输入n的值:endl;cinn;cout请输入数据组a的值:endl;for(i=0;in;i++)cina[i];for(i=0;i2*n;i++)b[i]=0;for(i=0;in;i++){if(a[i]==a[i+1]&&t==0){if(d=1){d--;for(intj=0;jn;j++){if(b[j]==0){b[j]=-d;for(intk=0;k=d;k++)b[j+k+1]=a[i+k-d];break;}elsecontinue;d=0;}}c++;}elset=1;d++;if(t==1&&c1){for(intj=0;jn;j++)if(b[j]==0){b[j]=c;b[j+1]=a[i];break;}t=0;c=1;}if(i==n-1){if(d==n){b[0]=-d;for(i=0;in+1;i++)b[i+1]=a[i];}else{for(intj=0;jn;j++){if(b[j]==0){b[j]=-d;for(intk=0;k=d;k++)b[j+k+1]=a[i+k-d];break;}}}}}for(i=0;i2*n;i++){if(b[i]!=0)coutb[i]endl;elsebreak;}}#includeiostream#includecstdlibusingnamespacestd;int*make(int*a,int&n){inti=0,j=-1,k=0;int*b=(int*)malloc(2*n*sizeof(int));while(n-i){if(a[i]==a[i+1]){while(a[i]==a[i+1]){i++;if(i==n-1)break;}b[k++]=i-j;b[k++]=a[i];j=i;i++;}else{while(a[i]!=a[i+1]){i++;if(i==n-1){i++;break;}}b[k++]=j-i+1;while(++ji)b[k++]=a[j];j--;}}b=(int*)realloc(b,k*sizeof(int));n=k;returnb;}intmain(){inta[]={1,2,1,2,2,2,4,4,4,8,3,8,1,1,1,1,1,1,2,2,2,5,6,9,9,9,2,1},len=sizeof(a)/sizeof(int);int*b=make(a,len);for(inti=0;ilen;i++)coutb[i];coutendl;system(PAUSE);return0;}发表于@2006年02月25日21:59:00|评论(0)c++试题(21)问题:老板每天给员工发工资,表现形式为金条。每个员工劳动七天可得一根金条,每根金条只能切两刀。要求员工每天领到工资。如果您是老板,您该怎样发工资?(用程序表示)。这样切(切两刀后出现三份1234是一份,56是一份,7是一份):1234|56|7编号结果第一天老板给员工7员工拥有1/7(编号为7的那份)第二天员工用7换老板的56员工拥有2/7(编号为56的那份)第三天老板给员工7员工拥有3/7(编号为7和编号为56的两份)第四天员工用7和56换老板的1234员工拥有4/7(编号为1234的那份)第五天老板给员工7员工拥有5/7(编号为1234和编号为7的两份)第六天员工用7换老板的56员工拥有6/7(编号为1234和编号为56的两份)第七天老板给员工7全部其实挺简单的,有二进制的思想就好1,2,4,就是二进制的001、010、100,这样想答案就很明显了,各占一位,可以组成1-7的任意数其实这道题已经算很简单了。现在国外公司面视都很少搞这种所谓IQ题了,国内一些小公司倒是喜欢弄些现成的IQ题来考,一般接触过的基本都不用想就有答案。其实没多大意思,不必放在心上。发表于@2006年02月25日18:56:00|评论(0)长篇---我这25年序:25年,如果我能活到75,我人生也过了1/3了;如果我有100,也去了1/4。3和4做分母,看起来都是一样。感觉是悲哀的,基本上前25年都是空白,标题“这”字,充分的显示了自己的无奈。我必须要写的东西,要不生活会把我的记忆都抹杀了。第一章:印象发表于@2006年02月25日17:43:00|评论(0)c++试题(20)1.请将字符串“abcdefgh格式化为hgfedcba,写出算法。a:intReverse(char*s){if(*s)Reverse(s+1);putchar(*s);}b:voidFormatStr(std::string&str){charc;intlen=strlen(str.c_str());for(inti=0;i(len/2);i++){c=str[i];str[i]=str[len-i-1];str[len-i-1]=c;}2.从字符串p中返回第x个q的地址,错误返回NULL。char*fun(char*p,charq,intx)char*fun(char*p,charq,intx){intn=0;while(*p){if(q==*p){if(n++==x)returnp;}++p}returnNULL;}发表于@2006年02月25日17:14:00|评论(0)c++试题(19)给定两个正整数m,n(m=n!),将m拆成n个数相加:m=a(1)+a(2)+...+a(n),使之满足:a(1)a(2)...a(n);编成列出所有的拆法.例如:若m=7,n=3则只有一种拆法:7=1+2+4分析:inta,b;a=m/n;b=m%n;1:当n小于4时n=2:可分为a-1,a+b+1n=3:可分为a-1,a,a+b+1;2:当n大于4时此时可以证明an(用数学归纳法)此时m=a+a+a+....+(a+b)共n项,令a(1)=a-(n-1),a(2)=a-(n-2),....a(n-1)=a-(n-(n-1))a(n)=a+b+1+2+...+(n-1);这样不就满足了吗,且程序的具体实现也较简单补充:2应为当n大于或等于时#includestdlib.h#includestdio.h#includeconio.hintm,n,*group;//m被干的数,n干的数,group干完得出的数voidsplit(intstart,intend,intx,intsum)//目的是实现数的抽取,即从start---end自然数列上抽取递增的x个数,使x个自然数的和为sum.{inti,j;//ijif(sum0)return;if(x){for(i=start+1;iend;i++){group[n-x]=i;if(x==1)split(i,end,x-1,sum-i);elsesplit(i,sum/(x-1)+1,x-1,sum-i);}}else{if(sum==0){for(j=0;jn;j++){printf(%8d,group[j]);}printf(\n);}}}voidmain(){printf(PleaseInputm:);scanf(%d,&m);printf(PleaseInputn:);scanf(%d,&n);group=(int*)malloc(n*sizeof(int));split(0,m,n,m);free(group);//getch();system(

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功