C++程序设计题库.docx
725所有的预处理命令都是以开头答案:#726switch构造的测试表达式只能是 、字符型或枚举型。答案:整形727break语句可出现在循环构造和 构造中。答案:switch728continue语句用于完毕 循环。答案:本次729 命令是指一个源文件可以将另一个源文件的全部内容包含进了。答案:文件包含730( )是指只有一个分号;的语句。答案:空语句731if语句的表达式可以是 的表达式。答案:任意合法732循环语句的循环体如果是多条语句必须使用 格式。答案:复合语句733嵌套的if语句中,else总是及它上面最近的,尚未配对的 配对。答案:if734switch构造中的case语句起到语句 作用。答案:标号735C+语言具有面向对象程序设计的3个主要特征:封装性、 、 。答案:继承性 多态性736C+程序的实现一般要经过下述3个步骤: , ,运行。答案:编辑 编译895C+程序由注释,编译预处理以及 ,3局部组成。答案:程序主体896假设有如下定义:char c;int n=100;float f=10;double x;那么执行完下面语句后n=,x=。x=f*=n/(c=50);答案:2 20769C+程序中有吊用关系的所有函数必须放在同一个源程序文件中错误897#include <instream.h>void main()int a,b,d=25;a=d/10%9;b=a&&(-1);cout<<a<<","<<b;输出结果为:a1,2答案:2 1899一个应用程序,既要保证其正确性,还应有容错能力,C+中,提取了一种 的机制及一套方法。答案:异常处理900static int a33=1,2,3,4,5,6,7,8,9;其中a12的值为 。答案:6901假设有以下数组a,数组元素:a0a9,其值为9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最大的元素的下标是 。答案:2911下面程序运行结果是 #include <string>#include <iostream>using namespace std;void main()char ch7="12ab"56;int i,s=0;for(i=0;chi>='0'&&chi<'9'i+=2)s=10*s+chi-'0'cout<<s;答案:1912下面程序运行结果是 #include <string>#include <iostream>using namespace std;void main()int k;int a33=1,2,3,4,5,6,7,8,9,;for(k=0;k<3;k+)cout<<ak2-k;答案:3 5 7924C+中封装性、继承性和 是面向对象程序设计的三个主要特征。答案:多态性925在C+语言构造化程序中,是程序的根本组成单元,在C+语言的面向对象设计框架中,是程序的根本组成单元。答案:函数类926C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 方式。答案:传地址927继承方式有公有继承、私有继承和 三种。答案:保护继承928数据的逻辑构造有线性构造和 两大类。答案:非线性构造929顺序构造储存方法是把逻辑上相邻的节点储存在物理位置 的储存单元中。答案:相邻930一个类可以从直接或间接的祖先中继承所有属性和方法,采用这个方法提高了软件的 答案:可重用性931设i,j,k均为int型变量,那么执行完fori=0,j=10;j<=j;i+,j-)k=i+j;语句后,k的值为 答案:10932对长度为10的线性表进展冒泡排序,最坏的情况下需要比拟的次数为 。答案:45933如果类的成员对象不提供成员初始化值,那么调用该对象的 。答案:构造函数 或 缺省的构造函数943使用C+标准程序库的任何标识符时,可以有3种方式:直接指定标识符;使用 关键字;使用 。答案:using using namespace std944下面程序运行结果是 。#include<string>#include<iostream.h>using namespace std;void main()int i;char a="Time",b="Tom"for(i=0;ai='a'&&bi!='10'i+)if(ai=bi)ifai>='a'&&ai<='z')cout<<aj-32;else cout<<ai+32;else cout<<'*'cout<<endl;答案:116*77945下面程序运行结果是 。#include<string>#include<iostream>using namespace std;void main() int i=1,n=3,j,k=3; int a5=1,4,5; while(i<=n&&k>aji+; for(j=i-1;j>=i;j-) aj+1=aj; ai=k; for(i=0;i<=n;i+) cout<<ai; cout<<endl;答案:1345946下面程序段是输出两个字符串中对应相等的字符,括号中应输入#include<string>#include<iostream>using namespace std;void main() char x="programming" char y="Fortran"int i=0;while(xi!="0")if(xi=yi) cout<<( ); else i+;答案:xi+947下面程序输出结果是 #include<string>#include<iostream>using namespace std;void main()int k;int a33=1,2,3,4,5,6,7,8,9,;for(k=0;k<3;k+)cout<<ak2-k;答案:357948下面程序的执行结果是 。#include<string>#include<iostream>using namespace std;void main( char c5=a,b',0','c','0'cout<<c;答案:ab949使用数组名作为函数参数,形参结合时,传递的是 。答案:数组首元素的地址950下面程序的执行结果是 。#include<iostream.h>int d=1; fun(int p) int d=5; d+=p+; cout<<d<<" "main() int a=3; fun(a); d+=a+; cout<<d<<endl;答案:8 4951执行语句char s3="ab",*p;p=s;*p+1)的值是'0'.答案:2下面程序的执行结果是 #include<iostream.h>int fun(int a,int b)int c;c=a+b;retrun c;void main()intx=5,y;y=fun(x+4,x);cout<<y<<endl;答案:14994下面程序运行结果是 #include <string>#include <iostream>using namespace std;void main()int i;char a="Tine",b="Tom",for(i=0;ai!0&&bi!'i+)if(ai=bi)if(ai>=a'&&bi<=z')cout<<ai-32;else cout<<*'cout<<endl;答案:116*771137下面程序的执行结果是 。#include<iostream.h>void fun();void main();int i;for(i=0;i<5;i+)fun();void fun() stastic int m=0; cout<<m+<<" "答案:0 1 2 3 41138以下程序的执行结果是 #include<iostream.h>int max(int a,int n)int i,m;m=a0;for(i=1;i<n;i+)if(ai>mm=ai;return m;void main()int a10=3,54,23,43,54,65,78,21,37,20;cout<<maxa,10<<endl;答案:781146函数的调用是一个函数直接或间接地调用它本身。答案:递归1154以下程序的执行结果 #include<iostream.h>double average(double *p,int n)double aver=0.0;for(int i=0;i<=n;i+)aver +=*p+;return aver/10.0;void main()double average(double a,int n);double a10=1,2,3,4,5,6,7,8,9,10;double y;y=ayerage(a,10);cout<<"average="<<y<<endl;1156以下程序的执行结果是 。#include<iostream.h>fun(int*x,int*y) int c,*z=&c; z=x;x=y;y=z;void main() int a=3,b=5; fun(&a,&b); cout<<a<<","<<b<<endl;答案:3,51171以下程序的执行结果是 。#include<iostream.h>#include<math.h>int fun(int&x,int&y)int z; z=x;x=y;y=z;void main()int a=3,b=5;d=fun(a,b);cout<<a<<","<<b<<endl;答案:5,31181以下程序的执行结果是 。#include<iostream.h>fun(int*x,int*y) int c; c=*x;*x=*y;*y=c;void main() int a=3,b=5; fun(&a,&b); cout<<a<<","<<b<<endl;答案:5,31202类体内成员有3个访问权限,说明它们的关键字分别是 、 、 。答案:public private protected1203使用class定义的表中,成员的默认访问权限是 的;由strust定义的类中,成员的默认访问权限是 答案:私有的 公有的1227一个类有 个析构函数;时,系统会自动调用构析函数。答案:一对象注销时1230静态成员属于 的,它除了可以通过对象名来引用外,还可以使用 来引用。答案:类 类名限定1234类中可以有 个构造函数,它们有 区分。答案:多 不同的参数表1601文件的使用步骤一般如下:1说明一个 对象;2该对象调用 函数翻开一个磁盘文件;3使用 运算符进展文本文件的读操作,使用 运算符进展文本文件的写造作,4文件读写完毕,应当调用 函数关闭文件。答案:文本流 open 提取 或>> 插入 或<< close1602按照数据存放格式区分,文件分为2类,一类是 文件,文件中的数据均是ASCII码;另一类是文件,文件中数据的储存格式和计算机内存中的格式 一样/不一样。使用 函数将文件翻开,使用 函数将文件关闭。答案:文本 二进制 一样 open close1603类的构造函数的任务是 ,构造函数没有 ,如果类定义中没有给出构造函数。那么C+编译器( )(会/不会建立一个默认的构造函数。该函数 完成/不完成)对向初始化工作。构造函数 可以/不可以)重载。构析函数 可以/不可以重载。答案:初始化对象 返回值 会 不完成 可以 不可以1604文件的使用步骤一般如下:1定义一个 对象;2该对象调用 函数翻开一个磁盘文件;3文件的读写操作;4文件使用完毕,该对象调用 函数关闭文件。其中1和第2步骤 可以/不可以合并为一步。答案:文件流 open close 可以1605程序如下,写出程序运行后在屏幕上显示的5行的结果。#include<iostream>using namespace std;class Bpublic: virtual void f1()cout<<"B f1"<<endl; void f2()cout<<"B f2"<<endl;class D:public Bpublic: void f1()cout<<"D f1"<<endl; void f2()cout<<"D f2"<<endl;int main()D d; B*pb=d, &rb=d;pb->f1(); pb->f2();rb.f1(); rb.f2();d.f2();return 0;分别为:1 2 3 4 5答案:1 Df1 2 Bf2 3 Df1 4 Bf2 5 Df21606程序如下,写出程序运行后在屏幕上显示的5行结果。#include<iostream.h>using namespace std;class B1public:B1()cout<<"B1 C"<<endl;class B2public:B2()cout<<"B2 C"<<endl;class C:public B2,public B1 B2 b2;public:C():B1()cout<<"C C"<<endl;C()cout<<"C D"<<endl;int main() C c; return 0;分别为:( ) ( ) ( ) ( ) ( )答案:B2 C B1 C B2 C C C1607#include<iostream>using namespace std;class B1public: B1()cout<<"C B1n"class B2public: B2()cout<<"C B2n" B2()cout<<"D B2n"class D:public B2B1,b1;public: D()cout<<"C Dn" D()cout<<"C Dn"int main() D d; return 0;写出程序运行后的显示结果 。分别为: 答案:C B2 C B1 C D D D D B21608复数类CComplex定义如下,完成程序填空。class CComplex int real; /实部 int image; /虚部public ( )CComplex operator-(const CComplex&,const CComplex& CComplex& operator"(const CComplex& CComplex operator-(const CComplex&,const CComplex&c2; temp.real=c1.real-c2.real; temp.image=c1.image-c2.image;CComplex&CComplex;operator*const CComplex &c2CComplex temp;temp,real=real*c2real-image*c2.inage;CComplex temp;temp.real=real*c2.real-image*c2.image;temp.image=real*c2.image-image*c2.real;( )*this;答案:friend CComplex return temp *this=temp return1640运算符重载时 ,其函数名由( ) 和( ) 构成. 答案: 关键字operator 该运算符1641p是指向类A数据成员a的指针,a是类A的一个对象,给a成员赋值为5的表达式为 。答案:a.*p=51642在某个函数体内定义一个静态类的对象sa,应该是 。答案:static A sa1643执行以下说明语句,A a5,*p2;其中,A是一个类名,其调用构造函数的次数为 次。答案:5+676while和dowhile循环不管什么条件下它们的结果都是一样的。答案:错677假设有int i=10,j=0;那么执行完语句ifj=0i+;else i-;i的值为11.答案:错678int i=20;switch(i/10)case 2:cout<<"A" case 1:cout<<"B"输出结果为A答案:错680C+中,只有一个分号的语句是不允许出现的,编译时会报语法错误。答案:错681switch构造中的break不是必须出现的语句。答案:对682for语句的三个表达式必须全部给出,不可省略。答案:错683break语句和continue语句只能出现在循环构造中。答案:错684一个程序编译通过后运行得到的输出结果一定是正确的。答案:错685封装性是一种信息隐蔽技术,是指将数据和算法捆绑成一个整体,C+语言通过建立"类"来支持封装性和信息隐蔽。答案:对686表达式1<4&&4<7的计算结果为1.答案:对687枚举类型数据可以像根本类型数据一样直接输入输出。答案:错688枚举类型是有序类型,可以进展关系运算。答案:对689既可以对构造体变量中的成员赋值,也可对构造体类型赋值。答案:错690构造体中的成员也可以是一个构造体变量。答案:对691为了解决命名冲突问题,引入关键字namespace有效控制标识符的作用域。答案:错692在C+中,异常处理机制可保证在程序运行中一旦发生异常,应该允许回复和继续运行。答案:对693函数模板是模板而非函数,而模板函数那么是由模板实例化后产生的具体函数。答案:对694对构造体中的成员不能用"->"访问成员。答案:错725enum week"MON","TUE","wed"是错误写法。答案:对726int a34=1,5,9;它的作用是将数组各行第一列的元素赋初值,其余元素值为0。答案:对727如果使一个数组中全部元素的值为0,可以写成int a10=0*10;答案:错728假设有定义和语句:int a33=(3,5),(8,9),(12,35),i,sum=0,for(i=0,for(i=0;i<3;i+) sum+=aj2-i;那么sum=21.答案:对729char*p"girl"的含义是定义字符指针变量p,p的值是字符串"girl".答案:错730char c"Very Good"是一个合法的为字符串数组赋值的语句。答案:对731字符处理函数strcpystr1,str2的功能是把字符串1接到字符串2的后面。答案:错732设有数组定义:char array=“hello;那么数组array所占的空间为5.答案:错733有如下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;那么数值为9的表达式是*(p+8).答案:对734假设有int a10,*p;那么p=&a0及p=a等价。答案:对745所谓继承就是利用已有的数据类型定义出新的数据类型。答案:对746抽象类不仅可用做派生其他类的基类,也可以用于直接创立对象的实例。答案:错747静态函数可声明为虚函数。答案:错748静态成员函数没有this指针。答案:对751类中提供了三种访问控制权:公有,私有,保护三种类型。答案:对753C+引入内联函数的原因是用它取代C中的预处理宏函数。答案:对754如果一个函数在其函数在体内直接或间接地调用了自己,该函数称为递归函数。答案:对755对于数值类型数组,如果给定的数值不够,那么没有指定数值的元素将初始化为'0'答案:对765判断字符串a和b是否相等,可以使用ifstrcmpa,b。答案:对766C+语言所有函数都是外部函数。答案:错767如果函数值的类型和return语句中表达式的值不一致,那么以函数类型为准。答案:对768通过return语句,函数可以带回一个或一个以上的返回值。答案:错770C+程序中由调用关系的所有函数必须放在同一个源文件中。答案:错772C+的函数可以嵌套定义。答案:错773如果被调用函数的定义出现在主调函数之前,可以不必加以声明。答案:对774函数调用语句:funcrec1,rec2+rec3,rec4,rec5;中,含有的实参个数是5.答案:错1294类是对象的抽象,对象是类的具体化。答案:对1295类的构造函数完成对象的初始化。答案:对1298友元函数可以被派生类继承。答案:错1299基类私有成员在派生类中不可直接访问。答案:对1300派生类先于基类构造,后于基类释放。答案:错1301运算符重载后操作数的个数有可能发生变化。答案:错1302类的构造函数和析构函数都可以是虚函数。答案:错1304类成员默认的访问权限控制是public。答案:错1305从逻辑上分析,除类的静态成员外,所有其他成员对象中都有独立的储存区域。答案:对1306This指针始终指向调用函数成员的对象。答案:对1307类中可以有多个默认的构造函数.答案:错1309派生类后于基类构造,先于基类释放。答案:对1311提取和插入运算符只能重载为类的友元函数。答案:对1312运算符重载属于静态多态。答案:对1313二进制文件中数据的存放格式和计算机内存中储存的格式是一致的。答案:对1395在C+程序中,函数既可以嵌套定义,也可以嵌套调用。答案:错1396定义在类体内的成员函数是内联函数,定义在类体外的成员函数不能是内联函数。答案:错1398静态数据成员必须在构造函数的成员初始化列表中进展初始化。答案:错1400可以把一个一般函数说明为某类的友元函数,也可以将某类的成员函数说明为另类的友元函数。答案:错1401对象引用可以用一个同类对象的地址对它赋值。答案:错1402任何对象都可以使用delete运算符来释放。答案:错1403常类型指针有两种,一种是指针的地址值是变量,另一种是指针所指向的变量或对象是常量。答案:对1404析构函数是一个函数体为空的成员函数。答案:错215假设变量已正确定义,且有以下程序段 。int a=3,b=5,c=7;if(a>b) a=b;c=a;if(c!=a)c=b;cout<<a<<","<<b<<endl;其输出结果是 。A 程序中有语法错误B 3,5,3C 3,5,5D 3,5,7答案:B216#include<iostrean.h>void main()int x;cin>>x;if(x-<5)cout<<x;else cout<<x+;程序运行后,如果从键盘输入“5,那么输出结果是 A 3B 4C 5D 6答案:B217#include<iostream.h>void main()int x=1,a=0,b=0;switch(x) case 0:b+; case 1:a+; case 2:a+,b+;cout<<"a="<<a<<"b="<<b;程序的输出结果为: ).A a=2,b=1B a=1,b=1C a=1,b=0D a=2,b=2答案:A218假设变量已经正确定义,有以下程序段:int i=0;docout<<i<<","while(i+);那么输出结果是A 0,0B 0,1C 1,1D 程序进入无限循环答案:B219当执行以下程序段时:dox=x*xwhile!x;A 循环将执行一次B 循环将执行两次C 循环体将执行无限次D 系统将提示有语法错误答案:A221执行语句“fori=1;i+<4;)"变量i的值是 A 3B 4C 5D 不定答案:C222以下表达正确的选项是 。A break语句只能用于switch语句体中B continue语句的作用是使程序的执行流程跳出包含它的所有循环C break语句只能用在循环体内和switch语句体内D 在循环体内使用break语句和continue语句的作用一样答案:C223#include<iostream.h>void main()int i=0,s=0; for(;)if(i=3|i=5)continue; if(i=6)break; i+; s+=i; cout<<s;程序的运行结果是 。A 10B 13C 21D 程序进入死循环答案:D224有以下程序:#include<iostream.h>void main()int a=1,b=2,c=3;if(c=a)cout<<c;else cout<<b;程序执行后的输出结果为 。A 1B 2C 3D 0答案:A226有以下程序:#include<iostream.h>void main()int a=5,b=4,c=3,d=2;if(a>b>c)cout<<d;else if(c-1>=d)=1)cout<<d+1;else cout<<d+2;程序执行后的输出结果为 A 2B 3C 4D 0答案:B227有以下程序:#include<iostream.h>void main() int a=3,b=4,c=5,d=2; if(a>b) if(b>c) cout<<d+1;else cout<<+d+1;cout<<d<<endl;程序执行后的输出结果为 。A 2B 3C 4D 1答案:A228有以下程序:#include<iostream.h>void main() int i(1),j(0),m(1),n(2); switch(i+) case1:m+;n+; case2:switch(+j) case1:m+; case2:n+; case3:m+;n+;break; case4:m+;n+;cout<<m<<","<<n<<endl;程序执行后的输出结果为 。A 2,3B 2,2C 3,4D 4,5答案:D 229有以下程序:#include<iostream.h>void main()int n=12345,d;while(!=0) d=n%10;cout<<d;n/10;程序输出结果是:A 12345B 54321C 135D 1答案:B230有以下程序:#include<iostream.h>void main()int v1=0,v2=0; char ch; while(ch=getchar()!='#') switch(ch) case'a': case'h': default: v1+; case'0':v2+; cout<<v1<<","<<v2;当程序执行,输入"China#",程序的输出结果为 。A 5,0B 0,0C 5,5D 0,5答案:C231有以下程序:#include<iostream.h>void main()int i=0,s=0;doif(!%2)i+;continue;i+;s+=i;while(i<7);cout<<s;程序运行输出结果为 A 12B 16C 0D 10答案:B232#include<iostream.h>void main() int y=9; for(;y>0;y-) if(y%3=0)cout<<-y<<" "A 8 5 2B 9 6 3C 7 4 1D 程序进入死循环答案:A234以下程序段的输出结果是 。int i,j,m=0;fori=1,i<=15;i+=4) fori=3,i<=19;i+=4) m+ cout<<m<<endl;A 15B 12C 20D 25答案:C235以下程序段的输出结果为:int i=1,sum=0; whilei<10 sum=sum+1;i+; cout<<"i="<<","<<"sum="<<sum;A i=10,sum=9B 程序陷入死循环C i=10,sum=10D i=10,sum=55答案:B236以下程序中,while循环的循环次数是 mainint i=0;whilei<10)if(i<1) continueif(i=5) break;i+;答案:D238以下程序的输出结果是 。int k,j,s;for(k=2;k<6;k+)s=1;for(j=k;j<6;j+)s +=j;cout<<s;A 10B 15C 24D 9答案:A239设变量j和k都是int型,那么for循环语句forj=0,k=-1;j+,k+cout<<"*"<<endl;A 循环体一次也不执行B 无限循环C 循环完毕的条件不合法D 循环体只执行一次答案:B241以下程序执行后的输出结果是 。int n=10;while(n>7) n-; cout<<n;A 1098B 10987C 987D 9876答案:C242以下程序段执行后的输出结果为 。int y=10;doy-;while(-y);cout<<y-;A 0B 1C 8D -1答案:A243以下程序执行后的输出结果 。int n;for(n=1;n<=10;n+ if(n%3=0)continue cout<<nA 12B 12457810C 1.23E+10D 369答案:B244以下程序段执行后的输出结果 。int i;for(i=1;i<3;i+switchicase1:cout<<i;case2:cout<<i;default:cout<<i;A 011122B 120C 12021D 12答案:A245以下字符串中,不可以作为