您的当前位置:首页正文

C++选择题及编程题

2022-12-07 来源:步旅网
选择题

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<则上面程序段输出的是 B

A 1 B 1和-2 C 3和0 D是死循环 17.下面程序段的运行结果是 B Int n==0;

While (n++<=2); Cout<A 2 B 3 C 4 D有语法错误 18.下列程序的输出结果为: B void main()

{ 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<A 987 B 876 C 8765 D 9876 17.有以下程序: void main(0 { int k=3,n=0: While (k>0) {switch(k)

{default;break; Case 1:

Case c2:n+=k;

D } k-- }

Cout<程序运行后的输出结果是 B A 0 B 3 C 2 D 5 18.有以下程序

#include Void main()

{ 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<程序运行后的输出结果是 C

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 5 B 6 C 0 D 程序陷入死循环 19.下面的while循环,执行次数是 C While(int i=0) i--; Printf(“%d,i”);

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<2.题目: 输出1~1000中的完全数。 要求: 1)找出所有的完全数; 2)输出所有的完全数; 答:#include void main() { int x,y,z; for(x=1;x<=1000;x++) { for(y=1,z=0;y<=x/2;y++) if(!(x%y)) z=z+y; if(z==x) cout<3题目:输入两个整数,并计算两数的平方差。 要求: 1)本题要求自定义函数求两数平方差。 2)在主函数中显示平方差。 答:#include

int pfc(int x,int y); void main() { int x,y,z;

cout<<\"请输入两个数:\"; cin>>x>>y; z=pfc(x,y); cout<<\"x和y的平方差为:\"<int pfc(int x,int y) { int a; a=x*x-y*y; return(a); }

4. 、题目:交换变量a和b的值。

要求: 1)定义一个自定义函数交换a,b的值,函数形参要求是指针变量; 2)在主函数中输入a和b的值;

3)在主函数中输出a和b交换后的值。 答:#include int swap(int *p1,int *p2) {

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);

cout<<\"交换后为:\"<5、题目:计算直角坐标系中点a(x0,y0)到点b(x1,y1)的距离。 要求:1)编写函数计算两点之间的距离。 2)在主函数中输出结果。 答:.. #include #include

float length(float x0,float y0,float x1,float y1); void main() { float x0,y0,x1,y1,len;

cout<<\"请输入a点的坐标:\"; cin>>x0>>y0;

cout<<\"请输入b点的坐标:\"; cin>>x1>>y1;

len=length(x0,y0,x1,y1);

cout<<\"两点之间的距离为:\"<float length(float x0,float y0,float x1,float y1) { return sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)); }

6. 题目:输入学生的成绩score,按分数输出其等级:score>=90为优秀,90>score>=80为良好,

80>score>=70为中等,70>score>=60为及格,score<60为不及格。 要求: 1)输入一个学生的成绩; 2)判断并输出其等级。 答:#include void main() { float score;

cout<<\"请输入学生成绩score:\"; cin>>score; if(score>=90)

cout<<\"该同学成绩为优秀。\"<=80&&score<90) cout<<\"该同学成绩为良好。\"<=70&&score<80) cout<<\"该同学成绩为中等。\"<=60&&score<70) cout<<\" 该同学成绩为及格。\"<7. 题目:求a!+b!+c!的值。

要求: 1)用自定义函数计算n!;

2)通过主函数输入a,b和c的值; 3)在主函数中输出计算的结果。 答#include int factorial(int n); void main() {

int a,b,c;

cout<<\"请输入a,b,c三个数:\"; cin>>a>>b>>c; cout<<\"a!+b!+c!=\"<int factorial(int n) { int sum=1,i; for(i=1;i<=n;i++) sum=sum*i; 8.:题目:用数组求出Fibonacci数列前20项,并输出。 要求: 1)用数组保存数列; 2)按每行5个数输出 答:#include #include void main() { int i; int f[100]={1,1}; for(i=2;i<20;i++) { f[i]=f[i-1]+f[i-2]; } cout<<\"Fibonacci数列前20项为:\"; for(i=0;i<=19;i++) { if(i%5==0) cout<9、计算公式: s=1+2+3+...+n; 要求: 1)n的值由键盘输入; 2)计算s的值并显示出来 答:#include void main() { int n,i,s=0; cout<<\"请输入一个数:\"; cin>>n; for(i=0;i<=n;i++) s=s+i; cout<<\"s的值为:\"<}

