C++程序设计复习题及参考答案_第1页
C++程序设计复习题及参考答案_第2页
C++程序设计复习题及参考答案_第3页
C++程序设计复习题及参考答案_第4页
C++程序设计复习题及参考答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、C+程序设计课程复习资料-、单项选择题:1.下列字符串中可以用作A.goto2 .定义变量A.73 .已知字母A.''101'B.Studentint a=6B.6C+标识符的是C.123 D.ka+的值是C.5D.4A的ASCII码为65,则表示字符常量 A错误的是B.'x41' C. 65D.一 ld“A”C.控制结构4 .结构化程序由三种基本结构组成,不包括D.循环结构A.顺序结构B.选择结构5 .己知有定义:const int D 5;int i=1;double f=0.32;char c=15;则下列选项错误的是A.+i;B. D-; C.

2、C+;6 .若有定义为"int *r =new int 10;A. delete r; B. delete *r C. deleteD.-f;”,则释放指针所指内存空间的操作是 r; D. delete r;7 .下列哪个是A._No18 .下列哪个是A. " 0”C+语言的不正确的标识符?B.AblC. bgcD. intC+语言的合法的字符常量?B. '054'C.'x89'9.定义整型变量x,y,z并赋初始值A. int x=y=z=6; B. int x=6,y=6,z=6;10.用C+语言编写的代码程序A.可立即执行B.C.经过编译

3、即可执行D.D.''092'的正确语句是C. x=y=z=6; D.intx,y,z=6;是一个源程序经过解释才能执行11 .将两个字符串连接起来组成一个字符串时,选用的函数是A. strlen () B. strcpy () C. strcat () D. strcmp ()12 .在程序中,预处理命令开头的字符都是A. *B.#C. &D.13 .在C+语言中,表示一条语句结束的符号是A. "#"“”“/14 .在下面的循环语句中循环体执行的次数为for(int i=0; i<n; i+)if(i>n/2) break;A.n

4、/2B.n/2+1C.n/2-1D.n-115 .在下面的一维数组定义中,有语法错误的语句是A.inta尸1,2,3;B.inta10=0;C.inta口;D. int a5;16 .下面的保留字中,不能作为函数的返回类型A. void B. intC. newD. long”的重载函数是17 .下面的函数声明中, "void BC(inta,intb);A. int BC(int x, int y);B. void BC(int a, char b);C. float BC(int a, int b, int c=0); D. int BC(int a, int b=0);18 .

5、假定AB为一个类,则该类的复制构造函数的声明语句为A.AB&(ABx); B.AB(ABx); C.AB(AB*x); D.AB(AB&);19 .表达式(1,2,3,4 )的结果是A. 1 B. 2 C. 3 D. 420 .在函数中如果不说明变量的存储类型,则默认的存储类型是A. autoB. staticC. externD. register21 .下面字符序列中,合法的 C+常量是A.078B.5LC.9e7.5D.'AB'21.1 nt a声明的自动型变量 a在没有赋值的情况下,其值为A.0B.-1C.1 D.随机数23 .设“int f(int);

