《程序设计基础》练习题.doc_第1页
《程序设计基础》练习题.doc_第2页
《程序设计基础》练习题.doc_第3页
《程序设计基础》练习题.doc_第4页
《程序设计基础》练习题.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础综合练习题0909姓名: 学号: 一 选择题(以熟悉概念为主)1 在C+的结构化程序设计框架中,程序的基本组成单元是_。A函数 B类C关系 D数据结构2 下列特性中, C 与 C+ 共有的是_。A. 继承 B. 封装 C. 多态性 D. 函数定义不能嵌套 3 面向对象程序设计思想的主要特征中,不包含_。A继承性B 封装性和信息隐藏性C功能分解、逐步求精 D 多态性4 在C+中所有的函数名称后面都紧跟着一对_,其中既可以没有内容,也可以包含函有选举权的参数。A( ) B C D 5 在C+的面向对象程序设计中,类与类之间通过_来实现独立性。A友元 B继承 C派生 D封装6 下列哪个是C+语言的有效标识符?_。A_No1 BNo.1 C12345 Dint7 在C+语言中,所有函数说明都必须指明返回值类型,没有返回值的函数应说明为_类型的函数。Aint Bchar Cfloat Dvoid 8 下列字符常量的写法中,错误的是_。A105 B* C Da9 下列变量的存储分配方式中,系统不为其分配内存空间的是_。Aauto变量 B register变量 Cstatic变量 Dextern变量10 如int型变量x的初始值为1,变量y和t皆为int型,且表达式y=(t=x,x+=t, t), 则变量y的值为_。A0 B1 C2 D不确定11 下列关于C+运算符结合性的说法中,正确的是_。A赋值运算符是左结合的 B复合赋值运算符是左结合的 C单目运算符是左结合的 D双目算术符是左结合的12 表达式18/5*sqrt(4.0)/5值的数据类型是_。Aint Bdouble Cfloat D不确定13 下列代码的输出结果是_。int j=int( );double d=double( );coutj dendl;A0 0 Bj d C0 0.0 D不确定14 设int a=1,b=2;,则(a+)+b和a+b这两个表达式分别为_。A3, 3 B3, 4 C4, 3 D4, 415 设int x=2,y=4,z=7; 则执行x=y-=x|x+y!=z后x,y的值分别为_。A0,3 B1,3 C2,3 D2,416 下列选项中,正确的声明语句是_。Aint i; Bextern int i; int i;extern long i;Cextern int i; Dint i=1; extern int i;int i;17 若int a=6,则执行完下列语句后,a的值为_。A1 B6 C10 D1118 如果变量x,y已经正确定义,下列语句哪一项不能正确将x,y的值进行交换_。Ax=x+y,y=x-y,x=x-y; Bt=x,x=y;y=t;Ct=y,y=x,x=t; Dx=t,t=y,y=x;19 下列程序的运行结果为_。#include void main( ) char a=3; switch(a) case 3:cout ”3”; case 2:cout”2”; break; default: cout”1”; A3 B321 C31 D3220 如对数组的初始化为:int s34=0;,则下列叙述中正确的是_。A此初始化的语句不正确 B只有元素s00可得到初始值为0,其他各元素的值不确定C数组s中各个元素都可得到初始值,但其值不一定为0D数组s中每个元素的值均为021 设有定义一维数组如下:int a5,*p=a;,则下列描述中错误的是_。A表达式p=p+1是合法的 B表达式a=a+1是合法的C表达式p-a是合法的 D表达式a+2是合法的22 关于动态存储分配中,下列说法正确的是_。Anew和delete是C+语言中专门用于动态内存分配和释放内存的函数B动态分配的内存空间也有可以被初始化C当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new23 执行完下列代码段后,i和j的值为_。 int i; int &j=i; i=5; j=i+1; A5,5 B5,6 C6,6 D6,524 以下程序的执行结果是_。#include int &max(int &x, int &y) return (xy?x:y); void main() int n=2,m=10; max(n,m)-; cout”n=”n”,m=”mendl;A2,10 B2,9 C1,10 D1,925 下列程序的输出结果是_。#include using namespace std;int n3=10,20,30,40,50,60;int main( ) int (*p)3; p=n; coutp00”,”*(p0+1)”,”(*p)2endl; return 0;A10,30,50 B10,20,30 C20,40,60 D10,30,6026 合法的数组初始化语句是_。Achar a=”string”; Bint a5=0,1,2,3,4,5; Cint a=”string”; Dchar a=0,1,2,3,4,5;27 在C+语言中,引用数组元素时,其数组下标的数据类型允许是_。A只能整型常量 B只能整型表达式C整型常量或整型表达式 D任何类型的表达式28 若有以下说明和语句,且0i10,则对数组元素的错误引用是_。int a =1,2,3,4,5,6,7,8,9,0, *p,i;p=a;A*(a+i) Bap-a Cp+i D*(&ai)29 若有以下定义和语句,且0i10,则对数组元素地址的正确表示是_。int a =1,2,3,4,5,6,7,8,9,0, *p,i;p=a;A&(a+1) Ba+ C*p D&pi30 类的指针成员的初始化是通过函数完成的,这个函数通常是_。A. 析构函数 B. 构造函数 C. 其它成员函数 D. 友元函数 31 在C+语言中函数返回值的类型取决于_。A调用系统时系统临时 Breturn语句汇总的表达式类型C定义该函数时所指定的函数类型 D调用该函数时的主调函数类型32 下列关于函数参数默认值的描述中,正确的是_。A函数参数的默认值只能设置一个 B若一个函数含有多个参数,其中一个参数设置成默认值后,其后所有参数都必须设置默认值C若一个函数含有多个参数,则设置默认参数时可以不连续设置默认值 DC+语言中函数都必须设有默认值33 已知程序中已经定义了函数test( ),其原型是int test(int,int,int); ,则下列重载形式中正确的是_。Achar test(int, int, int); Bdouble test(int, int, double); Cint test(int, int, int=0); Dfloat test(int, int, float=3.5F);34 函数重载是指_。A两个或两个函数取相同的函数名,但形参的个数或类型不同B两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C两个以上的函数名字不同,但形参的个数或类型相同 D两个以上的函数取相同的名字,并且函数的返回值类型相同35 下列正确的原型语句是_。Aint Function(void) Bvoid Function(int); Cint Function(a); Dvoid int(double);36 下列程序的输出结果是_。 #include int min(int a, int b) if(ab) return a; else return b; return 0;void main( ) coutmin(1,min(2,3)endl; A0 B1 C2 D337 下列关于类的访问权限的描述中,错误的是_。A公有数据成员和公有成员函数都可以被类对象直接处理B类的私有数据成员只能被公有成员以及该类的任何友元或友元函数访问C只有类或派生类的成员函数和友元类或友元函数可以访问保护成员D保护成员在派生类中可以被访问,而私有成员不可以38 有以下的类定义class MyClass public: MyClass ( ) cout 1; ;则执行语句MyClass a,b2,*p2; 后,程序的输出结果是_。A11 B111 C1111 D1111139 37关于友元,下列说法错误的是_。A如果类A是类B的友元,那么类B也是类A的友元B如果函数fun( )被说明为类A的友元,那么在func( )中可以访问类A的私有成员C友元关系不能被继承D如果类A是类B的友元,那么类A的所有成员函数都是类B的友元40 下面关于类MyClass的定义,对定义中的各语句描述正确的是_。Class MyClass public: void MyClass(int a )x=a /1 int f(int a, int b) /2 x=a; y=b; int f(int a, int b, int c=0)/3 x=a; y=b; z=c; static void g( ) x=10; /4 private: int x,y,z;A语句1是类MyClass的构造函数定义B语句2和3实现类成员函数的重载C语句4实现对类成员变量x的更新操作D语句1、2、3、4都不正确41 静态数据成员的初始化必须在_。A类内 B类外 C构造函数内 D静戊成员函数内42 友元的作用是_。A提高程序的运用效率 B加强类的封装性 C实现数据的隐藏性 D增加成员函数的种类43 下面程序的输出结果是_。#include class example int a;public:example(int b) a=b+; void print( ) a=a+1; couta” “; void print( ) const cout a” “; ;void main( ) example x(3); const example y(2); x.print( ); y.print( );A2 2 B4 3 C4 2 D3 244 下列不属于派生类对基类的继承方式的是_。Aprivate Bpublic Cstatic Dprotected45 下列关于基类和派生类关系的描述中,错误的是_。A派生类是基类的具体化B派生类是基类的子集C派生类是基类定义的延续D派生类是基类的组合46 在公有派生的情况下,派生类中定义的成员函数只能访问原基类的_。A公有成员和私有成员B私有成员和保护成员 C公有成员和保护成员D私有成员、保护成员和公有成员47 下列运算符中,不能用友元函数重载的是_。A+ B= C D48 类模板的模板参数_。A只可以作为数据成员的类型 B只可以作为成员的返回类型C只可以作为成员函数的参数类型 D以上三者都可以49 类模板templateclass sample,其中,友元函数func( )成为该类模板实例化的每个模板类的友元,则有_。Afriend void func( );Bfriend void func(sample&); Cfriend void A.:func( );Dfriend void C:func(sample&);50 下列关于C+文件流的叙述中,错误的是_。AC+语言中的文本文件以ASCII码形式存储数据BC+语言中对二进制文件的访问速度比文本文件快C使用函数open( )打开的文件使用完毕后,可以使用close( )函数关闭DC+语言中,随机读写方式不适合文本文件51 与语句coutendl;不等价的是_。Acout n; Bcout 12; Ccout xA; Dcoutstr;当输入为:This is a C+ program时,str所得结果是_。AThis is a C+ program BThisCThis isDThis is a C二 填空题(以概念为主)1 一个C+程序的开发步骤通常包括 、编译、链接、运行和调试。2 一般来说,一个C+程序都要包含 头文件,该文件中包含了所有的输入/输出流操作所需要的基本信息。3 C+语言为每一种运算符规定了相应的优先级,使用 可以改变默认的运算符优先级。4 指针变量所保存的不是一般的数据值,而是程序中另一个对象的 。5 C+中有4种跳转语句,它们是:break语句、continue语句、return语句和 。6 C+中有4种循环语句,它们是:goto语句构成的循环、while循环、dowhile循环和 循环。7 在类的定义体外定义成员函数时,需要在函数名前加上类域标记,而在域外使用成员函数时,需要在成员外加上_的名字。8 在C+程序中,所有函数在使用前都要使用相应的函数原型语句加以声明,但_ 函数不需要声明。9 在C+语言中,每个类都有一个隐含的指针叫做 指针。10 在C+程序中,类的具体表现是通过 定义来操作的。11 设置虚基类的目的是 . 12 为解决在多重继承环境中因公共基类所带来的 问题,C+语言提供了虚基类机制。13 对基类数据成员的初始化必须在派生类构造函数中的 处执行。14 是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。15 如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生 个静态变量。16 派生类中对基类的成员函数f( )进行覆盖,如果调用基类的成员f应该使用_ _。17 内联函数是通过 来实现的,因此内联函有选举权是真正的函数。18 C+编译器不允许用抽象类创造对象,它只能被其他类 。19 运算符函数的函数名是由 和其后要重载的运算符构成。20 使用ifstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式是 。三 程序分析:写程序结果1#include void func(int);void main() int k=6; func(k); func(k); coutendl;void func(int a) static int m=0; m+=a; cout m” “;2 #include using namespace std;int main() int s; for(int k=2;k6;k+=2) s=1; for( int j=k; j6; j+) s+=j; coutsendl;3#include int f(int i) return +i; int g(int &i) return +i; void main( ) int a,b; a=b=0; a+=f(g(a); b+=f(f(b); cout”a=”a”,b=”bendl; 4#include int min(int a,int b) return ab?a:b; int min(int a, int b, int c) int t=min(a,b); return (min(t,c); int min(int a, int b, int c, int d) int t1=min(a,b); int t2=min(c,d); return min(t1,t2); void main( ) coutmin(12,3,6,8)endl; coutmin(-3,7,0)endl; 5#include class Sample public:int x;int y;void disp( ) cout”x=”x”,y=”yendl; ; void main( ) int Sample:*pc;Sample s;pc=&Sample:x;s.*pc=10;pc=&Sample:y;s.*pc=20;s.disp( );6#include class Sample int x; int y;public: Sample(int a, int b) x=a; y=b; int getx( ) return x; int gety( ) return y; ;void main( ) int(Sample:*fp) ( ); fp=&Sample:getx; Sample s(2,7),*p=&s; int v=(p-*fp)( ); fp=&Sample:gety; int t=(p-*fp)( ); cout”v=”v”,t=”tendl;7# include class Test private: static int val;int a;public: static int func(); static void sfunc(Test &r); ; int Test:val = 10; int Test:func() val += val; return val; void Test:sfunc(Test &r) r.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论