几道c笔试题含参考答案.docx

上传人:b****5 文档编号:30696252 上传时间:2023-08-19 格式:DOCX 页数:16 大小:24.78KB
下载 相关 举报
几道c笔试题含参考答案.docx_第1页
第1页 / 共16页
几道c笔试题含参考答案.docx_第2页
第2页 / 共16页
几道c笔试题含参考答案.docx_第3页
第3页 / 共16页
几道c笔试题含参考答案.docx_第4页
第4页 / 共16页
几道c笔试题含参考答案.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

几道c笔试题含参考答案.docx

《几道c笔试题含参考答案.docx》由会员分享,可在线阅读,更多相关《几道c笔试题含参考答案.docx(16页珍藏版)》请在冰豆网上搜索。

几道c笔试题含参考答案.docx

几道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->datadata)

{

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;并有以下输入数据(此处代表换行符,/u代表空格):

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1