6、 "和"int g(int); ”是函数f和g的原形,以下将f作为语句调用的是A. g(f(3) B. f(g(3) C. g(f(3)+2) D. p=f(g(3)+1)24 .下面对构造函数和析构函数正确定义的项是A. X:X( 参数),X:X() B. void X:X(), void X:X()C. X:X( 参数),X:X( 参数) D. void X:X(参数),void X:X( 参数)25 .变量生存期是指A.变量定义B.变量在内存中分配存储单元到被释放期间C.程序的运行D.可执行代码的生存期26 .以下选项中C+表达式不能正确表示的数学关系avxw b为A

7、. a<x && x<=bB. x<=b && a<xC. !(a>=x) && !(x>b) D. a<x<=b27 .下列定义中,定义指向数组的指针p的是A. int *p5 B. int (*p)5 C. (int *)p5 D. int *p;28 .设有以下定义:void f1(int * m, long & n);int a;long b;则以下调用合法的是A.f1(a,b)B.f1(&a,b)C.f1(a,&b)D.f1(&a,&b)29 .下列

8、各类变量中,不是局部变量的是A.register int x;B.void f(int w)C.int z;D.static int y;(定义在函数外)30 .已知p是一个指向类 A数据成员m的指针,A1是类A的一个对象。如果要给 m赋值为5,()正确的语句。A.A1.p=5B.A1->p=5C.A.*p=5D.*A1.p=531 .以下选项中,决定函数的返回值的类型是A.调用该函数的主调函数类型B.return语句中的表达式类型C.定义函数时所指定的返回值类型D.调用函数时临时决定32 .下面for语句的循环次数为for(int i=0,x=0; !x && i<

9、;=5; i+);A.无穷次 B.5C.6D.733 .在下面的字符数组定义中,有语法错误的语句是A.char a20="abcdefg" B.char a ="x+y=55"C.char a15='1', '2' D.char a10='5'34 .若用数组名作为函数调用的实参,传递给形参的是A.数组的首地址B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数35 .假定AB为一个类,则执行“ AB a(4),b5,*p2;”语句时,自动调用该类构造函数的次数为A. 6 B. 7 C. 9 D.

10、 1136 .当使用fstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为A. ios:in B. ios:out C. ios:in | ios:out D.没有二、填空题:1 .若a是一个字符数组,则使用输入输出流对象 cout向屏幕输出数组a中所存字符串的语句为 2 .当一个对象定义时,C+褊译系统自动调用 函数建立该对象并进行初始化。3 .C+语言的参数传递机制包括值传递和 传递两种。4 .假定p是一个指针,则(*p)+运算首先访问 ,然后使p的值增1。5 .假定对二维数组a34进行初始化的数据为2, 5, 6, 2,8,7,则a11被初始化为6 .设px指向一个

11、类的动态分配的对象,则执行"delete px;”语句时,将自动调用该类的 7 .变量的基本类型有 、实型、字符型和枚举型。8 .语法的三种基本结构为顺序结构、选择结构和 结构。9 .一个指针指向一个 Data类对象,它保存着该对象的 ,相应的指针类型为 Data类。10 .若do循环的"尾"为"while(+i<10) ”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行 次后正常结束。11 .假定用户没有Z一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为 12 .当在程序中执行到 语句时,就立即结束本层循环类语句

12、或switch语句的执行。13 .字符和字符串常数的定界符分别为 和双引号(")。14 .应用程序hello.cpp 中只有一个函数,这个函数的名称是 。15 .在switch语句中,每个语句标号所含关键字case后面的表达式必须是 表达式。16 .假定p所指对象的值为25, p+1所指对象的值为46,则*p+的值为。17 .假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为 Worker * r= 。18 .设有如下程序结构:class Box;void main() Box A,B,C; 该程序运行时,分别调用卞造函数和析构函数 次。

13、19 .若有语句int a=6;,则计算表达式 a+=a-=a*a 后,a的值为。20 .在进行函数调用时,将把实参的 传递给值参数,把实参数的地址传递给引用参数。21 .关系表达式 x+y>5的相反表达式为 。22 .假设在程序中a、b、c均被定义成整型,所赋值都大于1,则能正确表示数学式abc的表达式是 (不使用强制类型转换)。23 .假定a是一个一维数组,则 ai的指针访问方式为。24 .对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的 实现。25 .C+中的标识符只能由字母、数字和 组成。26 .C+语句cout<<<<

14、120;可以用8进制数表示(输出) 120 。27 .利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 的成员。28 .C+在调用一个函数的过程中,可以直接或间接地调用该函数本身,这种调用称为 调用。29 .在C+唯序中包含一个头文件或程序文件的预编译命令为 。30 .假定一维数组的定义为“ int a8;",则该数组所含元素的个数为 。31 .十六进制常量前面应该加 为前缀。32 .变量一般需要先赋初值再参与运算, 变量没有赋初值时,将由系统自动置为 0。33 .当程序中执行到 语句时,将结束所在循环语句中循环体的一次执行。34 .C+中规定,数组元素的下标从 开始。35

15、.假定有定义int *p ,则指向p变量的指针变量pp定义语句为 。36 .类test的析构函数名是 。三、判断题:1 .在C+中,自减运算符“-”可以用于变量,也可以用于常量。2 .switch 语句中必须有 break语句,否则无法退出 switch 语句。3 .若S表示一条C+语句,while(1)S 必定是无限循环。4 .若有说明:int *p1,*p2,m=3,n; 则p1=&m;p2=p1;是正确的赋值语句。5 .在C+语言中,类中的成员函数能存取类中的私有数据。6 .控制格式输入输出的操作子oct不是设置域宽的。127。delete删除之。7 .在C+中,0127是一个合

16、法的整数,最高位的0实际上是不必要,其值就是8 .如果x是一个整型变量,则语句"int *p=new intx; ”是正确的。9 .数组是若干相同类型的数据的集合。10 .在C+相言中,可以使用 new运算符创建的对象或对象数组,可以使用运算符11 .若类A是类B的友元类,且类 B是类C的友元类,则类 A也是类C的友元类。12 .对于ofstream 类对象file , feof成员函数的返回值为真表示打开文件失败。13 .在switch语句中,switch后面的表达式可以为任意类型。14 .'n' 、'x6A' 、''101'

17、均是 C+勺字符常量。15 .一个变量的地址就称为该变量的“指针”。16 .如果(x=y),贝U (*x=*y)。17 .函数体内声明的静态变量,至多只会被初始化一次。18 .构造函数和析构函数都不能重载。19 .在C+转言中,while语句的循环体有可能一遍都不执行,而do while语句的循环体至少执行一遍。20 .在C+的命名标识符中,大小写字母是不加区分的。21 .引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。22 .在C+钟,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第 二行的元素。23 .const char *p 说明了

18、 p是指向字符串的常量指针。24 .说明或定义对象时,类名前面不需要加class关键字。25 .在C+钟,空语句表示什么都不做,因此毫无意义。26 .预处理命令是在进行编译前执行的,然后再进行正常编译。27 .语句"char c='c' char p=&c;"是错误的。28 .在一个被调用函数中,一个 return语句可返回多个值给调用函数。29 .静态成员变量是整个类的所有对象共用的。30 .write函数只能按规定向文件写入所指定的字符数。31 .C+中,任何一个表达式加上一个分号就构成一个语句。32 .在说明语句"int a(15),

19、 &b=a, *p=&a;”中,b的值与*p的值是相等的。33 .在C+中,函数声明时要用函数原型,即定义函数时的函数头部分。34 .for 循环中,循环变量的作用域是该循环的循环体内。35 .在传值调用中,要求实参与形参的类型完全一致并且个数相等。36 .使用class定义的类成员默认的访问权限是私有的( private )。37 .在C+钟,条件运算符的结合方向为从左到右。四、写出程序的运行结果:1.#include <iostream.h> void main()int a=10, b=15;a*=3;int b=a+20;cout<<b<&

20、lt;''cout<<b<<endl;运行结果:2.#include<iostream.h> int SD(int a, int b, char op) switch(op)case'+': return a+b;case'-': return a-b;void main()int x=20, y=8;cout<<SD(x,y,'+')<<''<<SD(x,y,'-')<<endl;运行结果:3. #include

21、<iostream.h> void main()static int b3=1,2,3,4,5,6;b02=12, b12=18;cout<<*b<<"t"<<*(b+1)<<"t"<<*(b+1)<<"t"<<*(*(b+1)+2)<<"n" cout<<b02+b12+b22卜<endl;运行结果:4.#include<iostream.h> void main()char

22、ch;cin>>ch;switch(ch) case 'A':case 'a': cout<<"1"<<'' break;case 'B':case 'b': cout<<"2"<<'' break;case 'C':case 'c': cout<<"3"<<'' break;default: cout<

23、<"bad!"break; 以上程序运行时,分别输入 Acb,则 运行结果:5.#include<iostream.h>void main()int s1=0, s2=1;for(int i=2; i<5; i+) s1+=i;s2*=i;cout<<s1<<','<<s2<<endl;运行结果:6.#include<iostream.h>void ff(int x)cout<<"ff(int): "<<x<<endl;

24、 void ff(double x)cout<<"ff(double): "<<x<<endl;void main()float a(88.18);ff(a);char b('a'); ff(b);运行结果:7.#include<iostream.h>void main()int s=0;for(int i=1;i<7;i+=2)s+=i*i;cout<<"s="<<s<<endl;运行结果:8.#include<iostream.h>

25、void main()int a9=3,5,7,9,11,13,15,17,25;int *p=a;for(int i=0;i<9;i+)if(i+1)%3=0) cout<<*(p+i)<<''cout<<endl;运行结果:9.#include <iostream.h>class Apublic:A()cout<<"1" A()cout<<"2"class B:public Apublic:B()cout<<"3"B()cou

26、t<<"4"void main()B b;运行结果:10.#include<iostream.h>#include<string.h> int SC(int a, int b, int c) if(a>b) a=b;if(a>c) a=c; return a;void main()int x,y,z; x=5,y=15,z=25;cout<<SC(x,y,z)<<endl;运行结果:11.#include <iostream.h> const int n=5;void main()int a

27、nn=3,2,4,1,5, 8,7,2,5,6, 6,9,1,4,3, 5,5,3,6,2, 2,8,1,8,6;int s=0;for(int i=0;i<n;i+) s+=aii+ain-i-1;if(n%2=1)s-=an/2n/2; cout<<s;运行结果:12.#include <iostream.h>class sint i,j;public:void setij(int a,int b)i=a,j=b;int GetMul() return i*j; ;void main()s *p;p=new s3;for(int j=0;j<3;j+)p

28、j.setij(j,j);/j 的平方for(int k=0;k<3;k+=2) cout<<pk.GetMul()<<"" delete p;运行结果:13.#include<iostream.h>int c;void f1(int x,int *sum)static int y;x+; y+; c=c+y;*sum=(x+y)/c;void main()f1(1,&b); cout<<b<<" "<<c<<endl;f1(2,&b); cout&

29、lt;<b<<" "<<c<<endl;运行结果:14.#include<iostream.h>void main()int i, *d=new int5;for(i=0;i<5;i+)di=2*i+1;cout<<di<<''delete口d;运行结果:15.#include<iostream.h>class ABint a;public:AB(int aa=0)a=aa;AB( )cout<<a<<endl;class B:public

30、 ABint b;public:B(int aa=0, int bb=0):AB(aa)b=bb; B( )cout<<b;void main()B x(5),y(6,7);运行结果:16.#include<iostream.h> int LB(int *a, int n) int s=1;for(int i=0;i<n;i+)S*-*c - =a;a+;return s;void main()int a5=1,2,3,4,5;cout<<LB(a,5)<<endl;运行结果:17.#include <iostream.h>in

31、t f(int a)int b=0;static int c=3;b+,c+;return(a+b+c);void main()int a=2,I;for(I=0;I<3;I+)cout<<f(a)<<endl;运行结果:18.#include<iostream.h>class A nt *a;public:A(int x) a=new int(x);cout<<*a;A() delete a;cout<<0; ;void main()A x(3),*p;p=new A(5);delete p;运行结果:五、完成程序:1.完成以

32、下程序,计算s=1+12+123+1234+12345。void main() int t=0, s=0,i;for(i=1; ;i+) t=i+;s = s + t; cout<<s<<endl;回答:2 .完成以下程序,求数组中的最大元素值和最小元素值。#include<iostream.h> void main()int a8=46,38,72,55,24,63,50,37;int max=*a, min=*a;for(int *p=a+1;p<a+8;p+) if( )max=*p;if( )min=*p; cout<<max<

33、;<' '<<min<<endl;回答:3 .完成以下程序,输出斐氏数列的前20项,菲波纳契额数列具有这样的性质:F0=1, F1=2,FN=FN-1+FN-2。#include<iostream.h> void main()int i;long f20=1,2;for(i=2 ;;i+)fi=;for(i=0 ; i<20 ; i+) cout<<fi<<""回答:4 .从键盘输入一个 4行4列的实数矩阵到一个二维数组中,完成以下程序,求出主对角线上元素之积。#include<i

34、ostream.h> void main() (double a44=0,r=1; int i,j;for(i=0;i<4;i+) for(j=0;j<4;j+)/从键盘输入数组元素for(i=0;i<4;i+)for(j=0;j<4;j+) if()r=r*aij;cout<<"积为:"<<r<<endl; 回答: 20 i5.完成以下程序,计算 ££n!的值,即求(1!)+(1!+2!)+(1!+2!+3!)+(1!+2!+3!+ +20!)。i =4n z4void main() i

35、nt i,n;double s=0,t;for(i=1;i<=20;i+) ;for(n=1; ;n+) t=t*n;s=s+t; cout<<"1!+(1!+2!)+-+(1!+2!+ +20 !)="<<s<<endl; 回答: 6.有一个数列,它的第一项为 5,第二项为8,以后每一项都是它的前两项之和,完成以下程序,产生出 此数列的前10项,并依次显示出来。#include<iostream.h> void main() int a10; a0=5;for(int i=2;i<10;i+) ai= ;for(

36、i=0;i<10;i+) cout<<ai<<''cout<<endl; 回答: 六、程序改错:100 20",在第1-7行中存在着3条语句错误,指出错误语句行的行号,1.要求下面程序的输出结果为“ 并改正错误。#include <iostream.h>class Sint n;public:S() n=20; S(int nn) n=nn; ;错误行的行5改正为错误行的行改正为错误行的行改正为2.要求下面程序的输出结果为“2 3 1",void Show() cout<<n<<&

37、quot; " ;void shows(S &y)/1行 y->Show(); /2行void main()/3行/4行S s1(100),s2;/5行*p=&s2;/6行shows(&s1);117行shows(p);/8行在第1-12行中存在着3条语句错误,指出错误语句行的行号,并改正错误。#include <iostream.h> class P i nt n;public:void Setn(int val) n=val; void Show();void P:Show()/1行 cout<<n<<'t

38、' /2行void main()/3行/4行P ob3,*p=ob+1;/5行for(int i=0;i<3;i+)/6行obi.Setn(i+1);/7行,p.Show();/8行p=ob2;/9行p->Show();/10行p=&ob0;/11 行p->Show();1112 行,设置对象数组白成员值为1,2,3;改正为改正为_改正为错误行的行号为错误行的行号为错误行的行号为3.要求下面程序的出结果为“d=16,f=25",在第1-14行中存在着3条语句错误,指出错误语句行的行号,并改正错误。#include<iostream.h>c

39、lass Ai nt a10,n;public:A(int aa,int nn):n(nn) for (int I=0;I<n;I+) aI=aaI;int Get(int i) return ai; int SumA(int n);V求a数组白前n个兀素之和;int SumA(int n)/1行/2行int s=0;/3行for(int j=0; j<n; j+) s=s+aj;/4行return s;/5行/6行void main()/7行/8行int b尸2,5,8,10,15,20, f, d=1;/9行A x(b,6);/10 行for(int i=0;i<3;i+)/11 行d=d+G

温馨提示

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

评论

0/150

提交评论