试卷代号:1075 座位■ 国家开放大学(中央广播电视大学)2016年春季学期“开放本科”期末考试 C+十语言程序设计试题 2016年7月 题 号 二 三 四 总 分 分 数 得分 评卷人 一、单选题(每小题2分,共40分) 1.下列整型常量中,表示为八进制整数的是()。 A.103 B.-60 C.+13 D.053 2.下列表达式中,不属于简单表达式的是( )。 A.-k B.f(a,b) C.2050139 D.my_name_is_zhang_san 3.下列表达式中,有副作用的是()。 A.i++ B.i+3 C.>3 D.i==3 4,若OK是一个逻辑型变量,则在下列语句中,与其他语句输出不同的那个语 句是()。 A.if(OK)cout<<"!!";else cout<<"??" B.if(OK==true)cout<<"!!";else cout<<"??"; C.if(!OK==true)cout<<"!!";else cout<<"??"; D.if(!OK)cout<<"??";else cout-<<"!!"; 5.while语句的语法格式可表示为: while(循环条件)循环体 下列关于while语句的表述中,错误的是( )。 A.循环条件应该是一个逻辑表达式 B.循环条件至少执行一次 C.循环体是一个表达式 D.循环体有可能一次都不执行 325
试卷代号 :1075 座位号 国家开放大学(中央广播电视大学)2016 年春季学期"开放本科"期末考试 c++ 语言程序设计试题 2016 E 一、单选题(每小题 分,共 40 分} 1.下列整型常量中,表示为八进制整数的是( )。 A.103 B. -60 C. +13 D.053 2. 下列表达式中,不属于简单表达式的是( )。 A. - k B. f( a ,b) || C.2050139 D. my_name_is_zhang_san 3. 下列表达式中,有副作用的是( )。 A. i++ B. i+3 C. i>3 D. i==3 4. OK 是一个逻辑型变量,则在下列语句中,与其他语句输出不同的那个语 句是( )。 A. if( OK) cout<< " !!" ;else cout<<"??"; B.if( OK==true) cout<<"!!";else cout<<"??"; C.if(! OK==true) cout<<"!!";elsecout<<"??"; D. if(! OK) cout<<"??" ;else cout<<"!!"; 5. while 语句的语法格式可表示为 while( 循环条件)循环体 下列关于 while 语句的表述中,错误的是( A.循环条件应该是一个逻辑表达式 c.循环体是一个表达式 B. 循环条件至少执行一次 D. 循环体有可能一次都不执行 325
6.语句“double brm[5]={1,2,3};”定义了一个一维数组。关于此数组,下列表述中错 误的是()。 A.数组的名称是brm B.数组的类型是双精度实型 C.数组有5个元素 D.元素brm[1]的初值是1 7.语句“int data[][3]={1,2,3},{1,2},{1)}:”定义了一个二维数组。关于此数组,下 列表述中错误的是()。 A.数组名称是data B.数组有6个元素 C.最大列下标是2 D.元素data[2][1]的值为0 8.已知f是一个无参数有返回值函数。下列对「的调用中,作为语句调用的是()。 A.f)+1: B.x=f(); C.cout<<f(); D.f(); 9.已知函数f的原型是:void f(int xy[门,int size);,其中size表示数组xy的元素个数,且 还有如下数组定义: inta[]={1,2,3,4,5,6}; 下列对f的调用中正确的是()。 A.f(a[],6 B.f(a,6) C.f(xy[],6) D.f(xy,6) 10.要想定义一个指向字符串"Hello!"的指针p,且不允许通过p修改所指向的字符串, 则p应定义为()。 A.char const p="Hello!"; B.const char p="Hello!"; C.char const p="Hello!"; D.const char p="Hello!"; 1l.函数f的原型是“intf(const int n,double*d);”,且有如下变量定义: int k=4; double m[]={1,2,3,4}; 则下列对f的调用中正确的是()。 A.f(k,m) B.f(&k,m) C.f(k,&m) D.f(&k,&m) 12.下列类声明中正确的是()。 A.class ma(public:int k;); B.Class Ma(public:int k;); C.class char(public:int k;); D.class Char{); 13.关于类的析构函数,下列表述中错误的是()。 A.析构函数在对象行将消亡时被调用 B.析构函数用于完成释放对象占用的计算机资源等收尾工作 C.若类对象没有需要完成的收尾工作,该类可以没有析构函数 D.析构函数没有参数 326
6. 语句 "double brm[5J = {1 , 3} 产定义了一个一维数组。关于此数组,下列表述中错 误的是( )。 A. 数组的名称是 brm B. 数组的类型是双精度实型 C. 数组有 个元素 D. 元素 brm[lJ 的初值是 7. 语句"int data [3J = { {1 , 2, 3} , {1 , 2} , {1} }产定义了一个二维数组。关于此数组,下 列表述中错误的是( )。 A. 数组名称是 data B. 数组有 个元素 C. 最大列下标是 D. 元素 data[2][1] 的值为 8. 已知 是一个无参数有返回值函数。下列对 的调用中,作为语句调用的是( )。 A. fO+1; B. x=fO; C. cout<<fO; D. fO; 9. 已知函数 的原型是: void f(int xy口, int size) ; ,其中 size 表示数组 xy 的元素个数,且 还有如下数组定义 int a[] = { 1 , 2 , 3 , 4 , 5 ,的; 下列对 的调用中正确的是( )。 A. f(a口, 6) B.f(a ,的 C. f( xy[ ] ,6) D. f(xy ,6) 10. 要想定义一个指向字符串 "Hello! "的指针 ,且不允许通过 修改所指向的字符串, 应定义为( )。 A. char const p= "Hello!"; C. char const p=" Hello! "; B. const char p="Hello!"; D. const char p=" Hello!" ; 1.画数 的原型是"int f( const int * double d) 户,且有如下变量定义: int k=4; double m[]={1 , 2 ,3 , 4}; 则下列对 的调用中正确的是( )。 A. f(k ,m) C. f(k , &.m) B. f(&.k ,m) D. f(&.k ,&.m) 12. 下列类声明中正确的是( )。 A. class ma{public:int k;}; C. class char{ public:int k;}; B. Class Ma{public:int k;}; D. class Char{ }; 13. 关于类的析构函数,下列表述中错误的是( )。 326 A. 析构函数在对象行将消亡时被调用 B. 析构函数用于完成释放对象占用的计算机资源等收尾工作 C. 若类对象没有需要完成的收尾工作,该类可以没有析构函数 D. 析构画数没有参数
14.有如下定义: class Mb( public: static int n; }; Mbmb,&r=mb; 下列表达式试图访问类的静态成员n,其中错误的是()。 A.mb.n B.r.n C.Mb.n D.Mb::n 15.关于函数重载,下列表述中错误的是()。 A.函数重载是指定义与已有函数同名的函数 B.重载的函数与已有函数的返回类型必须相同 C.重载的函数必须保证在调用时其参数的个数或类型与已有函数有所不同 D.若是重载类的成员函数,参数表后有无const修饰可以是它们唯一的区别 16.下列模板函数声明中正确的是()。 A.template<typename T>void Double(T n)(return n+n;} B.template(typename T)void Double<T n>return n+n;} C.template<typename T>int Int(T n)(return n;) D.template(typename T)int Int<Tn>(return n;} 17.关于继承成员的访问属性,下列表述中错误的是()。 A,在公有继承方式下,所有继承成员的访问属性保持不变 B.在保护继承方式下,原来的公有属性变为保护属性 C.在私有继承方式下,原来的公有、保护属性变为私有属性 D.在任何击沉方式下,原来的私有属性变为继承的私有属性 18.关于虚函数,下列表述中错误的是()。 A.析构函数可以声明为虚函数 B.构造函数可以声明为虚函数 C.通过指针或引用对虚函数的调用称为多态调用 D.虚函数在派生类重定义后仍然是虚函数,可以进一步重定义 327
14. 有如下定义: class Mb{ public: stat1c mt n; Mb mb , &r=mb; 下列表达式试图访问类的静态成员 ,其中错误的是( )。 A.mb.n C.Mb.n B. r. n D.Mb"n 15. 关于函数重载,下列表述中错误的是( )。 A.函数重载是指定义与已有函数同名的函数 B. 重载的函数与已有函数的返回类型必须相同 c.重载的函数必须保证在调用时其参数的个数或类型与已有函数有所不同 D. 若是重载类的成员函数,参数表后有无 const 修饰可以是它们唯一的区别 16. 下列模板函数声明中正确的是( )。 A. template<typename T>void Double(T n){return n+n;} B. template(typename T)void Double<T n>{return n+n;} C. template<typename T>int Int(T n) {return n;} D. template(typename T)int Int<T n>{return n;} 17. 关于继承成员的访问属性,下列表述中错误的是( )。 .ð.在公有继承方式下,所有继承成员的访问属性保持不变 B. 在保护继承方式下,原来的公有属性变为保护属性 C. 在私有继承方式下,原来的公有、保护属性变为私有属性 D. 在任何击沉方式下,原来的私有属性变为继承的私有属性 18. 关于虚函数,下列表述中错误的是( )。 A. 析构函数可以声明为虚函数 B. 构造函数可以声明为虚函数 C. 通过指针或引用对虚函数的调用称为多态调用 D. 虚函数在派生类重定义后仍然是虚函数,可以进一步重定义 327
19.有如下类模板定义: template<typename T> class Ca public: T fa(); }; 要在模板外给出模板类成员函数fa的定义,正确的是()。 A.T fa()(return 1;) B.template<typenameT>T fa()(return 1;} C.template<typenameT>T Ca:fa()(return 1;) D.template<typenameT>T Ca<T>:fa()(return 1;) 20.下列标识符中,不属于C十十流的预定义流对象的是()。 A.cerr B.fstream C.cout D.cin 得 分 评卷人 二、填空题(每小题2分,共20分) 21.程序开发过程的四个步骤按正确的顺序分别称作 22.有如下枚举声明: enum ANIMAL(DOG,CAT=35,PIG,HEN,DOVE); 其中DOVE所对应的整数是 23.结束所在循环类语句或switch语句执行的中断语句的保留字为 24.语句“f1oatp[5]=(1.1f,2.2f,3.3f};”定义了一维数组p,其元素个数是 25.若一函数直接或间接调用了该函数自身,此种类型的调用称为 26.有两个不同操作符都用符号*表示,一个用于乘法,另一个用于 27.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的 使其初始化。 28.重载“/”的操作符函数的名称是 29.具有纯虚函数的类称为 30.在C十+流中,endl、setw、left等用于控制流的输人输出的符号统称为 328
19. 有如下类模板定义 template< typename T> class Ca{ public: T faO; 要在模板外给出模板类成员函数 fa 的定义,正确的是( )。 A. T faO {return 1;} B. template<typenameT>T faO {return 1;} C. template<typenameT>T Ca: :faO {return 1;} D. template<typenameT>T Ca<T>: :faO {rf'turn 1;} 20. 下列标识符中,不属于 C++流的预定义流对象的是( )。 A. cerr B. fstream C. cout D. cin |得分|评卷人| | 二、填空题{每小题 分,共 20 分) 1.程序开发过程的四个步骤按正确的顺序分别称作 22. 有如下枚举声明 enum ANIMAL{DOG ,CAT=35 ,PIG , HEN ,DOVE}; 其中 DOVE 所对应的整数是 23. 结束所在循环类语句或 switch 语句执行的中断语句的保留字为一一一一 24. 语句"f1oat p[5J={ 1.口, 2. 2f, 3. f}产定义了一维数组 ,其元素个数是一一一一- 25. 若一函数直接或间接调用了该函数自身,此种类型的调用称为 26. 有两个不同操作符都用符号铃表示,一个用于乘法,另一个用于 27. 在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的 使其初始化。 28. 重载"/ "的操作符函数的名称是 29. 具有纯虚函数的类称为 30. 在 C+ +流中, endl setw left 等用于控制流的输入输出的符号统称为 328
得分 评卷人 三、给出下列程序运行后的输出结果(每小题8分,共24分) 31.有如下程序: #include<iostream> using namespace std; int main(){ int x; cin>>x; if(x>100){cout<<x/10;if(x<500)cout<<x/2;} else cout<<x/5; return 0; } 运行此程序时若输入的是765,程序的输出是( )。 32.有如下程序: include<iostream> using namespace std; int main(){ intx[]={2,4,6,8,10,12},s=0; int i=0; while(i<6){s+=x[i];i+=3;} cout<<s; return 0; 运行此程序的输出是( )。 33.有如下程序: include<iostream> using namespace std; int main(){ intx[]={1,2,3,4,5},*px=x; for(int i=0;i<2;++)px++; cout<<*px; return 0; 运行此程序的输出是( 329
|得分|评卷人| | 1.有如下程序 三、结出下列程序运行后的输出结果(每小题 分,共 24 分} # include<iostream> using namespace std; int mainO{ mt X; cin>>x; if(x> 100) {cout< <x/10 ;if(x<500)cout< <x/2;} else cout< <x/5; return 0; 运行此程序时若输入的是 765 ,程序的输出是( )。 32. 有如下程序 # include<iostream> using namespace std; int mainO{ int x[J={2 , 4 ,6 , 8 , 10 , 12} , s=O; int i=O; while(i<6) {s+ = x[iJ ;i+ =3;} cout<<s; return 0; 运行此程序的输出是( )。 33. 有如下程序 # include<iostream> using namespace std; int mainO{ int x[J = { 1 , 2 ,3 , 4, 5 } ,祷 px=x; for(int i=0;i<2;i++) px++; cout<< 祷 px; return 0; 运行此程序的输出是( )。 329