c笔试题汇总(编辑修改稿)内容摘要:
同名函数: function func(p:integer):integer。 和 function func(p:string):integer。 那么编译器做过修饰后的函数名称可能是这样的: int_func、 str_func。 对于这两个函数的调用,在编译器间就已经确定了,是静态的。 也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关。 重写:和多态真正相关。 当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。 因此,这样的 函数地址是在运行期绑定的(晚绑定)。 19. 多态的作用。 主要是两个: 1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用; 2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。 20. Ado 与。 除了 “能够让应用程序处理存储于 DBMS 中的数据 “这一基本相似点外,两者没有太多共同之处。 但是 Ado使用 OLE DB 接口并基于微软的 COM 技术,而 拥有自己的 接口并且基于微软的 .NET 体系 架构。 众所周知 .NET 体系不同于 COM 体系, 接口也就完全不同于 ADO 和 OLE DB 接口,这也就是说 和 ADO 是两种数据访问方式。 提供对 XML 的支持。 21. New delete 与 malloc free 的联系与区别 ? 答案:都是在堆 (heap)上进行动态的内存操作。 用 malloc 函数需要指定内存分配的字节数并且不能初始化对象, new 会自动调用对象的构造函数。 delete 会调用对象的 destructor,而free 不会调用对象的 destructor. 22. define DOUBLE(x) x+x , i = 5*DOUBLE(5); i 是多少。 答案: i 为 30。 16 23. 有哪几种情况只能用 intialization list 而不能用assignment? 答案:当类中含有 const、 reference 成员变量;基类的构造函数都需要初始化表。 24. C++是不是类型安全的。 答案:不是。 两个不同类型的指针之间可以强制转换(用 reinterpret cast)。 C是类型安全的。 25. main 函数执行以前,还会执行什么代 码。 答案:全局对象的构造函数会在 main 函数之前执行。 26. 描述内存分配方式以及它们的区别 ? 1) 从静态存储区域分配。 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 例如全局变量, static 变量。 2) 在栈上创建。 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集。 3) 从堆上分配,亦称动态内存分配。 程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。 动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。 和 class 的区别 答案: struct 的成员默认是公有的,而类的成员默认是私有的。 struct 和 class 在其他方面是功能相当的。 从感情上讲,大多数的开发者感到类和结构有很大的差别。 感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。 既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的 !)时,你也许应该使用 struct 关键字,否则,你应该使用 class 关键字。 A 中没有生命任何成员变量与成员函数 ,这时 sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。 ( Autodesk) 答案:肯定不是零。 举个反例,如果是零的话,声明一个 class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分 A[0],A[1]…了。 29. 在 8086 汇编下,逻辑地址和物理地址是怎样转换的。 ( Intel) 答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址 *10H+通用寄存器内地址, 17 就得到了真正要访问的地址。 30. 比较 C++中的 4 种类型转换方式。 请参考: static_cast, dynamic_cast 和 reinterpret_cast 的区别和应用。 BOOL,int,float,指针类型的变量 a 与 “零 ”的比较语句。 答案: BOOL : if ( !a ) or if(a) int : if ( a == 0) float : const EXPRESSION EXP = if ( a EXP amp。 amp。 a EXP) pointer : if ( a != NULL) or if(a == NULL) const 与 define 相比,有何优点。 答案: 1) const 常量有数据类型,而宏常量没有数据类型。 编译器可以对前者进行类型安全检查。 而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到 的错误。 2) 有些集成化的调试工具可以对 const 常量进行调试,但是不能对宏常量进行调试。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。 指针可以随时指向任意类型的内存块。 (1)修改内容上的差别 char a[] = “hello”。 a[0] = „X‟。 char *p = “world”。 // 注意 p 指向常量字符串 p[0] = „X‟。 // 编译器不能发现该错误,运行时错误 (2) 用运算符 sizeof 可以计算出数组的容量(字节数)。 sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是 p 所指的内存容量。 C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。 注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 char a[] = hello world。 char *p = a。 cout sizeof(a) endl。 // 12 字节 cout sizeof(p) endl。 // 4 字节 计算数组和指针的内存容量 void Func(char a[100]) { cout sizeof(a) endl。 // 4 字节而不是 100 字节 } 18 、覆盖和隐藏区别。 答案: : ( 1)相同的范围(在同一个类中); ( 2)函数名字相同; ( 3)参数不同; ( 4) virtual 关键字可有可无。 ,特征是: ( 1)不同的范围(分别位于派生类与基类); ( 2)函数名字相同; ( 3)参数相同; ( 4)基类函数必须有 virtual 关键字。 c.“隐藏 ”是指派生类的函数屏蔽了与其同名的基类函 数,规则如下: ( 1)如果派生类的函数与基类的函数同名,但是参数不同。 此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。 ( 2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。 此时,基类的函数被隐藏(注意别与覆盖混淆) 35. There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers. 答案: ( ( a + b ) + abs( a b ) ) / 2 36. 如何打印出当前源文件的文件名以及源文件的当前行号。 答案: cout __FILE__。 cout__LINE__。 __FILE__和 __LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。 37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明。 答案:可以,可以用 _onexit 注册一个 函数,它会在 main 之后执行 int fn1(void), fn2(void), fn3(void), fn4 (void)。 void main( void ) { String str(zhanglin)。 _onexit( fn1 )。 _onexit( fn2 )。 _onexit( fn3 )。 _onexit( fn4 )。 printf( This is executed first.\n )。 } int fn1() 19 { printf( next.\n )。 return 0。 } int fn2() { printf( executed )。 return 0。 } int fn3() { printf( is )。 return 0。 } int fn4() { printf( This )。 return 0。 } The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (lastinfirstout) order. The functions passed to _onexit cannot take parameters. 38. 如何判断一段程序是由 C 编译程序还是由 C++编译程序编译的。 答案: ifdef __cplusplus coutc++。 else coutc。 endif ,要求排序后输出到另一个文件中 答案: # i ncludeiostream # i ncludefstream using namespace std。 void Order(vectorintamp。 data) //bubble sort { 20 int count = ()。 int tag = false。 // 设置是否需要继续冒泡的标志位 for ( int i = 0。 i count。 i++) { for ( int j = 0。 j count i 1。 j++) { if ( data[j] data[j+1]) { tag = true。 int temp = data[j]。 data[j] = data[j+1]。 data[j+1] = temp。 } } if ( !tag ) break。 } } void main( void ) { vectorintdata。 ifstream in(c:\\)。 if ( !in) { coutfile error!。 exit(1)。 } int temp。 while (!()) { intemp。 (temp)。 } ()。 //关闭输入文件流 Order(data)。 ofstream out(c:\\)。 if ( !out) { coutfile error!。 exit(1)。 } for ( i = 0。 i ()。 i++) 21 outdata[i]。 ()。 //关闭输出文件流 } 40. 链表题:一个链表的结点结构 struct Node { int data。 Node *next。 }。 typedef struct Node Node。 (1)已知链表的头结点 head,写一个函数把这个链表逆序 ( Intel) Node * ReverseList(Node *head) //链表逆序 { if ( head == NULL || headnext == NULL ) return head。 Node *p1 = head。 Node *p2 = p1next。 Node *p3 = p2next。 p1next = NULL。 while ( p3 != NULL ) { p2next = p1。 p1 = p2。 p2 = p3。 p3 = p3。c笔试题汇总(编辑修改稿)
相关推荐
讯,当发生火灾、地震等灾情时,管理中心能通知用户。 其结构如图 1所示。 平时状态下,主板的 CPU 不断地扫描各个传感器的状态。 当检测到传感器的异常信号(有人闯入)时, CPU 进入入侵报警状 态,执行响警铃、拨打户主电话、通知管理中心等工作。 当发生火灾地震时,管理中心发送一个串口代码给主板 CPU,使 CPU 进入灾难报警状态,执行响警铃、语音报警等操作。
以被修改。 数组名的本质如下: ( 1)数组名指代一种数据结构,这种数据结构就是数组; 例如: char str[10]。 cout << sizeof(str) << endl。 输出结果为 10, str指代数据结构 char[10]。 ( 2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改; char str[10]。 str++。
例的问题论坛上说的多了 ,却总是说也说不完,但不说还不行,那就简单点,重在体会与领悟。 如果你用布局出图,基本上不用关心比例的问题。 意思是说,你可以知其然而不知所以然。 所以,强烈推荐使用布局出图。 如果你用模型空间出图,则不得不考虑比例换算,你不仅要知其然而且要知其所以然。 全局比例:全局比例是一个显示比例,等于打印比例,即与对象的实际尺寸值无关。 测量比例:测量比例是一个缩放比例
连接起来,符合 C++语法规则的式子。 由条件运 算符将运算对象连接起来,符合 C++语法规则的式子。 在函数中控制程序流程执行的基本单位,如 if语句 ,while语句 ,switch语句 , do语句 , 表达式语句等。 封闭于大括号 {}内的语句序列。 for 语句 , while 语句 , do 语句三种。 基于某一条件在两个选项中选择其一的语句称为条件语句。
112 经营税金 122 劳务费 113 固定资产原价 020 各种设备、交通工具及图书资料购置费 117 期末从业人员 (人 ) 362 对个人和家庭补助支出 118 #外方及港澳台人员 (人 ) 370 事业单位经营支出 250 单位负责人: 统计负责人: 填表人: 联系电 话 : 报出日期: 200 年 月 日 说明: 、北京市经济技术开发区统计局及市级统计直报单位报送基层企业数据。
to design up to the brainstorming phase using a puter. Eased transfer of data to the CAD phase。 no need to digitize clay model data. o Allowed time consuming functionality and manufacturability tests