几道c笔试题含参考答案.docx
- 文档编号:18548140
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:16
- 大小:24.78KB
几道c笔试题含参考答案.docx
《几道c笔试题含参考答案.docx》由会员分享,可在线阅读,更多相关《几道c笔试题含参考答案.docx(16页珍藏版)》请在冰点文库上搜索。
几道c笔试题含参考答案
1.
Whatisdisplayedwhenf()iscalledgiventhecode:
classNumber{
public:
stringtype;
Number():
type(“void”){}
explicitNumber(short):
type(“short”){}
Number(int):
type(“int”){}
};
voidShow(constNumber&n){cout< voidf() { shorts=42; Show(s); } a)void b)short c)int d)Noneoftheabove 2.Whichisthecorrectoutputforthefollowingcode doubledArray[2]={4,8},*p,*q; p=&dArray[0]; q=p+1; cout< cout<<(int)q–(int)p< a)1and8 b)8and4 c)4and8 d)8and1 第一个选C; 虽然传入的是short类型,但是short类型的构造函数被生命被explicit,也就是只能显示类型转换,不能使用隐式类型转换。 第二个选A; 第一个是指针加减,按照的是指向地址类型的加减,只跟类型位置有关,q和p指向的数据类型以实际数据类型来算差一个位置,因此是1。 而第二个加减是实际指针值得加减,在内存中一个double类型占据8个字节,因此是8 c/c++某大公司的两道笔试题(含参考答案) 1.一群人围成一圈,123的报数,报3者出列,求最后一个人。 2.利用链表实现将两个有序队列A和B合并到有序队列H中,不准增加其他空间。 请提供全一点的程序 第一题: //kickout.cpp: Definestheentrypointfortheconsoleapplication. // #include“stdafx.h” #include“malloc.h” #include“stdio.h” intmain() { intm,n; intkickouts=0; int*p=NULL; inti,j; i=j=0; printf(“Pleaseinputm,n: ”); scanf(“%d,%d”,&m,&n); while(n<1) { printf("ndoen'tless0,retryn: "); scanf("%d",&n); } p=(int*)malloc(m*sizeof(int)); for(i=0;i p[i]=1; i=0; while (1) { i=i%m; if(p[i++])j++; if(j==n) { p[i-1]=0; j=0; kickouts++; } if(kickouts==m-1) break; } for(i=0;i if(p[i])printf("%d\n",i+1); return0; } 2、升序还是降序? 以升序为例: while(a! =NULL&&b! =NULL) { if(a->data { h->data=a->data; a=a->next; } elseif(a->data==b->data) { h->data=a->data; a=a->next; b=b->next; } else { h->data=b->data; b=b->next } h=h->next; } if(a==NULL) { while(b! =NULL) { h->data=b->data; h=h->next; b=b->next; } } else { while(a! =NULL) { h->data=a->next; h=h->next; a=a->next; } } C语言面试题 1。 编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。 char*search(char*cpSource,charch) { char*cpTemp=NULL,*cpDest=NULL; intiTemp,iCount=0; while(*cpSource) { if(*cpSource==ch) { iTemp=0; cpTemp=cpSource; while(*cpSource==ch) ++iTemp,++cpSource; if(iTemp>iCount) iCount=iTemp,cpDest=cpTemp; if(! *cpSource) break; } ++cpSource; } returncpDest; } 2。 请编写一个C函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。 intsearch(char*cpSource,intn,charch) { inti; for(i=0;i returni; } 一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点? 将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。 #include voidfoo(intm,intn) { printf(“m=%d,n=%d\n”,m,n); } intmain() { intb=3; foo(b+=3,++b); printf(“b=%d\n”,b); return0; } 输出: m=7,n=4,b=7(VC6.0) 这种方式和编译器中得函数调用关系相关即先后入栈顺序。 不过不同 编译器得处理不同。 也是因为C标准中对这种方式说明为未定义,所以 各个编译器厂商都有自己得理解,所以最后产生得结果完全不同。 因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理 这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得 结果。 最后是看编译器优化。 2.写一函数,实现删除字符串str1中含有的字符串str2. 第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数组) /*雅虎笔试题(字符串操作) 给定字符串A和B,输出A和B中的最大公共子串。 比如A=”aocdfe”B=”pmcdfa”则输出”cdf” */ //Author: azhen #include #include #include char*commanstring(charshortstring[],charlongstring[]) { inti,j; char*substring=malloc(256); if(strstr(longstring,shortstring)! =NULL)//如果……,那么返回shortstring returnshortstring; for(i=strlen(shortstring)-1;i>0;i–)//否则,开始循环计算 { for(j=0;j<=strlen(shortstring)-i;j++){ memcpy(substring,&shortstring[j],i); substring[i]='\0'; if(strstr(longstring,substring)! =NULL) returnsubstring; } } returnNULL; } main() { char*str1=malloc(256); char*str2=malloc(256); char*comman=NULL; gets(str1); gets(str2); if(strlen(str1)>strlen(str2))//将短的字符串放前面 comman=commanstring(str2,str1); else comman=commanstring(str1,str2); printf(“thelongestcommanstringis: %s\n”,comman); } 11.写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于 str2返回1,若str1小于str2返回-1 intstrcmp(constchar*src,constchar*dst) { intret=0; while(! (ret=*(unsignedchar*)src–*(unsignedchar*)dst)&&*dst) { ++src; ++dst; } if(ret<0) ret=-1; elseif(ret>0) ret=1; return(ret); } 3,求1000! 的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3); 求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3, 能被625整除的数的个数n4. 1000! 末尾的零的个数=n1+n2+n3+n4; #include #defineNUM1000 intfind5(intnum){ intret=0; while(num%5==0){ num/=5; ret++; } returnret; } intmain(){ intresult=0; inti; for(i=5;i<=NUM;i+=5) { result+=find5(i); } printf(”thetotalzeronumberis%d\n”,result); return0; } 用C语言写个函数,完成去掉字符串左边的空格,把右边的空格用0填充。 调用之,然后打印出来。 C语言基础笔试题 1、C语言程序的基本单位是____A)程序行B)语句C)函数D)字符、C、1 2、C语言程序的三种基本结构是____A、顺序结构,选择结构,循环结构B、递归结构,循环结构,转移结构C、嵌套结构,递归结构,顺序结构D、循环结构,转移结构,顺序结构、A、1 3、C语言规定,程序中各函数之间A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用、A、1 4、C语言中可处理的文件类型是()A)文本文件和数据文件B)文本文件和二进制文件C)数据文件和二进制文件D)数据代码文件、B、1 5、C语言可执行程序的开始执行点是()A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数、C、1 6、C语言提供的合法的数据类型关键字是A)doubleB)shortC)integerD)char、B、1 7、C语言中,运算对象必须是整型数的运算符是A)%B)\C)%和\D)**、A、1 8、C语言中函数返回值的类型是由()决定。 A)return语句中的表达式类型B)调用函数的主调函数类型C)调用函数时临时D)定义函数时所指定的函数类型、D、1 9、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_____。 A、该数组的长度。 B、该数组的元素个数。 C、该数组中各元素的值。 D、该数组的首地址。 、D、1 10、C语言中数组下标的下限是________。 A、1B、0C、视具体情况D、无固定下限、B、1 11、C语言中提供的合法关键字是____A、swithB、cherC、caseD、default、D、1 12、C语言中文件的存取方式是________。 A、顺序存取B、随机存取C、顺序存取、随机存取均可D、顺序存取、随机存取均不可、C、1 13、C语言中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型、B、1 14、sizeof(float)是()A)一种函数调用B)一个不合法的表示形式C)一个整型表达式D)一个浮点表达式、C、1 15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是A)inputx,y,z;B)scanf(“%d%d%d”,&x,&y,&z);C)scanf(“%d%d%d”,x,y,z);D)read(“%d%d%d”,&x,&y,&z);、B、1 16、表达式: 10! =9的值是A)trueB)非零值C)0D)1、D、1 17、表示关系x<=y<=z的c语言表达式为A)(X<=Y)&&(Y<=Z)B)(X<=Y)AND(Y<=Z)C)(X<=Y<=Z)D)(X<=Y)&(Y<=Z)、A、1 18、程序片段: 在TC20中,inti=65536;printf("%d",i);的输出结果是____A)65536B)0C)有语法错误,无输出结果D)-1、B、1 19、当调用函数时,实参是一个数组名,则向函数传送的是____A)数组的长度B)数组的首地址C)数组每一个元素的地址D)数组每个元素中的值、B、1 20、对嵌套子程序调用说法正确的是____。 A、外层子程序可以调用所有的内层子程序B、内层了程序只可以调用包含本身的外层子程序,不可以隔层调用C、外分程序必须能完全套住内分程序D、以上说法均不正确、C、1 21、对于基类型相同的两个指针变量之间,不能进行的运算是A) 22、合法的C语言中,合法的长整型常数是A)'\t'B)"A"C)65D)A、A、1 23、假定int类型变量占用两个字节,其有定义: intx[10]={0,2,4};,则数组x在内存中所占字节数是A)3B)6C)10D)20、D、1 24、假定有以下变量定义: intk=7,x=12;则能使值为3的表达式是Ax%=(k%=5)Bx%=(k-k%5)Cx%=k-k%5D(x%=k)-(k%=5)、D、1 25、请读程序片段(字符串内没有空格): printf("%d",strlen("ATS012\1\\"));的输出结果是A)11B)10C)9D)8、C、1 26、请选出合法的C语言赋值语句A)a=b=58B)i++;C)a=58,b=58D)k=int(a+b);、B、1 27、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是A)-3B)9C)-12D)6、C、1 28、若int类型占两个字节,则以下语句输出为________。 intk=-1;printf("%d,u%",k,k);A、-1,-1B、-1,65536C、-1,32768D、-1,65535、D、1 29、若变量a是int类型,并执行了语句: a=‘A'+1、6;,则正确的叙述是A)a的值是字符CB)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符‘A’的ASCII值加上1。 、D、1 30、若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于10、0,b赋予22、0,c赋予33、0,不正确的输入形式是: A)10B)10、0,22、0,33、02233C)10、0D)102222、033、033、B、1 31、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为A)a<>0B)! aC)a=0D)a、B、1 32、若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是A)1B)2C)2、0D)2、5、C、1 33、若有定义: inta=8,b=5,c;,执行语句c=a/b+0、4;后,c的值为A)1、4B)1C)2、0D)2、B、1 34、若有定义: intx,y;chara,b,c;并有以下输入数据(此处 1u2AuBuC则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是A)scanf(“x=%dy+%d”,&x,&y);a=getchar();b=getchar();c=getchar();B)scanf(“%d%d”,&x,&y);a=getchar();b=getchar();c=getchar();C)scanf(“%d%d%c%c%c,&x,&y,&a,&b,&c);D)scanf(“%d%d%c%c%c%c%c%c: &x,&y,&a,&a,&b,&b,&c,&c);、D、1 35、若有定义和语句: chars[10]: s=”abcd”;printf(“%s”,s);则结果是(以下u代表空格)A)输出abcdB)输出aC)输出abcduuuuuD)编译不通过、D、1 36、若有以下程序段,intc1=1,c2=2,c3;c3=1、0/c2*c1;则执行后,c3中的值是A)0B)0、5C)1D)2、A、1 37、若有以下定义: chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为A)floatB)intC)charD)double、D、1 38、若有以下定义和语句charc1=’b',c2=’e';printf(“%d,%c”,c2-c1,c2-’a'+”A”);则输出结果是: A)2,MB)3,EC)2,ED)输出项与对应的格式控制不一致,输出结果不确定、B、1 39、若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是A)3B)4C)5D)6、A、1 40、若执行下面的程序时从键盘上输入3和4,则输出是____A)14B)16C)18D)20main(){inta,b,s;scanf(“%d%d”,&a,&b);s=a;if(a、B、1 41、若执行下面的程序时从键盘上输入5,则输出是A)7B)6C)5D)4main(){intx;scanf(“%d”,&x);if(x++>5)printf(“%d”,x);elseprintf(“%d”,x–);}、B、1 42、若执行以下程序时从键盘上输入9,则输出结果是A)11B)10C)9D)8main(){intn;scanf(“%d”,&n);if(n++、B、1 43、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为____A)0B)1C)2D)3、C、1 44、设inta=12,则执行完语句a+=a-=a*a后,a的值是A)552B)264C)144D)-264、D、1 45、设intb=2;表达式(b>>2)/(b>>1)的值是A)0B)2C)4D)8、A、1 46、设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是________A)’a'&&’b’B)a<=bC)a||b+c&&b-cD)! ((a 47、设x、y、z和k都是int型变量,则执行表达式: x=(y=4,z=16,k=32)后,x的值为A4B16C32D52、C、1 48、设x=3,y=-4,z=6,写出表达式的结果。 ! (x>y)+(y! =z)||(x+y)&&(y-z)A、0B、1C、-1D、6、B、1 49、设x和y均为int型变量,则以下语句: x+=y;y=x-y;y=x-y;x-=y;的功能是A、把x和y按从大到小排列B、把x和y按从小到大排列C、无确定结果D、交换x和y中的值、D、1 50、设有intx=11;则表达式(x++*1/3)的值是A)3B)4C)11D)12、A、1 南京-四达荣合C/C++笔试题 一: 填空: 2.inti=10,j=10,k=3,k/=i+j,k=___________. 3.现有函数Setattr(inta,intb,intc).已知b无初始值,a的初始值等于1,c的初始值等于0,那么此函数的声明形式为: ___________________. 4.在C中,预编译定义的关键字是__________,常量定义的关键字是: _____________. 5.在C中,检测字符串长度的函数是: ______________,拷贝字符串的函数是: _________, 比较两个字符串的函数是: ______________,连接字符串的函数是: ___________,使用这些函数需调用的头文件是: ________________. 6.已知字符串char[]topic=“hello,hellohellomoney! ”,sizeof(topic)=_________,strlen(topic)=___________. 二: 问答题: 1.main函数的参数argc和argv的作用是什么? 如何获得某个应用程序的第三个命令行参数. 2.if(n==10)—1. if(10==n)—2 哪一种写法是正确的,为什么? 3.-1.constchar*p; -2.charconst*p; -3.char*constp; -4constchar*constp; 请描述一下以上四种写法的区别. 三: 分析题: 考点: 函数的按值传递及引用传递. 多态(基类指针指向派生类对象,基类引用指向派生类对象). 函数重载, 静态成员(静态方法). 四.编程题. 1.已知字符串操作函数中有字符串拷贝函数strcpy().现有自定义字符串拷贝函数Strcpy的声明: char*Strcpy(char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 笔试 参考答案