华为C++笔试题 .

若只需要利用形参间接访问实参指针所指向的对象,而形参本身具有相应的存储空间,则应把形参变量说明为()参数。

A、指针

B、引用

C、值

D、指针引用


参考答案:A


在java中,引用对象变量和对象间有什么关系?()

A.对象与引用变量的有效期不一致,当引用变量不存在时,编程人员必须动手将对象删除,否则会造成内存泄露。

B.对象与引用变量的有效期是一致的,当引用变量不存在时,它所指向的对象也会自动消失。

C.对象与引用变量的有效期是一致的,不存在没有引用变量的对象,也不存在没有对象引用变量。

D.引用变量是指向对象的一个指针。


参考答案:D


阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左

子树分支向下查找,直到某个结点不存在左子树时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以 A为根的二叉树的“最

左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。

二叉树的结点类型定义如下:

typedef stmct BSTNode{

int data;

struct BSTNode*lch,*rch;//结点的左、右子树指针

}*BSTree;

函数BSTree Find Del(BSTree root)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从

树于删除以*p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。

【函数】

BSTrce Find_Del(BSTreeroot)

{ BSTreep,pre;

if ( !root ) return NULL; /*root指向的二叉树为空树*/

(1); /*令p指向根结点的右子树*/

if ( !p ) return NULL;

(2); /*设置pre的初值*/

while(p->lch){ /*查找“最左下”结点*/

pre=p;p=(3);

}

if ((4)==root) /*root的右子树根为“最左下”结点*/

pre->rch=NULL;

else

(5)=NULL; /*删除以“最左下”结点为根的子树*/

reurn p;

}


正确答案:(1)p=root->rch (2)pre=root (3)p->lch (4)pre (5)pre->lch
(1)p=root->rch (2)pre=root (3)p->lch (4)pre (5)pre->lch 解析:根据题目中的说明,函数BSTree FindDel (BSTreeroot)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最

左下”结点*p,并从树中删除以 *p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指

针。而一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的

左子树分支向下查找,直到某个结点不存在左子树时为止,该结点即为此二叉树的“最左下”结点。
因此,给定一棵非空二叉树后,其右子树上的“最左下”结点要么为右子树根结点自己,要么为右子树根的左子树结点。
当二叉树非空时,root指向的结点是存在的,因此,令p指向根结点的右子树表示为“p=root->rch"。在二叉树上删除结点的操作实质上

是重置其父结点的某个子树指针,因此查找被删除结点时,需要保存被删结点的父结点指针,pre起的就是这个作用。空 (2)处应填入

“p=root",使得指针pre与p指向的结点始终保持父子关系。根据“最左下”结点的定义,空(3)处应填入“p->lch"。
当root的右子树根为“最左下”结点时,pre指针的指向就不会被修改,因此,空 (4)处应填入“pre”。若“最左下”结点在root的右子

树的左子树上,则删除以p指向的“最左下”结点为根的子树就是将pre(*p的父结点)的左子树指针置空,因此,空 (5)填入“pre->Ich"。


下列说法中错误的是

A.静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值

B.若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽

C.静态全局变量可以被其他的编辑单位所引用

D.所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失


正确答案:C
解析:静态全局变量只限于本文件所使用。静态全局变量只限于本文件所使用,不能被其他的文件所引用。


若程序中定义了局部变量与全局变量,则(11)。A.在函数内只能访问局部变量,而不能访问全局变量SX

若程序中定义了局部变量与全局变量,则(11)。

A.在函数内只能访问局部变量,而不能访问全局变量

B.局部变量与全局变量的名字不得相同

C.若一个函数被多次调用,则其定义的局部变量必定分配同一个存储单元

D.函数中定义的局部变量与全局变量同名时,在函数内引用的是局部变量


正确答案:D
本题考查程序语言的基本概念。在高级语言程序中,变量的作用域(引用变量的代码范围)可能是全局的或者是局部的。对于全局变量,其作用域是整个程序(或文件),因此在函数内可以访问全局变量,而局部变量的作用域为声明(定义)该变量的函数(过程,子程序)。一般语言都规定,若全局变量和局部变量的名称相同,则在局部变量的作用域范围内,引用的是局部变量(即最近嵌套原则)。程序运行过程中,每次调用一个函数时,都在栈区为该函数的运行创建活动记录(主要包括函数运行时需要的数据和控制信息),函数运行结束后则释放为其分配的活动记录。因此,函数多次运行时,其定义的局部变量不一定分配同一个存储单元。


