全近几年科大讯飞软件笔试题目.docx
2009讯飞软件开发笔试题目(C+)A&1、(4分)用变量a给出下面的定义a) 一个整型数;b) 个指向整型数的指针;c) 一个指向指针的指针,它指向的指针是指向一个整型数;d) 一个有】0个整型的数蛆;e) 一个有10个指针的数组,该指针是指向一个整型数;f) 一个指向有】。个整型数数组的指针;g) 一个指向函数的指针,该函数有一个整型参数并返网一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返网一个整型数答案:a)intab)int*a;c)int*a;d)inta10;e)int*a10;f)inta10,*p=a;g)int(a)(int)h)int(*a10)(int)2、(4分)请写出以下语句的输出结果:Inti=43;Intj=5;Doub1.ef=25.45181;a) printf(i-%d,j-%d,f三%3.2f,ij,f);b) Printf("i=%x,j=%06d,ij=%d”,i,j,ij);答案:A)i=43J=5J=25.45B)i=2b,j=00005,ij=8(%x显示的是一个无符号的OX16进制的整数,06d输出的是6位数,不够6位数,的面补O,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a)用预处理指令#define声明一个常数,用以表明1年中才多少个秒(忽视闰年问题)b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个答案:a) #defineseconds365*24*60*60b) #defineMIN(a,b)((八)<(b)?(八):(b)扩展:MAX宏#defineMAX((八)>(b)(八)(b)ABS宏#defineABS(x)>0)?(x):(-(x)4、(6分)以下为32为WindOWS下的c+程序,请计算:a)charstr=whe1.1.o"char*p=str;请计算:sizeof(str)=sizeof(p)=str1.en(p)=答案:6,4,5b)voidfunc(charstr100)Void*p=ma1.1.oc(100);请计算:Sizeof(Str)=IO1.If(StrJ=NU1.1.)Strcpy(str,wor1.d,*);Printf(str);C1.assAPub1.ic:AO;Printf(mAconstructed.11w);!Virtua1.A()rintf(*,Adeconstructed.11w);Virtua1.voidFn()printf(mAfnca1.1.ed.11w);!;C1.assB:pub1.icAPub1.ic:Boprintf(,Bconstructed,11m);!Virtua1.B()printf(,Bdeconstructed.11w);Virtua1.voidFn()printf(,Bfnca1.1.ed.11w);!;C1.assCipub1.icBPub1.ic:C()printf(mCconstructed,11m);JVirtua1.C()printf(mCdeconstructed.11w);Virtua1.voidFn()printf(mCfnca1.1.ed.11w);Voidmain(intargc,char*grgv)A*pA=newB;If(pA!=NU1.1.)pA->fnO;B*pB=static-cast<B*>(p);If(pB!=NU1.1.)pB->fnO;C*pC=static-cast<C*>(pA);If(pC!=NU1.1.)pC->fn();de1.etepA;10.(2分)以下说法错误的是:()A)指针和引用作为函数参数都可以变更实参B)指针和引用都可以在定义后随意的变更指向C)引用必需在创建的时候初始化,而指针则不须要D)不能空引用,但是可以有空指针11、(2分)下列关于多态的描述,错误的是()A)C+语言的多态性分为编译时的多态和运行时的多态性5、非成员函数声明为类的_友元函数才能访问这个类的PriVate成员。6、带有纯虚函数的类称为抽象类,它只能作为基类来运用。三、简答题(每题6分,共18分)1、列举你所知道的排序算法和它们的平均困难程度。答:1、冒泡排序(bubbIeSort)O(n2)2、鸡尾酒排序(Cocktai1.sort,双向的冒泡排序)一O(n2)3、插入排序(insertionsort)O(112)4、选择排序(se1.ectionsort)-O(n2)5、堆排序(heapsort)O(n1.ogn)6、快速排序(quicksort)O(n1.ogn)2、列举析构函数与一般类成员函数的不同点。答:1、析构函数名也应与类名相同,只是在函数名前面加一个波浪符例如stud()2、它不能带任何参数,也没有返回值(包括VOid类型)。3、只能有一个析构函数,不能重载4、析构函数在对象生存期即将结束的时刻被自动调用3、在C+语言中运用宏定义常常会引起一些错误(如少打括号引起表达式值与预期不符等),列举一些可以代替宏定义的方法。Method1:内联函数,Method2:const方法Method3:typedef方法。四、编程题(共三题20分)I、斐波那契数列的形式如下:1,1,2,3,5,8,13,n,编写一个函数计算数列中笫n个元素的值。(5分)2、不调用任何系统函数,实现一个字符审查找子申的函数,假如包含字串,则返回该字符串的位置值,假如不包含,则返回-1。(7分)分两步,笫一步:找到字符串中与子串首字符相等的字符在字符串中的位置.:其次步:比较以后的字符是否相等。假如不等,记录上次找到的第一次相等的位置,从这以后再找寻找到字符串中与子串首字符相等的字符在字符串中的位置。然后再比较以后的字符是否相等。2、用算法实现将一个输入的数字颠倒(输入12345->54321),要求不调用任何系统函数,也不能将输入的数字转换为字符串作为中间过渡。(8分)2013年科大讯飞软件类笔试题1、相同表面积的正三棱锥、四面体、六面体、正十二面体以与正二十面体,其中体积最大的是?正二十面体,物体越接近于球,体积越大2、上山和下山的路程都是1km,上山时速度15kmh,下山速度为多少才能到达时速30kmh(D)A45kmhB大于45kmhC接近光速D恒久不行设下坡速度X,则:1.x+1.15=2/30=>1.x=03、三个骰子,出现两个点数一样的概率(5/12)4、凡是包含值虚函数的类都是抽象类马?对的5、数据库Oderby和having学问点的。6、对应“一个接口不同行为”的设计模式是。填空题1、对于无序整型数字的排序用什么算法最佳。快速排序2、一串数字16个,用折半查找查找一个存在的数字最多查多少次。3、构造函数、重栽运第符函数不能定义为虚函数。=凄成员函数4、ST1.由xx、迭代器、算法蛆成.我答客善5、生产模式和消费者模式都要用到的数据结构是什么?简答题:1、线程和进程用到的技术2、析构函数和一般成员函数的区分3、目泡和快排的优缺点4、指针和引用的区分答:D引用必需被初始化,指针不必。2)引用初始化以后不能被变更,指针可以变更所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针。三个编程题:1、统计一个字节中被置1的位数,算法效率要求尽可能的高C2、不能被继承且只能示例化三次。#inc1.ude<iostream>usingnamespacestd;c1.assSing1.etonpub1.ic:staticintcount;staticSing1.eton*GetInstancef)if(count>0)count;returnnewSing1.etonO;e1.sereturnNU1.1.;staticvoidDe1.eteInstance(Sing1.eton*PInstance)if(PInstance!=NU1.1.)de1.etePInstance;PInstance=NU1.1.;e1.seCoUt<<"isNU1.1."<<end1.;staticvoidGetcount(intn)count=n;private:Sing1.etonOcout<<"Sing1.etonisconstructcd"<<end1.;cout<<"Sing1.etonisdeconstructed,'<<end1.;;intSing1.etoncxount=O;intmain()Sing1.eton:Getcount(3);Sing1.eton*pI=Sing1.eton-GetInstanceO;Sing1.eton*p2=Sing1.eton:GetInstanceO;Sing1.eton*p3=Sing1.eton:GetInstance();Sing1.eton*p4=Sing1.eton-GctInstanceO;if(p3=三NU1.1.)cout<<,p3NU1.1."<<end1.;e1.se(cout<<"p3notNU1.1."<<end1.;if(p4=NU1.1.)cout<<"p4NU1.1."<<end1.;e1.secout<<"p4notNU1.1."<<end1.;Sing1.eton:De1.eteInstanceCp1);Sing1.eton:De1.ete1.nstance(p2);Sing1.eton:De1.eteInstance(p3);Sing1.eton:De1.ete1.nstance(p4);return0;3、将字符中字空格的个数削诚为一个,eg:ab_c=>a_b_c»不能用String类型,在原字符中操作,不能用中间变量,不能用Str1.en等任何系统函数.2014科大讯飞1.求一个整数数组的最大元素,用递归方法实现。2 .已知一个整数数组An,写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间困难度为O(n)°1、对插入排序运用递归的算法实现2、实现字符申反转:abedefghijk1.>ijk1.efghabed3 .输入一个锌表的头结点,反转该琏表,并返何反转后一链表的头结点4 .输入yz,然后输出序列的可能性