10题目:从键盘输入一个字符串,将其反向输出。

要求:1)编写一个自定义函数,利用指针将字符串反向存储; 2)在主函数中输入字符串,并输出字符串。 答:#include void reverse(char *a, int n) { char temp; for(int k=0;k<((n+1)/2);k++) { temp=*(a+k); *(a+k)=*(a+n-k); *(a+n-k)=temp; } }

void main() { char a[100]; cout<<\" 输入一串字符:\"; cin.getline(a,100); for (int i=0;a[i]!=0;) i++; reverse(a,i-1); cout<<\"反向的字符为 :\"; for(int j=0;j<=i-1;j++) cout<<*(a+j); cout<11. 找出100~1000之间能被7整除的数,要求以一行8个数的格式输出这些数。 要求: 1)找出100~1000之间能被7整除的数 2)要求以一行8个数的格式输出这些数。 答:#include void main() { int i,j=0; for(i=100;i<=1000;i++) { if(i%7==0) { cout<<\" \"<}

12. 题目:找出三行三列的二维数组中最大元素及其所在的行和列。 要求: 1)二维数组的数值从键盘读入; 2)找出最大元素及其所在的行和列; 3)显示最大元素及其所在的行和列 答:#include void main() { int a[3][3]; int i,j,max=0,t,row=0,colum=0;

cout<<\"请输入3行3列(9个)数字:\"; for(i=0;i<3;i++) { for(j=0;j<3;j++) { cin>>a[i][j]; if(max}

cout<<\"最大的元素为:\"<13. 题目:从键盘输入10个学生成绩,计算平均成绩,并统计出不及格学生的人数。 要求: 1)从键盘输入10个成绩; 2)统计不及格学生人数; 3)计算出平均成绩; 4) 输出结果。 答:#include void main() { int i,j=0; float a[10],ave,sum=0; cout<<\"请输入10个学生的成绩:\"<>a[i]; if(a[i]<60)

}

j++; sum=sum+a[i]; }

cout<<\"sum=\"<cout<<\"不及格的人数为:\"<14.定义一个PERSON类,该类包括4个数据成员,分别用来记录职工的姓名、年龄、薪金个电话号码,利用该类生成对象OBJ,且使用构造函数为OJB富裕初始值,并显示该职工的信息。

要求:定义PERSON类

在主函数中使用构造函数为OBJ富裕初始值,并显示该职工的信息

15以下是一个学生类的类定义部分,请完成相应的泪的实现部分,并编写主函数测试相应的功能,测试时学生信息为学号1101 姓名wangfei 生日 1995年3月20日 要求:完成相应的类的实现部分 在主函数中进行测试

16定义一个日期类Date,其中包括3个整型数据成员分别表示日期的年、月、日请写出类的定义体及有关的成员函数的实现代码,使其能完成构造一个日期对象,输出一个日期和根据给定的年月和日设置日期最后编写MAIN函数,测试类的功能 要求:定义Date类

编写main函数进行测试

17.定义一个圆类circle,在其中包括一个数据成员表示半径,3个成员函数分别实现半径的面积的计算和半径面积的输出,并编写相应的主函数测试该类,测试时半径取6 要求:定义圆类circle及其成员 在主函数中测试类

18设计一个STUDENT学生类,能完成对某个学生的学号姓名和成绩的输入输出以及成绩的访问,并编写main函数进行测试。 要求 定义STUDENT学生类 在主函数中进行测试

因篇幅问题不能全部显示,请点此查看更多更全内容