c语言c++软件开发求职试题集合.docx
- 文档编号:6409644
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:36
- 大小:34.02KB
c语言c++软件开发求职试题集合.docx
《c语言c++软件开发求职试题集合.docx》由会员分享,可在线阅读,更多相关《c语言c++软件开发求职试题集合.docx(36页珍藏版)》请在冰豆网上搜索。
c语言c++软件开发求职试题集合
c/c++软件开发求职试题集合
笔试网()
简答题:
(1)用<<,>>,|,&实现一个word(2个字节)的高低位交换!
!
(2)类classb从classa派生,如果classa中定义并实现虚函数intfunc(void),classb中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?
如果intfunc(void)不是虚函数,情况如何?
为什么?
(3)编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回.
(4)写一个程序,把一个100以内的自然数分解因数。
(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)
(5)执行下述程序的输出结果是__________________。
#include
charb[]="abcdef";
main()
{
char*bp;
for(bp=b;*bp;bp+=2)
printf("%s",bp);
printf("\n");
}
(6)用100元钱买100支笔,其中钢笔3元/支,圆珠笔2元/支,铅笔0.5元/支,问钢笔、圆珠笔和铅笔可以各买多少支?
(7)完成字符串拷贝可以使用sprintf、strcpy及memcpy函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?
(8)main()
{ints=10,k=10;
do
{s=s-3;k--;}
while(s>1);
printf(“k=%d”,k);
}程序运行的结果是____________
(9)下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(isr),请评论一下这段代码的错误。
__interruptdoublecompute_area(doubleradius)
{
doublearea=pi*radius*radius;
printf("area=%f",area);
returnarea;
}
(10)阅读下列程序,回答问题。
#include
main()
{
inta,b,m,n;
scanf(“%d%d\n”,%a,%b);
m=1;
n=1;
if(a>0)m=m+n;
if(a
elseif(a==b)n=5;
elsen=m+n;
printf(“m=%dn=%d\n”,m,n);
}
当输入为:
-1-2<回车>时,写出程序的运行结果。
(11)编写子函数:
(1)用冒泡法将一个数组排成升序的函数---sub1;
(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---sub2。
主函数:
①输入任意10个正整数给数组;②调用sub1对数组进行排序;③从键盘输入一个正整数,调用sub2将其插入该数组。
(12)执行下列程序后,输出结果为_______。
#include
fun(intx)
{
intp;
if((x==0||(x==1))return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf(″%d\n″,fun(9));
}
(13)编写strcpy函数:
已知strcpy函数的原型是
char*strcpy(char*strdest,constchar*strsrc);
其中strdest是目的字符串,strsrc是源字符串。
(1)不调用c++/c的字符串库函数,请编写函数strcpy
(2)strcpy能把strsrc的内容复制到strdest,为什么还要char*类型的返回值?
(14)如何引用一个已经定义过的全局变量?
(15)有一个整数n,写一个函数f(n),返回0到n之间出现的\"1\"的个数。
比如f(13)=6,现在f
(1)=1,问下一个最大的f(n)=n的n是什么?
(16)static函数与普通函数有什么区别?
(17)阅读下列程序,将输出结果写到各题右侧的空白处。
main()
{
inta[3][3]={1,4,17,3,6,19,2,5,18},i,s=0;
for(i=0;i<
s=s+a[i][2-i];
printf(″s=%d\n″,s);
}
(18)不用乘法或加法给一个数增加7倍。
(19)一堆数在一个集合中,总共2n个,问如何将这些数分成a,b两分,每分n个,要求a中的数均小于b中的数,需要考虑时间复杂度。
(20)找错
voidtest1()
{
charstring[10];
char*str1=\"0123456789\";
strcpy(string,str1);
}
voidtest2()
{
charstring[10],str1[10];
for(i=0;i<10;i++)
{
str1[i]='a';
}
strcpy(string,str1);
}
voidtest3(char*str1)
{
charstring[10];
if(strlen(str1)<=10)
{
strcpy(string,str1);
}
}
(21)不允许使用系统时间,写出一个随机数生成函数。
(22)编写子函数:
(1)用冒泡法将一个数组排成升序的函数---sub1;
(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---sub2。
主函数:
①输入任意10个正整数给数组;②调用sub1对数组进行排序;③从键盘输入一个正整数,调用sub2将其插入该数组。
(23)解二次方程:
a*x*x+b*x+c
intquadratic(doublea,doubleb,doublec,double&x1,double&x2);
返回值:
解的个数
(24)全局变量定义在可被多个.c文件包含的头文件中可不可以?
为什么?
(25)以下程序的功能是用选择法对数组a中的整数由小到大进行排序。
voidsort(intb[],intn)
{inti,j,t;
for(i=0;i<-1;i++)
for(______;j<++)
if(b[i]_____b[j])
{t=b[i];_____________;b[j]=t;}
}
main()
{inta[]={5,8,6,2,7,4,1,3};
inti;
sort(a,8);
for(i=0;i<8;i++)
printf(″﹪5d″,a[i]);
printf(″\n″);
}
补充完整。
(26)#include
voidf1(x,y,z)
intx,inty,intz;
{x=x*x;y=y*y;
z=x+y;
printf(″
(1)x=%dy=%dz=%d\n″,x,y,z);
}
voidf2(x,y,z)
int*x,int*y,int*z;
{*x=(*x)*(*x);*y=(*y)*(*y);*z=*x+*y;
}
voidmain()
{intx=2,y=3,z=0;
f1(x,y,z);
printf(″
(2)x=%dy=%dz=%d\n″,x,y,z);
f2(&x,&y,&z);
printf(″(3)x=%dy=%dz=%d\n″,x,y,z);
}
运行结果如下:
(27)以下程序的功能是用选择法对数组a中的整数由小到大进行排序。
voidsort(intb[],intn)
{inti,j,t;
for(i=0;i<-1;i++)
for(______;j<++)
if(b[i]_____b[j])
{t=b[i];_____________;b[j]=t;}
}
main()
{inta[]={5,8,6,2,7,4,1,3};
inti;
sort(a,8);
for(i=0;i<8;i++)
printf(″﹪5d″,a[i]);
printf(″\n″);
}
补充完整。
(28)阅读下列程序,回答问题。
#include
intfun(intn);
voidmain()
{
printf(″thefunof3is%d\n″,fun(3));
printf(″thefunof4is%d\n″,fun(4));
}
intfun(intn)
{
intresult=1;
while(n>1)
result*=n--;
returnresult;
}
程序的运行结果是什么?
(29)耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:
13人围坐一圈,从第一个开始报号:
1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
(30)简述头文件的功能,并列出两个头文件的名称。
(31)char*getstr()
{
char*tmp;
tmp=\"123\"
returntmp;
}
voidmain()
{
printf(\"%s\",getstr());
}
会输出123吗?
123创建在堆上还是栈上呢?
123的空间是什么时候释放的?
(32)#include
voidmain()
{intc;
while((c=getchar())!
=′\n′)
switch(c-′2′)
{case0:
case1:
putchar(c+4);break;
case2:
putchar(c+4);break;
case3:
putchar(c+3);break;
default:
putchar(c+2);break;
}
printf(″\n″);
}
运行时输入:
2473,输出结果:
(33)main函数执行以前,还会执行什么代码?
(34)给你一个32位的六进制数,写一个程序让它倒序输出。
(35)循环的有序数组(比如1,2,3,4,5,-3,-2,-1这种数列)里查找一个数。
(36)将一个1m-10m的文件,逆序存储到另一个文件,就是前一个文件的最后一个字符存到新文件的第一个字符,以此类推。
(37)有200个正整数,且每个数均在1000至9999之间。
请编制函数,其函数的功能是:
要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。
(38)writeaprogramtoremoveallcommentsfromacprogram.don'tforgettohandlequotedstringsandcharacterconstantsproperly.ccommentsdonotnest.
(39)将任意证书n分解成多个互不相同的正整数的和,并打印所有可能的组合方式。
例如n=6,组合方式有1+5,2+4,1+2+3。
(40)considerthefollowingcode:
#include
#include
intmain(intargc,char*argv[]){
inti=1;
charbuf[4];
strcpy(buf,\"aaaa\");
printf(\"%d\n\",i);
return0;
}
a)whencompiledandexecutedonx86,whydoesthisprogramusuallynotoutputwhattheprogrammerintended?
b)nameseveralwaysinwhichthesecurityproblemthatcausesthisprogramnottooutputwhattheprogrammerintendedcanbepreventedwithoutchangingthecode.
(41)char*p1;
void*p2;
intp3;
charp4[10];
sizeof(p1...p4)=?
(42)在一个文件中有10g个整数,乱序排列,要求找出中位数。
内存限制为2g。
只写出思路即可。
(43)下面的程序或程序段存在一个错误或不妥处请在其下划一条线,并将改正的内容写到每小题后的空白处
main()
{inta,*p;
a=20;
p=a;
printf(“a=%d”,*p);
}
(44)writeafunctionescape(s,t)thatconvertscharacterslikenewlineandtabintovisibleescapesequenceslike\nand\tasitcopiesthestringttos.useaswitch.writeafunctionfortheotherdirectionaswell,convertingescapesequencesintotherealcharacters.
(45)现有两个文件,
a)数据文件a,格式为:
关键词、ip地址、时间,记录条数为1000万左右,该文件是无序排列的。
b)数据文件b是关键词id到关键词的对应表文件,格式为:
id、关键词,记录条数在100万左右,也是无序排列的。
该对应表中的记录是一一对应的,不存在id或者关键词重复的情况。
要求将数据文件a对应的关键词替换为b中的id,生成新的数据文件c,数据文件c的格式为:
关键词id、ip地址、时间。
请设计一个程序,实现上述功能,并分析时间复杂度和空间复杂度。
运行程序所使用的服务器的内存为1g,硬盘足够大。
(至少要给出关键算法和设计思路)
(46)写一个生成随机数的类(或者函数)。
(47)现有两个文件,
a)数据文件a,格式为:
关键词、ip地址、时间,记录条数为1000万左右,该文件是无序排列的。
b)数据文件b是关键词id到关键词的对应表文件,格式为:
id、关键词,记录条数在100万左右,也是无序排列的。
该对应表中的记录是一一对应的,不存在id或者关键词重复的情况。
要求将数据文件a对应的关键词替换为b中的id,生成新的数据文件c,数据文件c的格式为:
关键词id、ip地址、时间。
请设计一个程序,实现上述功能,并分析时间复杂度和空间复杂度。
运行程序所使用的服务器的内存为1g,硬盘足够大。
(至少要给出关键算法和设计思路)
(48)char**p,a[16][8];问:
p=a是否会导致程序在以后出现问题?
为什么?
(49)c++中的空类,默认产生哪些类成员函数?
(50)输入一个五位以内的正整数,
(1)判断它是一个几位数;
(2)请按序输出其各位数字;(3)逆序输出其各位数字。
如输入:
56439,输出:
5位数
5,6,4,3,9
9,3,4,6,5
(51)#include和#include“filename.h”有什么区别?
(52)程序填空
把文本文件d1.dat复制到文本文件d2.dat中,要求仅复制d1.dat中的英文字符。
#include
voidmain()
{_______charch;
fpd1=fopen(″d1.dat″,″r″);_______
while(fscanf(fpd1,″%c″,&ch)_______)
if(_______||ch>=′a′&&ch<=′z′)fprintf(fpd2,″%c″,ch);
fclose(fpd1);fclose(fpd2);
}
(53)下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(isr),请评论一下这段代码的错误。
__interruptdoublecompute_area(doubleradius)
{
doublearea=pi*radius*radius;
printf("area=%f",area);
returnarea;
}
(54)四个小孩正在花园里玩追捕游戏。
一个小孩扮演逃亡者,其余三个小孩做追捕者。
花园是一块由n行m列方格组成的草地,花园周围有木栏包围着,不能走出,花园里面还有一些障碍物不能够通过。
游戏可以进行许多回合,每个回合分成两轮,第一轮追捕者可以进行追捕行动,第二轮逃亡者可以根据前一轮追捕者的行动开展逃亡旅程。
在第一轮里,三个追捕者必须在三人中选择一个人向某个相邻的方格走一步,只有在三个人都没有可以走的相邻方格时,他们才允许选择停留在原地。
在第二轮里,逃亡者也必须选择某个相邻的方格走一步,如果逃亡者没有任何可走的方格,那么逃亡者就被捕了。
四个小孩都不允许走到有障碍物或其他人的方格上,也不能走出花园,因而,四个小孩总是会位于不同的方格上面。
这些小孩都是非常聪明的,三个追捕者也是团结一致的。
追捕者如果有可以捉到逃亡者的方法,那么他们就一定不会错过。
逃亡者如果有不被捕获的方法,那么他也不会犯错。
除此之外,追捕者会希望尽快地捉到逃亡者,而逃亡者即使在会被捕获的情况下也会尽可能地拖延时间。
给定花园的障碍物的分布图和四个小孩的初始位置,你知道追捕者有方法捉到逃亡者吗?
如果有,他们要经过多少轮后才能捉到逃亡者呢?
(55)阅读下列程序,将输出结果写到各题右侧的空白处。
main()
{
intx=20,y=40,*p;
p=&x;printf(″%d,″,*p);
*p=x+10;
p=&y;printf(″%d\n″,*p);
*p=y+20;
printf(″%d,%d\n″,x,y);
}
(56)char*constp;
charconst*p
constchar*p
上述三个有什么区别?
(57)模拟n个人参加选举的过程,并输出选举结果:
假设候选人有四人,分别用a、b、c、d表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是a、b、c、d则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。
(58)writeaprogramthatprintsalistofallwordsinadocument,and,foreachword,alistofthelinenumbersonwhichitoccurs.removenoisewordslike"the","and,"andsoon.
(59)请编写一个c函数,该函数在一个字符串中找到可能的最长的子字符串,该字符串是由同一字符组成的。
(60)apartment在com中有什么用?
为什么要引入?
(61)c/c++编译器中虚表是如何完成的?
(62)#include
voidmain()
{intk=0;charc=′a′;
do{
switch(c++){
case′a′:
k++;break;
case′b′:
k--;
case′c′:
k+=2;break;
case′d′:
k=k%2;break;
case′e′:
k=k*10;break;
default:
k=k/3;
}
k++;
}while(c<′g′);
printf(″k=%d\n″,k);
}输出结果:
_______
(63)用100元钱买100支笔,其中钢笔3元/支,圆珠笔2元/支,铅笔0.5元/支,问钢笔、圆珠笔和铅笔可以各买多少支?
(64)你觉得c程序中为什么会有main(),有没有想过exit,return,或什么都不做也可以让程序正常终止?
(65)writeaprogramtocountblanks,tabs,andnewlines.
(66)#include
classvalue
{
public:
value(intnval){m_nval=nval;printf(\"callvalue:
:
value(intnvalue)n\");}
~value(){printf(\"callvalue:
:
~value()n\");}
va
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 c+ 软件 开发 求职 试题 集合