1、二级 C+笔试-445 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。A) 12345ABCDE B) EDCBA54321C) ABCDE12345 D) 54321EDCBA(分数:1.00)A.B.C.D.2.下列叙述中正确的是( )。A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,只需要队尾指针就能反映队列中元
2、素的动态变化情况D) 循环队列中元素的个数是由队头指针和队尾指针共同决定(分数:1.00)A.B.C.D.3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。A) 0(n) B) 0(2) C) 0(log2n) C) 0(nlog2n)(分数:1.00)A.B.C.D.4.下列叙述中正确的是( )。A) 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C) 顺序存储结构能存储有序表,链式存储结构不能存储有序表D) 链式存储结构比顺序存储结构节省存储空间(分数:1.00)A.B.C.D
3、.5.数据流图中带有箭头的线段表示的是( )。A) 控制流 B) 事件驱动 C) 模块调用 D) 数据流(分数:1.00)A.B.C.D.6.在软件开发中,需求分析阶段可以使用的工具是( )。A) N-S 图 B) DFD 图 C) PAD 图 D) 程序流程图(分数:1.00)A.B.C.D.7.在面向对象方法中,不属于“对象”基本特点的是( )。A) 一致性 B) 分类性 C) 多态性 D) 标识唯一性(分数:1.00)A.B.C.D.8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:1.00)A.B.C.D.9.在
4、数据管理技术发展的三个阶段中,数据共享最好的是( )。A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同(分数:1.00)A.B.C.D.10.有三个关系 R、S 和 T 如下:(分数:1.00)A.B.C.D.11.下列语句中,错误的是( )。A) const int buffer = 256 ; B) const double * point ;C) int const buffer =256; D) double * const point;(分数:1.00)A.B.C.D.12.if 语句的语法格式可描述为:格式 1:if(条件)语句或格式 2:if(条件)
5、语句 1else 语句 2关于上面的语法格式,下列表述中错误的是( )。A) 条件部分可以是一个 if 语句,例如 if(if(a=0)B) 语句部分可以是一个 if 语句,例如 if()if()C) 如果在条件前加上逻辑非运算符! 并交换语句 1和语句 2的位置,语句功能不变D) 语句部分可以是一个循环语句,例如 if()while()(分数:1.00)A.B.C.D.13.有如下说明:int a10 = 1,2,3,4,5,6,7,8,9,10, *p=a;则数值为 9 的表达式是( )。A) *p+9 B) *(p+8) C) *p+=9 D) p+8(分数:1.00)A.B.C.D.1
6、4.有如下程序段:int i = 0,j = 1;int /r = j; /int *p = /* p = /A) B) C) D) (分数:1.00)A.B.C.D.15.下列字符串中,不可以用做 C+标识符的是( )。A) y_2006 B) _TEST_H C) Retur_n D) switch(分数:1.00)A.B.C.D.16.为了取代 C 中带参数的宏,在 C+中使用( )。A) 重载函数 B) 内联函数 C) 递归函数 D) 友元函数(分数:1.00)A.B.C.D.17.通过运算符重载,可以改变运算符原有的( )。A) 操作数类型 B) 操作数个数 C) 优先级 D) 结合
7、性(分数:1.00)A.B.C.D.18.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。A) auto B) extern C) register D) static(分数:1.00)A.B.C.D.19.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是( )。A) int operator-(FunNumber); B) FunNumber operator-();C) FunNumber operator-(int); D) int operator-(F
8、unNumber, FunNumber);(分数:1.00)A.B.C.D.20.若有下面的函数调用:fun(a+b, 3, max(n-1, b)则 fun 的实参个数是( )。A) 3 B) 4 C) 5 D) 6(分数:1.00)A.B.C.D.21.关于运算符重载,下列表述中正确的是( )。A) C+已有的任何运算符都可以重载B) 运算符函数的返回类型不能声明为基本数据类型C) 在类型转换符函数的定义中不需要声叫返回类型D) 可以通过运算符重载来创建 C+中原来没有的运算符(分数:1.00)A.B.C.D.22.有如下程序:#includeiostreamusing namespace
9、 std;int main()void function( double val) ;double val;function(val) ;cout val ;return 0 ;void function( double val)val = 3;编译运行这个程序将出现的情况是( )。A) 编译出错,无法运行 B) 输出:3C) 输出:3.0 D) 输出一个不确定的数(分数:1.00)A.B.C.D.23.下列情况中,不会调用拷贝构造函数的是( )。A) 用一个对象去初始化同一类的另一个新对象时B) 将类的一个对象赋值给该类的另一个对象时C) 函数的形参是类的对象,调用函数进行形参和实参结合时D
10、) 函数的返回值是类的对象,函数执行返回调用时(分数:1.00)A.B.C.D.24.以下关键字不能用来声明类的访问权限的是( )。A) public B) static C) protected D) private(分数:1.00)A.B.C.D.25.由于常对象不能被更新,因此( )。A) 通过常对象只能调用它的常成员函数B) 通过常对象只能调用静态成员函数C) 常对象的成员都是常成员D) 通过常对象可以调用任何不改变对象值的成员函数(分数:1.00)A.B.C.D.26.下列有关继承和派生的叙述中,正确的是( )。A) 如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员
11、B) 派生类的成员函数可以访问基类的所有成员C) 基类对象可以赋值给派生类对象D) 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(分数:1.00)A.B.C.D.27.在公有继承的情况下,允许派生类直接访问的基类成员包括( )。A) 公有成员 B) 公有成员和保护成员C) 公有成员、保护成员和私有成员 D) 保护成员(分数:1.00)A.B.C.D.28.有如下程序:#include iostream using namespace std;class Base public :void fun() cout “Base: :fun“ endl; ;class Derived
12、: public Base public :void fun() _cout “ Derived: :fun“ endl;int main() Derived d ;d. fun() ;return 0 ;已知其执行后的输出结果为:Base : : funDerived : : fun则程序中下划线处应填入的语句是( )。A) Base. fun(); B) Base:fun(); C) Base-fun(); D) fun();(分数:1.00)A.B.C.D.29.有如下程序:#include iostream using namespace std;class MyClass publi
13、c :MyClass() coutA; MyClass(char c) cout c; MyClass() coutB; ;int main() MyClass pl, * p2 ;p2 = new MyClass(X) ;delete p2 ;return 0 ;执行这个程序的输出结果是( )。A) ABX B) ABXB C) AXB D) AXBB(分数:1.00)A.B.C.D.30.有如下程序:#include iostream using namespace std;int i = 1 ;class Fun public :static int i;int value() retu
14、rn i - 1;int value() const return i + 1 ;int Fun: :i =2;int main() int i =3;Fun fun1 ;const Fun fun2;_return 0 ;若程序的输出结果是:123则程序中下划线处遗漏的语句是( )。A) cout fun1. value() Fun: :i fun2. value() ;B) cout Fun : : i fun1. value () fun2. value () ;C) cout fun1. value () fun2. value () Fun : : i ;D) cout fun2.
15、value() Fun: :i fun1 value() ;(分数:1.00)A.B.C.D.31.有如下程序:#include iostream using namespaee std;class Obj static int i;public :Obj() i+; -Obj() i- -; static int getVal() return i;int Obj: :i =0;void f() Obj ob2 ; cout ob2. getVal() ;int main() Obj obl ;f();Obj * ob3 = new Obj ; cout ob3 - getVal() ;de
16、lete ob3 ; cout Obj : :getVal() ;return 0 ;执行这个程序的输出结果是( )。A) 232 B) 231 C) 222 D) 221(分数:1.00)A.B.C.D.32.有如下程序:#include iostream using namespace std;class Pair int m,n;public :Pair(int j, int k):m(j), n(k) int get() return m;int get() const return m+n;int main() Pair a(3,5) ;const Pair b(3,5) ;cout
17、 a. get() b. get() ;return 0 ;执行这个程序的结果是( )。A) 33 B) 38 C) 83 D) 88(分数:1.00)A.B.C.D.33.有如下程序:#include iostream using namespace std;class Base protected :Base() coutA; Base(charc) coutc; ;class Derived: public Base public :Derived( charc ) coutc; ;int main() Derived d1(B) ;return 0 ;执行这个程序的输出结果是( )。A
18、) B B) BA C) AB D) BB(分数:1.00)A.B.C.D.34.有如下类定义:class MyBase int k ;public :MySase(int n =0):k(n) int value () const return k ; ;class MyDerived: MyBase int j ;public :MyDerived ( int i) : j (i) int getK()const return k; int getJ() const return j ; ;编译时发现有一处语法错误,对这个错误最准确的描述是( )。A) 函数 getK 试图访问基类的私有成
19、员变量 kB) 在类 MyDerived 的定义中,基类名 MvBase 前缺少关键字 public、protected 或 privateC) 类 MyDerived 缺少一个无参的构造函数D) 类 MyDerived 的构造函数没有对基类数据成员 k 进行初始化(分数:1.00)A.B.C.D.35.有如下程序:#include iostream using namespace std;class Instrument public :virtual void Display() = 0 ;class Piano : public Instrument public :void Displ
20、ay() / * 函数体略 * / ;int main() Instrument s ;Instrument * p = 0 ;/. ;return 0 ;下列叙述中正确的是( )。A) 语句“Insturment *P=0;”编译时出错 B) 语句“Instrument s;”编译时出错C) 类 Piano 中的 Display 函数不是虚函数 D) 类 Instrument 是一个虚基类(分数:1.00)A.B.C.D.36.有如下程序:#include iostream using namespace std;class A public :virtual void funcl() co
21、ut “A1“ ; voidfunc2() cout“A2“;class B : public A public :void func1 () cout “ B1“ ;void func2 () cout “B2“ ;int main() A * p = new B ;p - func1 () ;p - func2 () ;delete p ;return 0 ;执行这个程序的输出结果是( )。A) B1B2 B) A1A2 C) B1A2 D) A1B2(分数:1.00)A.B.C.D.37.关于在调用模板函数时模板实参的使用,下列表述中正确的是( )。A) 对于虚拟类型参数所对应的模板实参
22、,如果能从模板函数的实参中获得相同的信息,则都可以省略B) 对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C) 对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D) 对于常规参数所对应的模板实参,任何情况下都不能省略(分数:1.00)A.B.C.D.38.关于关键字 class 和 typename,下列表述中正确的是( )。A) 程序中的 typename 都可以替换为 classB) 程序中的 class 都可以替换为 typenameC) 在模板形参表中只能用 typename 来声明参数的类型D) 在模板形参表中只能用 class 或 typ
23、ename 来声明参数的类型(分数:1.00)A.B.C.D.39.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是( )。A) ios_base:cur B) ios_base:beg C) ios_base:out D) ios_base:end(分数:1.00)A.B.C.D.40.下列关于 C+流的描述中,错误的是( )。A) coutA表达式可输出字符 AB) eof()函数可以检测是否到达文件尾C) 对磁盘文件进行流操作时,必须包含头文件 fstreamD) 以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件(分数:1.00)A.B.C.D.二、
24、基本操作题(总题数:1,分数:20.00)41.请使用 VC6 或使用答题 菜单打开考生文件夹 proj1 下的工程 proj1,此工程中包含一个源程序文件main. cpp,其中有类 Book(“书”)和主函数 main 的定义。程序中位于每个“/ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:书名:C+语句程序设计总页数:299已把“C+语言程序设计”翻到第 50 页已把“C+语言程序设计”翻到第 51 页已把“C+语言程序设计”翻到第 52 页已把“C+语言程序设计”翻到第 51 页已把书合上。当前页:0注意:只修改每个“/ERROR*found*”下
25、的那一行,不要改动程序中的其他内容。#include iostream using namespace std;class Book char * title ;int hum_pages; /页数int cur_page; /当前打开页面的页码,0 表示书未打开public :/ ERROR * found *Book ( const char * theTide, int pages) num_pages (pages)tide = new char strlen(theTifle) + 1 ;strcpy ( tide, theTitle ) ;cout endl “ 书名:“ titl
26、e “页面数:“ num_pages ;Book() delete title; bool isClosed () const return cur_page = 0 ; /书合上时返回 true,否则返回 falsebool isOpen()const return ! isClosed() ; /书打开时返回 true,否则返回 falseint numOfPages () const return num_pages ; /返回书的页数int currentPage()const return cur_page; /返回打开页面的页码/ ERROR * found *void openA
27、tPage(int page_no) const /把书翻到指定页cout endl ;if( page_no 1 | page_no num_pages) cout “无法翻到第“ cur_page “ 页。“ ;close () ;else cur_page = page_no ;cout “已把“ “ title “ “翻到第“ cur page “页“ ;void openAtPrevPage() openAtPage(cur_page - 1); /把书翻到上一页void openAtNextPage() openAtPage(cur_page + 1 ) ; /把书翻到下一页voi
28、d close() /把书合上cout endl ;if( isClosed() )cout “书是合上的。“ ;else/ERROR * found *num_pages = 0 ;cout “已把书合上。“ ;cout endl; ;int main() Book book( “C + 语言程序设计“, 299) ;book. openAtPage (50) ;book. openAtNextPage () ;book. openAtNextPage () ;book. openAtPrevPage () ;book. close () ;cout “当前页:“ book. current
29、Page() endl;return 0 ;(分数:20.00)_三、简单应用题(总题数:1,分数:20.00)42.请使用 VC6 或使用答题 菜单打开考生文件夹 proj2 下的工程 proj2。此工程中包含一个源程序文件main. cpp,其中有“房间”类 Room 及其派生出的“办公室”类 Office 的定义,还有主函数 main 的定义。请在程序中“/*found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:办公室房间号:308办公室长度:5.6办公室宽度:4.8办公室面积:26.88办公室所属部门:会计科注意:只能在横线处填写适当的代码,不要
30、改动程序中的其他内容,也不要删除或移动“/*found*”。#includeiostreamusing namespace std;class Room /“房间“int room_no; /房间号double length; /房间长度(m)double width; /房间宽度(m)public :Room( int the_room_no, double the length, double the_width ) : roomno (the_room_no) , length ( the_length) , width ( the_width ) int theRoomNo() con
31、st return roomno ;/返回房间号double theLength()const return length; /返回房间长度double theWidth()const return width; /返回房间宽度/* found *double theArea () const _ /返回房间面积(矩形面积);class Office: public Room /“办公室“类char * depart; /所属部门public :Office(int the_room_no, double the_length, double the_width, const char * t
32、he_depart)/* found *:_depart = new char strlen(the_depart) + 1 ;/* found *strcpy (_) ;Office() delete depart; const char * theDepartment() const return depart; /返回所属部门;int main() /* found *Office _;cout “办公室房间号:“ an_office. theRoomNo() endl “办公室长度:“ an_office. theLength() endl “办公室宽度:“ an_office. th
33、eWidth() endl “办公室面积:“ an_office. theArea() endl “办公室所属部门“ an_office. theDepartment() endl;return 0 ;(分数:20.00)_四、综合应用题(总题数:1,分数:20.00)43.请使用 VC6 或使用答题 菜单打开考生文件夹 proj3 下的工程文件 proj3。本题创建一个小型字符串类,字符串长度不超过 100。程序文件包括 proj3. h、proj3. cpp、writeToFile. obj。补充完成重载赋值运算符函数,完成深复制功能。屏幕上输出的正确结果应该是:Hello!Happy n
34、ew year!要求:补充编制的内容写在“/*333*”与“/*666*”两行之间。不得修改程序的其他部分。注意:程序最后调用 writeToFile 函数,使用另一组不同的测试数据,将不同的运行结果输出到文件 out. dat中。输出函数 writeToFile 已经编译为 obj 文件。/proj3. h#inelude iostream #include iomanip using namespaee std;class MiniStringpublic :friend ostream return output; friend istream /用于输入的临时数组temp0 = /0;
35、 /初始为空字符串input setw( 100 ) temp;int inLen = strlen(temp) ;/输入字符串长度if( inLen != 0)s. length = inLen; /赋长度if( s. sPtr! = 0) delete s. sPtr; /避免内存泄漏s. sPtr = new char s. length + 1 ;strepy( s. sPtr, temp ) ; /如果 s 不是空指针,则复制内容else s. sPtr 0 = /0; /如果 s 是空指针,则为空字符串return input ;void modString( const char
36、 * string2 ) /更改字符串内容if ( string2 ! = 0 ) / 如果 string2 不是空指针,则复制内容if ( strlen(string2) ! = length)length = strlen(string2) ;delete sPtr;sPtr = new char length + 1; /分配内存strepy( sPtr, string2 );else sPtr 0 = /0;/如果 string2 是空指针,则为空字符串MiniStringMiniString( constchar *s = “ “):length( s ! = 0 ) ?strlen
37、( s ) : 0 )/构造函数sPtr = 0 ;if ( length ! = O)setString( s );MiniString()/析构函数delete sPtr;private :int length; /字符串长度char * sPtr; /指向字符串起始位置void setString( const char * string2 ) /辅助函数sPtr = new char strlen(string2) + 1; /分配内存if ( string2 ! = 0 ) strcpy( sPtr, string2 ) ; /如果 string2 不是空指针,则复制内容else s
38、Ptr 0 = /0; /如果 string2 是空指针,则为空字符串;/proj3. cpp#include iostream #include iomanip using namespace std;#include “proj3. h“MiniStringvoid writeToFile (const char * ) ;str2=str1; /使用重载的赋值运算符str2. modString( “Happy new year!“ ) ;cout str1 /n;cout str2 /n;writeToFile (“ “) ;return 0 ;(分数:20.00)_二级 C+笔试-4
39、45 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。A) 12345ABCDE B) EDCBA54321C) ABCDE12345 D) 54321EDCBA(分数:1.00)A.B. C.D.解析:解析 栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B。2.下列叙述中正确的是( )。A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B) 在循环队列中,只需要队头指针就能反映队列中元素的动
40、态变化情况C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D) 循环队列中元素的个数是由队头指针和队尾指针共同决定(分数:1.00)A.B.C.D. 解析:解析 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以 A 错误;在循环队列中需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以 B 与 C 错误。3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。A) 0(n) B) 0(2) C) 0(log2n) C) 0(nlog2n)(分数:1.00)A.B.C. D.解析:解析 当有序线性表为顺序存储时才能用二分法查找。可
41、以证明的是对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比较 log2n 次,而顺序查找需要比较 n 次。4.下列叙述中正确的是( )。A) 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C) 顺序存储结构能存储有序表,链式存储结构不能存储有序表D) 链式存储结构比顺序存储结构节省存储空间(分数:1.00)A. B.C.D.解析:解析 链式存储结构既可以针对线性结构也可以针对非线性结构,所以 B 与 c 错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以 D 错误。5.
42、数据流图中带有箭头的线段表示的是( )。A) 控制流 B) 事件驱动 C) 模块调用 D) 数据流(分数:1.00)A.B.C.D. 解析:解析 数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。6.在软件开发中,需求分析阶段可以使用的工具是( )。A) N-S 图 B) DFD 图 C) PAD 图 D) 程序流程图(分数:1.00)A.B. C.D.解析:解析 在需求分析阶段可以使用的工具有数据流图 DFD 图,数据字典 DD,判定树与判定表,所以选择 B。7.在面向对象方法中,不属于“对象”基本特点的是( )。A) 一致性 B) 分类性 C) 多态
43、性 D) 标识唯一性(分数:1.00)A. B.C.D.解析:解析 对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择 A。8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:1.00)A.B. C.D.解析:解析 因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。9.在数据管理技术发展的三个阶段中,数据共享最好的是( )。A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同(分数:1.00)A.B.
44、C. D.解析:解析 数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择 c。10.有三个关系 R、S 和 T 如下:(分数:1.00)A.B.C.D. 解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据 T 关系中的有序组可知 R 与 S 进行的是自然连接操作。11.下列语句中,错误的是( )。A) const int buffer = 256 ; B) const dou
45、ble * point ;C) int const buffer =256; D) double * const point;(分数:1.00)A.B.C.D. 解析:解析 const 是一个 C+关键字,用于限定不允许改变的变量。选项 B 是指向常量的指针,定义时可以不初始化;选项 D 是指针常量,定义时必须初始化。故答案为 D。12.if 语句的语法格式可描述为:格式 1:if(条件)语句或格式 2:if(条件)语句 1else 语句 2关于上面的语法格式,下列表述中错误的是( )。A) 条件部分可以是一个 if 语句,例如 if(if(a=0)B) 语句部分可以是一个 if 语句,例如
46、if()if()C) 如果在条件前加上逻辑非运算符! 并交换语句 1和语句 2的位置,语句功能不变D) 语句部分可以是一个循环语句,例如 if()while()(分数:1.00)A. B.C.D.解析:解析 本题考查 if 语句,if 语句的条件部分不能嵌套 if 语句,所以 A 选项错误;B 选项就是 if语句嵌套;C 选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D 选项也正确。13.有如下说明:int a10 = 1,2,3,4,5,6,7,8,9,10, *p=a;则数值为 9 的表达式是( )。A) *p+9 B) *(p+8) C) *p+=9 D) p+8(分数:1.00)A.B. C.D.解析:解析 本题考查指向数组的指针,本题中指针变量 p 指向数组 a,那么*p 的值就是 1,即表示数组的第一个元素,那么数值为 9 的表达式就是将指针向后移动 8 个地址,即 p+8 指向的是数组元素值为9,所以数值为 9 的表达式是*(p+8)。14.有如下程序段:int i = 0,j = 1;int /r = j; /int