1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。3.描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性。4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。5.什么是平衡二叉树? 左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。6.堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源。7.什么函数不能声明为虚函数? constructor函数不能声明为虚函数。8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n2)。9.写出float x 与“零值”比较的if语句。 if(x0.000001&x-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构? Tcp/Ip协议 主要层次结构为: 应用层/传输层/网络层/数据链路层/物理层。11.Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 循环链表,用取余操作做14.不能做switch()的参数类型是: switch的参数不能为实型。1. 以下三条输出语句分别输出什么?C易char str1 = abc;char str2 = abc;const char str3 = abc; const char str4 = abc; const char* str5 = abc;const char* str6 = abc;cout boolalpha ( str1=str2 ) endl; / 输出什么?cout boolalpha ( str3=str4 ) endl; / 输出什么?cout boolalpha ( str5=str6 ) endl; / 输出什么?文章出自http:/ 非C+内建型别 A 和 B,在哪几种情况下B能隐式转化为A?C+中等答:a. class B : public A / B公有继承自A,可以是间接继承的b. class B operator A( ); / B实现了隐式转化为A的转化c. class A A( const B& ); / A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数d. A& operator= ( const A& ); / 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个3. 以下代码中的两个sizeof用法有问题吗?C易void UpperCase( char str ) / 将 str 中的小写字母转换成大写字母 for( size_t i=0; isizeof(str)/sizeof(str0); +I ) if( a=stri & stri=z ) stri -= (a-A );char str = aBcDe;cout str字符长度为: sizeof(str)/sizeof(str0) endl;UpperCase( str );cout str 9 ) ch += (A-9-1); char cl = c%0x10 + 0; if( cl 9 ) cl += (A-9-1); cout ch cl ;char str = I love 中国;for( size_t i=0; istrlen(str); +I ) char2Hex( stri );cout endl;5. 以下代码有什么问题?C+易struct Test Test( int ) Test() void fun() ;void main( void ) Test a(1); a.fun(); Test b(); b.fun();6. 以下代码有什么问题?C+易cout (true?1:1) temp;unsigned int const size2 = temp;char str2 size2 ;8. 以下代码中的输出语句输出0吗,为什么?C+易struct CLS int m_i; CLS( int I ) : m_i(i) CLS() CLS(0); ;CLS obj;cout obj.m_i endl;9. C+中的空类,默认产生哪些类成员函数?C+易答:class Emptypublic: Empty(); / 缺省构造函数 Empty( const Empty& ); / 拷贝构造函数 Empty(); / 析构函数 Empty& operator=( const Empty& ); / 赋值运算符 Empty* operator&(); / 取址运算符 const Empty* operator&() const; / 取址运算符 const;10. 以下两条输出语句分别输出什么?C+难float a = 1.0f;cout (int)a endl;cout (int&)a endl;cout boolalpha ( (int)a = (int&)a ) endl; / 输出什么?Float b = 0.0f;cout (int)b endl;cout (int&)b endl;cout boolalpha ( (int)b = (int&)b ) =0; -I ) / 反向遍历array数组 cout arrayi endl;12. 以下代码有什么问题?STL易typedef vector IntArray;IntArray array;array.push_back( 1 );array.push_back( 2 );array.push_back( 2 );array.push_back( 3 );/ 删除array数组中所有的2for( IntArray:iterator itor=array.begin(); itor!=array.end(); +itor ) if( 2 = *itor ) array.erase( itor );13. 写一个函数,完成内存之间的拷贝。考虑问题是否全面答:void* mymemcpy( void *dest, const void *src, size_t count ) char* pdest = static_cast( dest ); const char* psrc = static_cast( src ); if( pdestpsrc & pdestpsrc+cout ) 能考虑到这种情况就行了 for( size_t i=count-1; i!=-1; -I ) pdesti = psrci; else for( size_t i=0; icount; +I ) pdesti = psrci; return dest;int main( void ) char str = 0123456789; mymemcpy( str+1, str+0, 9 ); cout str endl; system( Pause ); return 0;本试题仅用于考查C+/C程序员的基本编程技能。内容限于C+/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C+/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿轻视。一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语

下面关于引用和指针说法错误的是:

A.引用必须初始化,而指针则没有这要求

B.引用初始化以后不能被修改,指针可以改变所指向的对象

C.存在指向空值的引用,也存在指向空值的指针

D.从内存分配上看,程序为指针变量分配内存区域,而引用不需要分配内存区域


正确答案:C
C:不存在指向空值的引用


“引用”与指针的区别是什么?


正确答案:

 

指针通过某个指针变量指向一个对象后,对它所指
向的变量间接操作。程序中使用指针,程序的可读
性差;而引用本身就是目标变量的别名,对引用的
操作就是对目标变量的操作。此外,就是上面提到
的对函数传ref和pointer的区别。


一棵左右子树不空的二叉树在先序线索化后,其空指针域数为(15)。

A.0

B.1

C.2

D.不确定


正确答案:B
解析:先序线索化后其空指针域为0。


若程序中定义了局部变量与全局变量,则 ______ 。

A.在函数内只能访问局部变量,而不能访问全局变量

B.局部变量与全局变量的名字不得相同

C.若一个函数被多次调用,则其定义的局部变量必定分配同一个存储单元

D.函数中定义的局部变量与全局变量同名时,在函数内引用的是局部变量

A.

B.

