1.若有如下声明: Class base { int k; Public c;
Void set(int n) {k=n;} Int get () const {return k;} };
Class derived:protected base { protected: Int j Public :
Void set(int m,int n) { base::set(m) J=n }
Int get() const
{ return base::get()+j; } }
则类Derived中保护的数据成员和成员函数的总个数是 B A 4 B 3 C 2 D 1
2.若有如下声明 Class base { public: Base()
{ cout<<”base” };
Class derive:public base { public: Derive()
{ cout<<”derive” };
Void main() { derive x, ]
执行结束后输出的结果是D
A base B Derive C Basederive D Derivebase
3.类的析构函数的对一个对象进行以下哪种操作时自动调用的是B A 建立 B 撤销 C赋值 D 引用 4.下列关于成员函数的描述,不正确的是B
A 成员函数可以重载 B 成员函数一定是内联函数
C 成员函数可以是静态的 D 成员函数可以设置参数的默认值 5.class myclass { public:
Myclass(0{cout<<1:} }执行下列语句 Myclass a,b[2],*p1;
以后,程序的输出结果是B A 11 B111 C1111 D 1
6.有关构造函数的说法不正确的是D A构造函数的名字好类的名字一样 B构造函数在定义类对象时自动执行 C构造函数无任何函数类型 D构造函数有且只有一个
7.下列关于析构函数的描述中,不正确的是 B A析构函数有且只有一个 B析构函数可以有参数 C析构函数没有函数类型
D析构函数的作用是在对象被撤销时收回其内存空间 8.在C++语言中,数据封装要解决的问题是D
A数据的规范化 B便于数据的转换 C 避免数据的丢失 D防止不同模块之间非法的数据访问 9.int a[][3]={1.2.3.4.5.6}; a[1] [0]的值是A A 4 B 1 C 2 D 5 10.要如下定义 char a[10],*b=a
不能给数组a输入字符串的语句是B
A cin>>a B cin>>a[0]. Ccin>>b D cin>>b+0
11.若已定义:
Int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;
其中0<=i<=9,则对数组a元素的引用不正确的是 D A a[p-a] B *(&a[i]) C p[i] D *(*(a+i)) 12.在int a=3,int*p=&a;中,*pd的值是D
A变量a的地址值 B 无意义 C 变量p的地址值 D 3 13.C++语言规定,函数返回值的类型是由D A语句中的表达式类型所决定
B调用该函数时的主调函数类型所决定 C调用该函数时系统临时决定
D在定义该函数时所指定的函数类型所决定 14.下列有关重载函数的说法正确的是C A重载函数必须具有不同的返回值类型 B重载函数参数个数必须相同 C重载函数必须有不同的形参列表 D重载函数名可以不同
15.以下叙述中不正确的是D
A在不同的函数中可以使用相同名字的变量 B函数中的形式参数是局部变量
C在一个函数内定义的变量只在本函数范围内有效
D在一个函数的复合语句中定义的变量在本函数范围内有效 16.下面有关for循环的正确描述是 D
Afor循环只能是用于循环次数已经确定的情况 Bfor循环是先执行循环语句,后判断表达式 Cfor循环中,不能用break语句跳出循环体
Dfor循环语句中,可以包含多条语句,但要用花括号括起来 17.若有如下语句 int x=3; Do { x-=2; Cout< A 1 B 1和-2 C 3和0 D是死循环 17.下面程序段的运行结果是 B Int n==0; While (n++<=2); Cout< { int a=2,b=-1,c=2; If (aA 0 B 1 C 2 D 3 19.下列选项中,合法的字符常量是 C A’\\184’ B’ab’ C ‘\\x37’ D )”ab” 20.设x为int型变量,下列选项中能够判定x值为偶数的表达式是 C Ax%2=0 B x/2=0 C x%2==0 D x/2==0 21设.int x=5,y=1; 则语句if(x=0)y--;执行完后变量y的值是 C A 0 B1 C 2 D 5 22.下列选项中,正确的标识符是 B A void B 2nd C a_3 D int 23.设int a=14,b=16;则表达式a%=b+1的值为 A 0 B 1 C 2 D 3 24.在派生类的构造函数的初始化表中,不能包含、C A基类的构造函数 B派生类的一般数据成员的初始化 C基类的子对象的初始化 D派生类的子对象的初始化 25.已知类A是类B的友元,类B是类C的友元,则 D A类A一定是类C的友元 B类C一定是类A的友元 C类C的成员函数可以访问类B的对象的任何成员 D类A的成员函数可以访问类B的对象的任何成员 26.在类外定义成员函数时,需要在函数名前加上 C A 对象名 B类名 C 类名和作用域运算符 D 作用域运算符 27.下列不是描述类的成员函数是C A构造函数 B 析构函数 C 友元函数 D 拷贝构造函数 28.一个类的友元函数或友元类可以访问该类的D A私有成员 B保护成员 C公有成员 D私有成员,保护成员和公有成员 9.对两个数组a和b进行如下初始化 Char a[]=”ABCDEF”; Char b[]={‘A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是 D Aa与b数组完全相同 Ba与b长度相同 Ca和b都存放字符串 Da数组比b数组长度长 10.若有以下说明 int a[10]={0,1,2,3,4,5,6,7,8,9,10},p*a; 则数值为6的表达式是 C A*a+5 B *(a+6) C *(p+5) D p+5 12.表达式strlen(“hello”)的值是 B A 4 B 5 C 6 D 7 13.使用地址作为实参传给形参,下列说法正确的是 A实参是形参的备份 B实参与形参无联系 C形参是实参的备份 D实参是形参同一对象 16.下面程序的输出结果是 A Void main() {int n=9: While(n>6) Cout< {default;break; Case 1: Case c2:n+=k; D } k-- } Cout< #include { int x=1,a=0, b=0; Switch(x) { case 0:b++; Case 1:a++; Case 2:a++;b++; } Printf(“a=%d,b=%d\\n,a,b”); } 该程序的输出结果是 A A a =2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=2 19.有以下程序段 Int n=0,p; Do { cin>>p; n++; } while(p!=12&&n<3); 此处do-while循环的结束条件是 B A p的值不等于12并且n的值小于3 B p的值等于12并且n的值大于等于3 C p的值不等于12或者n的值小于3 D p的值等于12或者n的值大于等于3 20.设n=10,i=4,则执行赋值运算n%=i-1后,n的值是 B A 0 B 1 C 2 D 3 22.在32位机中,int型数据占用 B 字节 A 2 B 4 C 6 D 8 1. 在保护继承中,基类的私有成员变成派生类的 A A 不变访问成员 B 私有成员 C 保护成员 D 公有成员 2. 下列说法不正确的是 D A私有继承时,基类的公有成员在派生类中是私有成员 B保护继承时,基类的公有成员在派生类中是保护成员 C公有继承时,基类的公有成员在派生类中是公有成员 D公有继承时,基类的公有成员在派生类中是私有成员 4.若Sample类中的一个成员函数说明如下 Void set(Sample &a),则Sample &a的含义是 B A 指向类Sample的名为a的指针 B a是类Sample的对象引用,用来作函数Set()的形参 C 将a的地址赋给变量Set D变量Sample与a按位与的结果作为函数Set的参数 7.对于任意一个类,析构函数的个数为 B A 0 B 1 C 2 D 3 10.定义如下变量和数组: Int k; Int a[3] [3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 A For(k=0;k<3;k++) Cout<A 3 5 7 B 3 6 9 C 1 5 9 D 1 4 7 11.以下能将字符串.you are luck!正确读入的语句组是 C A char s[20];cin>>s; B char *s,cin>>s; C char s[20];cin.getline(s,20) D char *s;cin.get(s) 12.以下程序段给所有数组元素输入数据,应在下划线填入的是 A Void main() { int a[10],i=0; While(i<10) cin>>__________, } A a[i++] B a[i] C a+I D a[++i] 13.若用数组名作为函数的实参,传递给形参的是 A A 数组的首地址 B 数组第一个元素的值 C 数组中的全部元素的值 D 数组元素的个数 15.一个函数功能不太复杂,但要求被频繁调用,则应它定义为 A A 内联函数 B 重载函数 C 递归函数 D 嵌套函数 17.下列关于switch语句据描述正确的是 A A switch语句中的default子句可以没有,也可以有一个 B switch语句中每个语句序列中必须有break语句 C switch语句中的default子句只能放在最后 D switch语句中的case子句后面的表达式可以是整形表达式 18.下面是while循环,执行次数是 C While(int i=0) i--; Print (“%d,i”); A 3次 B 1次 C 0次 D无数次 20.设int x=5,y=1;,则语句if(x=0)y--;执行完后变量的值是 B A 0 B 1 C 2 D 5 4.下列关于this指针的描述中,正确的是 B A 任何与类相关的函数都有this指针 B 类的成员函数都有this指针指针 C 类的友元函数都有this指针 D 类的非静态成员函数才有this指针 5.假定AA为一个类,a()为该类公有的成员函数,x为AA类的一个对象,则访问x对象的成员函数a()的语句为 B A x.a B x.a() C x->a D (*x).a() 6.所谓数据封装就是将一组数据和与这组数据有关数据有关操作组装在一起,形成一个实体,这实体也就是 A A类 B 对象 C 函数体 D 数据块 20.下面程序段的运行结果是 D nt a=1;b=2;c=2; While(aCout<A 1,2,0 B 2,1,0 C 1,2,1 D 2,1,1 23.若定义:char c=’\\x78’;则变量 A A包含1个字符 B包含1个字符 C包含1个字符 D 定义不合法 1. 在一个派生类的对象结束其生命周期时 A A先调用派生类的析构函数后调用基类的析构函数 B先调用基类的析构函数后调用派生类的析构函数 C如果基类没有定义析构函数,则只调用派生类的析构函数 D如果派生类没有定义析构函数,则只调用基类的析构函数 3.下列关于常对象和常成员的描述中,正确的是 A A类的普通成员函数不能对常对象进行操作 B类的成员函数可以对常对象进行操作 C除常成员函数外,其他函数不可以对常对象进行操作 D在常成员函数中,常对象可以被更新 4.有如下类定义 Class sample { int n; Public: Sample (int i=0) {n=I;} Void setvalue (int n0); } 下列关于成员函数setvalue在类外的实现中,正确的是 B A sample::sevalue(int n0) {n=n0} B void sample::sevalue(int n0) {n=n0} C void setvalue(int n0) {n=n0} D setvalue(int n0) {n=n0} 5.对于任意一个类,析构函数的个数最多为 B A 0 B 1 C 2 D 3 19.有以下程序 Int I,n=0; For (i=2;i<5;i++) { do { if (i%3) continue; n++ } while (!i); n++; } 以上程序段执行后n的值是 D A n=5 B n=2 Cn=3 Dn=4 20.下列语句中x和y都是int型变量,其中错误的语句是 C A x=y++ B x=++y C (x+y)++ D++x=y 21.执行完语句x=(a=3,a*4,a+5)后,x的值是 B A 17 B 8 C 3 D 12 1. 若有如下类声明: Class base { int k; Public: Void set(int n) {k=n;} Int get () const {return k;} }; Class derived:protected base { protected: Int j; Pblic: Void set(int m,iint n) { base::set(m) J=n; } Int get 9)const { Return base::get() } 则类derived中保护的数据成员和成员函数的总个数是 B A 4 B 3 C 2 D 1 9.int a[][3]={1,2,3,4,5,6};a[1][0]的是 A A 4 B 1 C 2 D 5 12.以下能定义一维的选项是 B A int a[5] ={0,1,2,3,4,5,} B char a[]={0,`1,2,3,4,5} Cchar a={‘A’, ‘B,’ ‘C’} D int a[5] =”123” 16.循环语句 For (x=0, y=0; (y!=1)\\\\(x<4);x++)循环体 的循环体执行次数是 B A 无限次 B 不确定次 C 4次 D 3次 19.下列程序段执行后S的值为 A Int i=1,s=0; While (i) { if (!(i%3)) Break; Else S+=I; I++; } A 2 B 3 C 6 D 以上均不是 21.编写C++程序一般需经过的几个步骤依次是 B A编辑,调试,编译,连接 B编辑,编译,连接,调试 C编译,调试,编辑,连接 D编译,编辑,连接,运行 22.设x为int型变量,下列选项中能够判定x值为偶数的表达式是 C A x%2=0 B x/2=0 Cx%2==0 D x/2==0 1. 若有如下类声明 ClassX { int x; Public: X(int n) {x=n;} } Class Y:publicX { int y; Public: Y(int a,int b); } 在构造函数Y的下列定义中,正确的是 A A Y::Y(int a,int b):x(a),y(b) { } B Y::Y(int a,int b):X(a),y(b) { } C Y::Y(int a,int b):x(a),Yb) { } D Y::Y(int a,int b):X(a),Y(b) { } 7.假定AA为一个类,a()为类公有的成员函数,x为AA类一个对象,则访问x对象的成员函数a()的语句为 B A x.a B x.a() C x->a D (*x).a() 8.下面有关类说法不正确的是 D A一个类可以有多个构造函数 B一个类只有一个构造函数 C 在一个类中可以说明具有类类型的成员函数 D析构函数需要指定参数 9.有以下程序: Void main(0 { Int a[4][4]={{1,2,3,4,},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; Int I, s=0; For (i=0; i<4;i++) S+=a[i][0]; Cout< A 11 B 19 C 13 D 20 10.要禁止修改指针P所指向的数据,这样的指针定义为 D A const char *p=”ABCD”; B char *const p=”ABCD”; C char const *p=”ABCD”; Dconst char * const p=”ABCD”; 17.以下说法正确的是 D A不能使用do-while语句构成的循环 B do-while语句构成的循环必须用break语句才能退出 C do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D do-while语句构成的循环,当while语句中的表达式值为零时结束循环 18.以下程序的运行结果为 D Int i=0,sum=0; While (i<=3) Sum +=i; I++; Cout< A 3次 B 1次 C 0次 D 无数次 22.执行完语句x=(a=3,a*4,a+5)后,x的值是 B A 17 B 8 C 3 D 12 10.判断字符串a和b是否相等,应当使用 D A if(a==b) B if(a=b) C if(strcpy(a,b)==0) D if(strcmp(a,b)==0) 19.下列for循环的次数为 B For(int i=0;x=1; x&&i<=5;i++) A 5 B 6 C 2 D 无限次 21.设int a=1,b=2,c=3,则表达式a编程题 1、题目:编写程序,输入年月日,并输出这一天为这一年的第几天,注意闰年问题! 要求: 1)输入年、月、日; 2)计算这一天为这一年的第几天并输出结果。 答:#include void main() { int year,month,date,leap,days=0; cout<<\"请输入年月日:\"; cin>>year>>month>>date; leap=(year%4==0&&year%100!=0||year%400==0); switch(month) { case 12:days+=30; case 11:days+=31; case 10:days+=30; case 9:days+=31; case 8:days+=31; case 7:days+=30; case 6:days+=31; case 5:days+=30; case 4:days+=31; case 3:days+=28+leap; case 2:days+=31; case 1:days+=date;break; } cout< int pfc(int x,int y); void main() { int x,y,z; cout<<\"请输入两个数:\"; cin>>x>>y; z=pfc(x,y); cout<<\"x和y的平方差为:\"< 4. 、题目:交换变量a和b的值。 要求: 1)定义一个自定义函数交换a,b的值,函数形参要求是指针变量; 2)在主函数中输入a和b的值; 3)在主函数中输出a和b交换后的值。 答:#include int temp; temp=*p1; *p1=*p2; *p2=temp; return 0; } void main() { int a,b; int *pointer_1,*pointer_2; cout<<\"请输入两个数:\"; cin>>a>>b; pointer_1=&a; pointer_2=&b; swap(pointer_1,pointer_2);程序运行后的输出结果是 C