C、C++笔试题基础概念、算法及编程(13页).doc
《C、C++笔试题基础概念、算法及编程(13页).doc》由会员分享,可在线阅读,更多相关《C、C++笔试题基础概念、算法及编程(13页).doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C、C+笔试题基础概念、算法及编程-第 12 页1.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数;答:char *strcpy(char *strDest, const char *strSrc)if ( strDest = NULL | strSrc = NULL)return NULL ;if ( strDest = strSrc)returnstrDest ;char *tempptr = strDest ;while( (*strDest+ = *strSrc+) != );returntempptr ;2. 头文件中的ifndef/define
2、/endif的作用?答:防止该头文件被重复引用。3. i nclude与i nclude “file.h”的区别?答:前者编译器从标准库路径开始搜索file.h,而后者编译器从用户的工作路径开始搜索file.h。4. 在C+ 程序中调用被C 编译器编译后的函数,为什么要加extern“C”?答:extern是C/C+语言中表明函数和全局变量作用范围(可见性)的关键字,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。5. 面向对象的三个基本特征,并简单叙述之?答:1)封装:将客观事物抽象成类,每个类对自身的
3、数据和方法实行protection(private, protected,public)2)继承:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。3)多态:允许将子类类型的指针赋值给父类类型的指针。6. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?答:从定义上来说:重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。重写:是指子类重新定义复类虚函数的方法。从实现原理上来说:重载:编译器根据函数不同的
4、参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数。重写:当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。7. 多态的作用?答:主要是两个:1)隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2)接口重用,为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。8. 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。答:BOOL :if ( !a ) or if(a)int :if ( a =0)fl
5、oat :const EXPRESSION EXP = 0.000001if ( a -EXP)pointer : if ( a != NULL) or if(a = NULL)9. 请说出const与#define 相比,有何优点?答案:1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。10.简述数组与指针的区别?数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向
6、任意类型的内存块。(1)修改内容上的差别char a = “hello”;a0 = X;char *p = “world”; / 注意p 指向常量字符串p0 = X; / 编译器不能发现该错误,运行时错误(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C+/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。char a = “hello world”;char *p = a;coutendl;= 12= 字节 cou
7、tendl;= 4= 字节 计算数组和指针的内存容量voidFunc(char a100)coutendl;= 4= 字节而不是100= 字节 11.变量的声明和定义有什么区别?答:声明变量不分配空间,定义变量要分配空间。声明主要是告诉编译器,后面的引用都按声明的格式。定义其实包含了声明的意思,同时要分配内存空间。12. 解释堆和栈的区别。答:堆(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。速度比较慢,而且容易产生内存碎片,不过用起来最方便。栈(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值
8、等。其操作方式类似于数据结构中的栈。由系统自动分配,速度较快。但程序员是无法控制的。13. const的作用是什么?答:(1)可以定义const常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。14. 下列哪两个是等同的int b;A constint* a = &b; /指向常量的指针,不能通过指针改变b,但指针的地址可以改变。B const* int a = &b;/ 指针的地址不可以改变,但可以通过指针改变b的值C constint* const a = &b; /指针指向的值,和指针本身的地址
9、都不能改变D intconst* const a = &b;/与c相同15. 完成程序,实现对数组的降序排序#include void sort(int array );int main()int array=45,56,76,234,1,34,23,2,3; /数字任/意给出sort( array );return 0;void sort( int array )_inti,j,k;for(i=1;iarrayi-1)k=ARRAYi;j=i-1;doarrayj+1=arrayj;j ;while(karrayj&j=0);arrayj+1=k;16. int i=(j=4,k=8,l=1
10、6,m=32); printf(“%d”, i); 输出是多少?答:相当于 i=j=4;i=k=8;i=l=16;i=m=32; 故最后i=32;17. 请简述以下两个for循环的优缺点(5分)1)for (i=0; i if (condition)DoSomething();elseDoOtherthing();2)if (condition)for (i=0; i DoSomething();elsefor (i=0; i 0)*psTo+ = *psFrom+;returnpvTo;19. .C+里面如何声明const void f(void)函数为C程序中的库函数?答:在该函数前添加e
11、xtern “C”声明。由于编译后的名字不同,C+程序不能直接调用C 函数。20. 请写出下面代码在 32 位平台上的运行结果,并说明sizeof的性质:#include #include int main(void)char a30;char *b = (char *)malloc(20 * sizeof(char);printf(“%dn”, sizeof(a);printf(“%dn”, sizeof(b);printf(“%dn”, sizeof(a3);printf(“%dn”, sizeof(b+3);printf(“%dn”, sizeof(*(b+4);return 0 ;答:
12、在32位系统下(如WIN32),指针长度为32位。a是一个有30个元素的字符型数组;b是一个字符串指针;a3是字符型;b+3是指针;*(b+4)是字符型。因此输出: 30、4、1、4、121. C+中,关键字struct和class的区别仅仅在于:struct定义的类的缺省成员为公有的,而class定义的类的缺省成员为私有的;22. 头文件的作用是什么?答:1)通过头文件来调用库功能。2)头文件能加强类型安全检查。23. C+函数中值的传递方式有哪几种?答:C+函数的三种传递方式为:值传递、指针传递和引用传递。24. 内存的分配方式的分配方式有几种?答:1)从静态存储区域分配。内存在程序编译的
13、时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。25. 设计函数intatoi(char *s)。答:intatoi (char *s)int i = 0,sum = 0,sign; /输入的数前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 笔试 基础 概念 算法 编程 13
限制150内