C.

D.


正确答案:D
解析:本题考查程序语言的基本概念。
  在高级语言程序中,变量的作用域可能是全局的也可能是局部的。对于全局变量,其作用域是整个程序(或文件1,因此在函数内可以访问全局变量,而局部变量的作用域为声明该变量的函数。一般语言都规定,若全局变量和局部变量的名称相同,则在局部变量的作用域范围内,引用的是局部变量。程序运行过程中,每次调用一个函数时,都在栈区为该函数的运行创建活动记录,函数运行结束后则释放为其分配的活动记录。因此,函数多次运行时,其定义的局部变量不一定分配同一个存储单元。


● 若程序中定义了局部变量与全局变量,则 (30) 。

(30)

A. 在函数内只能访问局部变量,但不能访问全局变量

B. 局部变量与全局变量的名字不得相同

C. 一个函数被多次调用时,其定义的局部变量必定分配同一个存储单元

D. 函数中定义的局部变量与全局变量同名时,在函数内引用的是局部变量


正确答案:D


更多 “华为C++笔试题 .” 相关考题
考题 一棵左右子树均不空的二叉树在先序线索化后,其空指针域有()个。正确答案:0

考题 在平衡二叉树中()。A.不存在度为1的节点 B.任意节点的左、右子树节点数目相同 C.任意节点的左、右子树高度相同 D.任意节点的左右子树高度之差的绝对值不大于1答案:D解析:平衡二叉树又称AVL树,它或者是一棵空树,或具有下列性质的二叉树:(1)左子树和右子树都是平衡二叉树:(2)左子树和右子树的高度之差的绝对值不超过1。二叉树上节点的平衡因子定义为该节点的右子树的高度减去它的左子树的高度。可见,平衡二叉树上所有节点的平衡因子只可能是-1,0,1。只要二叉树上有一个节点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。

考题 下列关于this的描述中,错误的是()。A、this是一个由系统自动生成的指针B、this指针是指向对象的C、this指针在用对象引用成员函数时系统创建的D、this指针只能隐含使用,不能显式使用正确答案:D

考题 单选题在java中,引用对象变量和对象间有什么关系?()A 对象与引用变量的有效期不一致,当引用变量不存在时,编程人员必须动手将对象删除,否则会造成内存泄露。B 对象与引用变量的有效期是一致的,当引用变量不存在时,它所指向的对象也会自动消失。C 对象与引用变量的有效期是一致的,不存在没有引用变量的对象,也不存在没有对象引用变量。D 引用变量是指向对象的一个指针。正确答案:B解析:暂无解析

考题 全局变量和局部变量可否同名,他们是否有区别?如果有,是什么区别?正确答案:可以同名,从生命周期来说全局变量存活于整个程序运行周期,而局部变量只存在所在函数的运行周期,当函数返回后,局部变量也消失,全局变量储存在静态数据库,局部变量在堆栈。

考题 判断题一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为n-1。A 对B 错正确答案:对解析:暂无解析

考题 以下关于C/C++语言指针变量的叙述中,正确的是______。A.指针变量可以是全局变量也可以是局部变量 B.必须为指针变量与指针所指向的变量分配相同大小的存储空间 C.对指针变量进行算术运算是没有意义的 D.指针变量必须由动态产生的数据对象来赋值答案:A解析:本题考查程序语言基础知识。变量是内存单元的抽象,用于在程序中表示数据。当变量存储的是内存单元地址时,称为指针变量,或者说指针变量指向了另一个变量。指针变量可以定义在函数或复合语句内,也可以定义在所有的函数之外,即可以是全局变量,也可以是局部变量。需要区分指针变量与指针所指向的变量,无论指针变量指向何种变量,其存储空间大小都是一样的。当指针变量指向数组中的一个元素时,对指针变量进行算术运算可以使其指向同一个数组中的其他元素。

考题 在平衡二叉树中,()。A.任意结点的左右子树结点数目相同 B.任意结点的左右子树高度相同 C.任意结点的左右子树高度之差的绝对值不大于1 D.不存在度为1的结点答案:C解析:该题考查考生对平衡二叉树的理解,形态匀称的二叉树称为平衡二叉树,其严格定义是:一棵空树是平衡二叉树;T是一棵非空二叉树,其左、右子树为TL和TR,令h1和hr分别为左、右子树的深度,当且仅当TL、TR都是平衡=叉树且丨h1-hr丨≤1时,T是平衡二叉树

考题 在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过1正确答案:正确

考题 在java中,引用对象变量和对象间有什么关系?()A、对象与引用变量的有效期不一致,当引用变量不存在时,编程人员必须动手将对象删除,否则会造成内存泄露。B、对象与引用变量的有效期是一致的,当引用变量不存在时,它所指向的对象也会自动消失。C、对象与引用变量的有效期是一致的,不存在没有引用变量的对象,也不存在没有对象引用变量。D、引用变量是指向对象的一个指针。正确答案:D