點(diǎn)擊查看:2016年計(jì)算機(jī)二級《C++》基礎(chǔ)練習(xí)題及答案匯總
1[單選題]下列關(guān)于面向?qū)ο蟾拍畹拿枋鲋校e(cuò)誤的是( )。
A.面向?qū)ο蠓椒ū让嫦蜻^程方法更加先進(jìn)
B.面向?qū)ο蠓椒ㄖ惺褂昧艘恍┟嫦蜻^程方法中沒有的概念
C.面向?qū)ο蠓椒ㄌ娲私Y(jié)構(gòu)化程序設(shè)計(jì)方法
D.面向?qū)ο蟪绦蛟O(shè)計(jì)方法要使用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言
參考答案:C
2[簡答題] 有以下兩個(gè)程序,分析它們的執(zhí)行結(jié)果有什么不同。
程序1:
#include
class Point
{
int x,y;
public:
Point(){x=y=0;}
Point(int i,int j){x=i;y=j;}
Point operator+(Point);
void disp() ( cout<<”(”<
}
Point Point::operator+(Point P)
{
this->x+=P.x; this->y+=p.y;
return *this;
}
void main()
{
Point pl(2,3),p2(3,4),p3;
cout<<”p1:”;p1.disp();
cout<<”p2:”;p2.disp();
p3=pl+p2;
cout<<”執(zhí)行p3=p1+p2后”<
cout<<”p1:”,p1.disp();
cout<<”p2:”;p2.disp();
cout<<”p3:”;p3.disp();
}
程序2:
#include
class Point{
int x,Y;
public:
Point(){x=y=O;}
Point(int i,int j){x=i,y=j;}
Point operator+(Point);
void disp f){cout<< ”(”<
}
Point Point::operator+(Point P)
{
Point s;
s.x=x+p.x; s.y=y+p.y;
return s;
}
void main()
{
Point pl(2,3),p2(3,4),p3;
cout<<”p1:”;p1.disp();
cout<<”p2:”;p2.disp();
p3=pl+p2;
cout<<”執(zhí)行p3=p1+p2后”<
cout<<”p1:”;p1.disp();
cout<<”p2:”;p2.disp();
cout<<”p3:”;p3.disp();
}
參考解析:這兩個(gè)程序中的main函數(shù)完全相同,類Point中的運(yùn)算符重載均采用成員函數(shù)方式實(shí)現(xiàn),只是程序1的運(yùn)算符重載函數(shù)使用this指針,而程序2的運(yùn)算符重載函數(shù)使用局部對象。
p3=p1+p2 等價(jià)于p3=p1.operator+(p2)。對于程序1,this指針指向p1對象,執(zhí)行this->x+=p.x;this->y十一 p.y;語句,修改p l對象的x和y成員值,執(zhí)行return*this;語句,將pl對象賦給p3。所以p1和p3兩個(gè)對象的x、Y值相同,即p3=pl+p2等價(jià)于 p1=p1+p2,p3:p1,其運(yùn)行結(jié)果如下:
p1:(2,3)
p2:(3,4)
執(zhí)行p3=pl+p2后
P1:(5,7)
p2:(3,4)
P3:(5,7)
對于程序2,執(zhí)行運(yùn)算符重載函數(shù),Point s;語句定義一個(gè)對象,s.x=x+p.x;s.y=y+p.y;語句用于修改s對象的x、Y值,ret%il~l s;語句返回該對象,賦給p3,而p1和p2對象不改變。其運(yùn)行結(jié)果如下:
p1:(2,3)
p2:(3,4)
執(zhí)行p3=pl+p2后
p1:(2,3)
p2:(3,4)
p3:(5,7)第
3[單選題]C++語言對C語言做了很多改進(jìn),C++語言相對于C語言的最根本的變化是
A.增加了一些新的運(yùn)算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明符必須用原型
D.引進(jìn)了類和對象的概念
參考答案:D
4[單選題] 若x和y是程序中的兩個(gè)整型變量,則下列if語句中正確的是( )。
A.if(x==O)y=1;elsey=2;
B.if(x==0)theny=1elsey=2
C.if(x==O)y=1elsey=2;
D.ifx==0y=1elsey=2;
參考答案:A
參考解析:if…else語句的格式“if(<條件>)<語句1>else<語句2>”注意語句結(jié)束要以分號(hào)結(jié)尾,對照題中選項(xiàng)可知A正確。
5[單選題]
A.3B.4C.5D.6
參考答案:C
參考解析:
6[單選題]友元函數(shù)的作用是( )。
A.提高程序的效率
B.加強(qiáng)類的封裝性
C.實(shí)現(xiàn)數(shù)據(jù)的隱蔽性
D.增加成員函數(shù)的種類
參考答案:A
參考解析:友元函數(shù)的引入是為了提高程序的效率,減少通過接口訪問的限制,但卻破壞了類的封裝性。
7[單選題]下列描述中,錯(cuò)誤的是( )。
A.公有繼承時(shí)基類中的公有成員在派生類中仍是公有成員
B.公有繼承時(shí)基類中的保護(hù)成員在派生類中仍是保護(hù)成員
C.保護(hù)繼承時(shí)基類中的公有成員在派生類中仍是公有成員
D.保護(hù)繼承時(shí)基類中的保護(hù)成員在派生類中仍是保護(hù)成員
參考答案:C
參考解析:保護(hù)繼承時(shí)基類中的公有成員在派生類中是保護(hù)成員。
8[單選題] 下列關(guān)于C++函數(shù)的說明中,正確的是( )。
A.內(nèi)聯(lián)函數(shù)就是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù)
B.函數(shù)體的最后一條語句必須是return語句
C.標(biāo)準(zhǔn)C++要求在調(diào)用一個(gè)函數(shù)之前,必須先聲明其原型
D.編譯器會(huì)根據(jù)函數(shù)的返回值數(shù)型和參數(shù)表來區(qū)分函數(shù)的不同重載形式
參考答案:C
參考解析:內(nèi)聯(lián)函數(shù)不是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù),而是將inline放在函數(shù)定義中函數(shù)類型之前;函數(shù)體的最后一條語句可以是任意的語句;編譯器不會(huì)根據(jù)函數(shù)返回值的類型來區(qū)分重載形式,選項(xiàng)D錯(cuò)誤。標(biāo)準(zhǔn)C++要求在調(diào)用一個(gè)函數(shù)之前,必須先聲明其原型。
9[簡答題]使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正常運(yùn)行,即使程序在屏幕輸出以下類似內(nèi)容:
0012FF6810012FF3C5
0012FF6C20012FF444
0012FF7030012FF4C3
0023FF7440012FF542
0012FF7850012FF5C1
006AFDCC~006AFDEF數(shù)據(jù)可能因?yàn)闄C(jī)器的不同,程序輸出的內(nèi)容會(huì)有差異。只要相差為4的連續(xù)地址即可。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******error******的下面。
試題程序:
#include
usingnamespacestd;
intmain()
{
int*P,a[5]={1,2,3,4,5};
double*q,b[5]={5.0,4.0,3.0,2.0,1.0);
intx;
P=a;
q=b;
//********error********
for(x=0;x<=5;X++)
//********error********
cout<
(q+x)<
return0;
}
參考解析:
(1)應(yīng)改為“for(x=0;x<5;x++)”。
(2)應(yīng)改為“cout<
【解析】本題中根據(jù)數(shù)組a、b的定義。它們都有5個(gè)元素,而第1處的“for(x=0;x<=5;x++)”循環(huán)了6次,應(yīng)該是5次,所以在第1處將其修改為“for(x=0;x<5;x++)”;第2處的P變量為指針型變量,p+x為糯向數(shù)組中第X個(gè)元素的地址,這里要輸出的是存儲(chǔ)單元的內(nèi)容,所以使用“*”指針元素符,即修改為“cout<
10[填空題]類中包含了一個(gè)靜態(tài)成員函數(shù),則main函數(shù)中和P.f1(P);語句具有同樣功能的語句為_______。
參考解析:
【答案】M::f1(P);
【解析】由于f1是類M的靜態(tài)成員函數(shù),即說明類M的任何對象都共享一份f1,因此,不僅可以從對象那里訪問f1,還可以用域操作符::通過類名來訪問。
相關(guān)推薦:
各地2016年全國計(jì)算機(jī)等級考試報(bào)名時(shí)間匯總
各地2016年全國計(jì)算機(jī)等級考試費(fèi)用匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |