c语言c++软件开发求职试题集合Word下载.docx
《c语言c++软件开发求职试题集合Word下载.docx》由会员分享,可在线阅读,更多相关《c语言c++软件开发求职试题集合Word下载.docx(36页珍藏版)》请在冰豆网上搜索。
(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;
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'
voidtest3(char*str1)
if(strlen(str1)<
=10)
(21)不允许使用系统时间,写出一个随机数生成函数。
(22)编写子函数:
(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;
-1;
i++)
for(______;
j<
++)
if(b[i]_____b[j])
{t=b[i];
_____________;
b[j]=t;
{inta[]={5,8,6,2,7,4,1,3};
inti;
sort(a,8);
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中的整数由小到大进行排序。
(28)阅读下列程序,回答问题。
intfun(intn);
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
{intc;
while((c=getchar())!
=′\n′)
switch(c-′2′)
{case0:
case1:
putchar(c+4);
break;
case2:
case3:
putchar(c+3);
default:
putchar(c+2);
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:
intmain(intargc,char*argv[]){
inti=1;
charbuf[4];
strcpy(buf,\"
aaaa\"
%d\n\"
i);
return0;
a)whencompiledandexecutedonx86,whydoesthisprogramusuallynotoutputwhattheprogrammerintended?
b)nameseveralwaysinwhichthesecurityproblemthatcausesthisprogramnottooutputwhattheprogrammerintendedcanbepreventedwithoutchangingthecode.
(41)char*p1;
void*p2;
intp3;
charp4[10];
sizeof(p1...p4)=?
(42)在一个文件中有10g个整数,乱序排列,要求找出中位数。
内存限制为2g。
只写出思路即可。
(43)下面的程序或程序段存在一个错误或不妥处请在其下划一条线,并将改正的内容写到每小题后的空白处
{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)现有两个文件,
(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中的英文字符。
{_______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),请评论一下这段代码的错误。
(54)四个小孩正在花园里玩追捕游戏。
一个小孩扮演逃亡者,其余三个小孩做追捕者。
花园是一块由n行m列方格组成的草地,花园周围有木栏包围着,不能走出,花园里面还有一些障碍物不能够通过。
游戏可以进行许多回合,每个回合分成两轮,第一轮追捕者可以进行追捕行动,第二轮逃亡者可以根据前一轮追捕者的行动开展逃亡旅程。
在第一轮里,三个追捕者必须在三人中选择一个人向某个相邻的方格走一步,只有在三个人都没有可以走的相邻方格时,他们才允许选择停留在原地。
在第二轮里,逃亡者也必须选择某个相邻的方格走一步,如果逃亡者没有任何可走的方格,那么逃亡者就被捕了。
四个小孩都不允许走到有障碍物或其他人的方格上,也不能走出花园,因而,四个小孩总是会位于不同的方格上面。
这些小孩都是非常聪明的,三个追捕者也是团结一致的。
追捕者如果有可以捉到逃亡者的方法,那么他们就一定不会错过。
逃亡者如果有不被捕获的方法,那么他也不会犯错。
除此之外,追捕者会希望尽快地捉到逃亡者,而逃亡者即使在会被捕获的情况下也会尽可能地拖延时间。
给定花园的障碍物的分布图和四个小孩的初始位置,你知道追捕者有方法捉到逃亡者吗?
如果有,他们要经过多少轮后才能捉到逃亡者呢?
(55)阅读下列程序,将输出结果写到各题右侧的空白处。
intx=20,y=40,*p;
p=&
x;
printf(″%d,″,*p);
*p=x+10;
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
{intk=0;
charc=′a′;
do{
switch(c++){
case′a′:
k++;
break;
case′b′:
case′c′:
k+=2;
case′d′:
k=k%2;
case′e′:
k=k*10;
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;
callvalue:
:
value(intnvalue)n\"
~value(){printf(\"
~value()n\"
va