C++程序設計知到智慧樹章節(jié)測試課后答案2024年秋對外經濟貿易大學_第1頁
C++程序設計知到智慧樹章節(jié)測試課后答案2024年秋對外經濟貿易大學_第2頁
C++程序設計知到智慧樹章節(jié)測試課后答案2024年秋對外經濟貿易大學_第3頁
C++程序設計知到智慧樹章節(jié)測試課后答案2024年秋對外經濟貿易大學_第4頁
C++程序設計知到智慧樹章節(jié)測試課后答案2024年秋對外經濟貿易大學_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C++程序設計知到智慧樹章節(jié)測試課后答案2024年秋對外經濟貿易大學第一章單元測試

能作為C++程序的基本單位是()。

A:函數B:語句C:源程序文件D:字符

答案:語句關于C++與C語言的關系的描述中,錯誤的是()。

A:C++和C語言都是面向對象的B:C語言與C++是兼容的C:C語言是C++的一個子集D:C++對C語言進行了一些改進

答案:C++和C語言都是面向對象的C++中的注釋用于什么目的()。

A:解釋代碼的功能和目的B:定義變量C:用于調試代碼D:控制程序的執(zhí)行順序

答案:解釋代碼的功能和目的2.下列描述中,不屬于面向對象思想主要特征的是()。

A:封裝性B:繼承性C:跨平臺性D:多態(tài)性

答案:跨平臺性在每個C++程序中必須有且僅有一個()。

A:主函數B:語句C:預處理指令D:函數

答案:主函數

第二章單元測試

下列語句中,與語句“n=(a>b?(b>c?1:0):0);”的功能等價的是()

A:if(a<b)n=0;B:if((a>b)%7c%7c(b>c))n=1;elsen=0;C:if(a>b)n=1;elseif(b<=c)n=l;elseif(b>c)n=1;elsen=0;D:if(a>b)if(b>c)n=l;elsen=0;elsen=0;

答案:if(a>b)if(b>c)n=l;elsen=0;elsen=0;在C++的switch語句中,用于處理沒有任何case匹配且沒有默認分支的情況時,會發(fā)生什么?()。

A:程序會立即退出B:序會進入死循環(huán)C:程序會繼續(xù)執(zhí)行后面的代碼D:程序會拋出異常

答案:程序會繼續(xù)執(zhí)行后面的代碼在C++中,SWITCH語句可以用于整數、字符和枚舉類型的條件判斷。()

A:錯B:對

答案:對下列哪個語句用于實現單一條件判斷?()

A:while循環(huán)語句B:switch語句C:if-else語句D:for循環(huán)語句

答案:if-else語句執(zhí)行下列語句:

#include<iostream>

usingnamespacestd;

intmain()

{

intx=3;

if(x=5)

cout<<x++<<endl;

else

cout<<x<<endl;

return0;

}

輸出的程序是()

A:6B:4C:5D:3

答案:5下列代碼片段的運行結果是什么?()

#include<iostream>

usingnamespacestd;

intmain()

{

intscore=85;

chargrade;

if(score>=90){

grade='A';

}elseif(score>=80){

grade='B';

}elseif(score>=70){

grade='C';

}else{

grade='D';

}

cout<<"Grade:"<<grade;

}

A:“Grade:A”B:“Grade:C”C:“Grade:B”D:“Grade:D”

答案:“Grade:B”若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是()。

A:4B:3C:1D:2

答案:1程序執(zhí)行后的輸出結果是()

#include<iostream.h>

intmain()

{

charflag='c';

switch(flag)

{

case'a':cout<<"1"<<endl;

case'b':cout<<"2"<<endl;break;

case'c':cout<<"3"<<endl;

default:cout<<"4"<<endl;break;

}

}

A:34B:12C:23D:45

答案:34

第三章單元測試

執(zhí)行語句序列(B)。

inti=0;

while(i<25)i+=3;

cout<<i;

輸出結果是()

A:27B:24C:25D:28

答案:27執(zhí)行下面程序輸出的結果是()

#include<iostream.h>

intmain()

{

inti=0;

while(++i)

{

if(i==10)break;

if(i%3!=1)continue;

cout<<i<<endl;

}

}

A:247B:731C:147D:432

答案:147執(zhí)行下列語句段后,輸出字符“*”的個數是()。

for(inti=50;i>1;--i)cout<<’*’

A:48B:50C:54D:49

答案:49當執(zhí)行以下程序段時,循環(huán)體將執(zhí)行()

intmain(){

inty=1;

do{y--;}while(--y);

}()

A:一次B:無限次C:兩次D:系統(tǒng)將提示有語法錯誤

答案:無限次do-while循環(huán)保證循環(huán)體至少會被執(zhí)行一次()

A:錯B:對

答案:對下列for循環(huán)的循環(huán)體執(zhí)行次數為()

for(inti=0,J=10:i-4:i++.J--)

A:無限B:1C:0D:4

答案:無限循環(huán)控制語句break的功能是什么?()

A:結束整個程序的執(zhí)行B:終止當前循環(huán)的執(zhí)行C:清除循環(huán)計數器的值D:跳過本次循環(huán)的剩余代碼,直接進行下一次循環(huán)

答案:終止當前循環(huán)的執(zhí)行下列哪個循環(huán)語句先判斷循環(huán)條件,再執(zhí)行循環(huán)體()

A:while循環(huán)B:do-while循環(huán)C:都不是D:for循環(huán)

答案:do-while循環(huán)如下程序運行時的輸出結果是()。

#include<iostream>

usingnamespacestd;

intmain(){

intsum;

for(inti=0;i<6;i+=3){

sum=i;

for(intj=i;j<6;j++)sum+=j;}

cout<<sum<<endl;

return0;

A:15B:12C:3D:10

答案:15

第四章單元測試

在下列double型常量表示中,錯誤的是()。

A:35B:E15C:3E5D:3E-5

答案:E15靜態(tài)局部變量具有什么樣的作用域?()

A:只在文件內部可見B:只在特定的代碼塊內部可見C:只在類內部可見D:只在函數內部可見

答案:只在文件內部可見指針可以為空(NULL),而引用不能為空。()

A:對B:錯

答案:對字面常量42、4.2、42L的數據類型分別是()。

A:int,float,longB:long,float,intC:int,double,longD:long,double,int

答案:int,double,long下列有關指針的用法中,錯誤的是()

A:int*p;p=0;B:inti=5;int*p;p=&i;C:inti;int*p=&i;D:inti;int*p;i=*p;

答案:inti;int*p;i=*p;

第五章單元測試

以下程序的輸出的結果是()。

#include<iostream

intmain(){

inta,b,c;

c=2;

c+=10;

a=b=10;

a=2;

b/=2;

c%2;

cout<<a<<”,”<<b<<”,”<<c<<endl;}

A:20,5,1B:20,7,0C:20,5,0D:5,20,0

答案:20,5,0若有定義“intx=4,y=5;”,則表達式“y>x++?x--:y++”的值為()。

A:5B:4C:6D:3

答案:5下面程序的運行結果是()

intmain(){

intx=5;

if(x++==5)cout<<"五"<<endl;

elseif(++x==6);

cout<<"六"<<endl;

return0;

}

A:這些都不是B:五六C:五D:六

答案:五下面程序的運行結果是()

intmain(){

inti=0,x=0;

do{

if(i%5==0){cout<<x;x++;}

++i;

}while(i<10);

cout<<x;

return0;

}

A:01B:0C:012D:0123

答案:01210.設intx;,則與計算︱x︱等價的表達式是()。

A:x<0?x:-xB:x>0?x:-xC:x>0?-x:xD:x<0?-x:-x

答案:x>0?x:-x設inta,x=2;執(zhí)行語句a=x>0?3*x:x=10;后,變量x的值是()。

A:10B:1C:6D:2

答案:6若有定義語句“inti=2,j=3;”,則表達式i/j的結果是()。

A:0.7B:0C:0.66667D:0.66666667

答案:0已知i=5,j=0,下列各式中運算結果為j=5的表達式是()。

A:j=++i+jB:j=j+i++C:j=i+(++j)D:j=j+++i

答案:j=j+i++將以下程序寫成三目運算表達式是()。

if(x<y)min=x:

elsemin=y;

A:min=(x>y)?x:yB:min=(x<y)x:yC:min=(x<y)?x:yD:min=(x<y)?x,y

答案:min=(x<y)?x:y

第六章單元測試

若已定義

inta[]=0,1,2,3,4,5,6,7,8,9,*p=a,i;

其中0≤i≤9,則對a數組元素不正確的引用是()。

A:a[10]B:a[p-a]C:p[i]D:*(&a[i])

答案:a[10]若有說明:inta[][4]={0,0};則下面不正確的敘述是().

A:元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0B:因為二維數組a中第二維大小的值除初值個數的商為1,故數組a的行數為1C:數組a的每個元素都可得到初值0D:二維數組a的第一維大小為1

答案:元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0下列定義中,()是定義指向數組的指針p。

A:int*p[]B:int*p[5]C:(int*)p[5]D:int(*p)[5]

答案:int*p[5]下列程序的輸出結果是()。

#include<iostream.h>

intmain()

{intn[][3]={10,20,30,40,50,60}

int(*p)[3];

p=n;

cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;}

A:10,30,50B:20,40,60C:10,20,30D:10,30,60

答案:10,20,30下列有關一維數組a的定義中,語法正確的是()。

A:inta(10);B:intn=7,a[n];C:constintsize=10;inta[size]D:intn;cin>>n;inta[n];

答案:constintsize=10;inta[size]有如下說明inta[10]=1,2,3,4,5,6,7,8,9,10,*p=a;則數值為9的表達式是()。

A:*(p+8)B:*p+=9C:p+8D:*p+9

答案:*(p+8)對于int*pa[5];的描述,正確的是()。

A:pa[5]表示某個數組的第5個元素的值B:pa是一個指向某個數組中第5個元素的指針,該元素是int型變量C:pa是一個具有5個元素的指針數組,每個元素是一個int型指針D:pa是一個指向數組的指針,所指向的數組是5個int型元素

答案:pa是一個具有5個元素的指針數組,每個元素是一個int型指針下列程序的輸出結果是()。

#include<iostream.h>

intmain()

{intn[][3]={10,20,30,40,50,60};

int(*p)[3];

p=n;

cout<<p[0][0]<<","<<?(p[0]+1)<<","<<(*p)[2]<<endl;}

A:20,40,60B:10,20,30C:10,30,60D:10,30,50

答案:10,20,30

第七章單元測試

若有以下定義和語句:charstrl[]="string",str2[5];則用以復制字符串的正確方法()

A:strcpy(str2,"Hello");B:str1="Hello";C:str2=str1;D:strcpy(strl,"Hello");

答案:strcpy(str2,"Hello");在C++中,以下哪個字符串函數用于將兩個字符串連接起來?()

A:strcat()B:strncpy()C:strcpy()D:strncat()

答案:strcat()已知有數組定義chara[3][4];下列表達式中錯誤的是()。

A:a[2][3]=′W′B:a[0][1]=a[0][1]C:a[2]=“WIN”D:strcpy(a[2],“WIN”)

答案:a[2]=“WIN”有如下語句序列:charstr[10];cin>>str;當從鍵盤輸入“Ilovethisgame”時,str中的字符串是()。

A:“I”B:“Ilove”C:“Ilovethi”D:“Ilovethisgame”

答案:“I”下列描述中不正確的是()。

A:字符型數組中可以存放字符串B:可以對實型數組進行整體輸入、輸出C:不能在賦值語句中通過賦值運算符“=”對字符型數組進行整體賦值D:可以對字符型數組進行整體輸入、輸出

答案:可以對實型數組進行整體輸入、輸出下面程序的輸出結果為()

#include<iostream.h>

#include"string.h"

intmain()

{chara[]="HelloTest",b[]="Test";strcpy(a,b);

cout<<a<<endl;}

A:TestB:HelloTestHelloTestC:HelloTestD:Hello

答案:Test

第八章單元測試

若下列關于C++函數的說明中,正確的是()。

A:標準C++要求在調用一個函數之前,必須先聲明其原型B:內聯函數就是定義在另一個函數體內部的函數C:編譯器會根據函數的返回值類型和參數表來區(qū)分函數的不同重載形式D:函數體的最后一條語句必須是return語句

答案:標準C++要求在調用一個函數之前,必須先聲明其原型若有下面的函數調用:fun(a+b,3,max(n-1,b))則fun的實參個數是()。

A:5B:6C:3D:4

答案:3若一個函數的原型為“int*funl(intx,int&y,charz);”,則該函數的返回值類型為()。

A:int*B:int&C:charD:int

答案:int*有如下程序:

#include<iostream>

usingnamespacestd;

longfun(intn)

{

if(n>2)

return(fun(n-1)+fun(n-2));

else

return2;

}

intmain()

{cout<<fun(3)<<endl;

return0;}

則該程序的輸出結果應該是()。

A:4B:3C:5D:2

答案:4有如下函數定義:voidfunc(inta,int&b)a++;b++;

若執(zhí)行代碼段:intx=0;y=1;func(x,y);

則變量x和y的值分別是()。

A:1和1B:0和2C:1和2D:0和1

答案:0和2以下哪個聲明和定義是正確的?()

A:聲明:voidprint{std::cout<<"Hello!";}定義:voidprint();B:聲明:voidprint();定義:voidprint(){std::cout<<"Hello!";}C:聲明:voidprint(){std::cout<<"Hello!";}定義:print();D:聲明:print();定義:voidprint(){std::cout<<"Hello!";}

答案:聲明:voidprint();定義:voidprint(){std::cout<<"Hello!";}已知遞歸函數fun的定義如下:

intfun(intn)

{

if(n<=1)return1;//遞歸結束情況

elsereturnn*fun(n-2);//遞歸

}

則函數調用語句fun(5)的返回值是()。

A:30B:12C:15D:5

答案:15計算斐波那契數列第n項的函數定義如下:

intfib(intn){

if(n==0)return1;

elseif(n==1)return2;

elsereturnfib(n-1)+fib(n-2);

}若執(zhí)行函數調用表達式fib(2)、函數fib被調用的次數是()。

A:3B:4C:2D:1

答案:3以下程序的輸出結果是()

voidfun(inta,intb,intc)

{c=a*b;

}

intmain(){

inta;

fun(2,3,a)

cout<<a<<endl;

}()

A:無定值B:6C:出錯D:0

答案:無定值

第九章單元測試

下列關于類定義的說法中,正確的是()。

A:類成員的缺省訪問權限是保護的B:成員函數只能在類體外進行定義C:類定義中包括數據成員和函數成員的聲明D:數據成員必須被聲明為私有的

答案:類定義中包括數據成員和函數成員的聲明下列關于類和對象的敘述中,錯誤的是()。

A:一個類只能有一個對象B:類和對象的關系是一種數據類型與變量的關系C:類是對某一類對象的抽象D:對象是類的具體實例

答案:一個類只能有一個對象動態(tài)分配的內存在什么時候應該被釋放?()

A:當不再需要使用該內存時B:當程序執(zhí)行完畢時C:當重新分配內存時D:當顯式調用release函數時

答案:當不再需要使用該內存時不是屬于面向對象程序設計的特性()

A:抽象性B:數據相關性C:繼承性D:多態(tài)性

答案:數據相關性在C++中,私有成員和受保護成員的訪問權限是?()

A:可以在類的外部和派生類中訪問。B:只能在類內部訪問。C:只能在派生類中訪問。D:可以在類的外部訪問。

答案:只能在類內部訪問。下面關于構造函數和析構函數的描述中,錯誤的是()。

A:析構函數可以聲明為虛函數B:一個類的虛函數僅對派生類中重定義的函數起作用,對其他函數沒有影響C:構造函數可以聲明為虛函數D:對虛析構函數的調用可以采用動態(tài)聯編

答案:構造函數可以聲明為虛函數38.在C++中,對象指針可以作為函數的參數傳遞嗎?()

A:不可以,對象指針只能用于成員函數B:可以,但必須通過值傳遞C:不可以,對象指針無法作為函數參數傳遞D:可以,但必須通過引用傳遞

答案:可以,但必須通過引用傳遞對象數組的元素可以是不同的類型嗎?()

A:可以,C++允許將不同類型的對象存儲在同一個數組中B:可以,但需要通過特殊的語法來實現C:不可以,數組的元素必須是基本數據類型而不是對象類型D:不可以,對象數組的元素必須是相同類型的對象

答案:不可以,對象數組的元素必須是相同類型的對象

第十章單元測試

下面敘述錯誤的是()。

A:基類的private成員在public派生類中不可訪問B:對基類成員的訪問能力在private派生類中和public派生類中是不同的C:基類中的public成員在protected派生類中仍然是public的D:基類中的public成員在protected派生類中是protected的

答案:基類中的public成員在protected派生類中仍然是public的建立一個有成員對象的派生類對象時,各構造函數體的執(zhí)行次序為()。

A:派生類、成員對象類、基類B:基類、成員對象類、派生類C:基類、派生類、成員對象類D:成員對象類、基類、派生類

答案:基類、成員對象類、派生類下列描述中,錯誤的是()

A:保護繼承時基類中的公有成員在派生類中仍是公有成員B:公有繼承時基類中的保護成員在派生類中仍是保護成員C:公有繼承時基類中的公有成員在派生類中仍是公有成員D:保護繼承時基類中的保護成員在派生類中仍是保護成員

答案:保護繼承時基類中的公有成員在派生類中仍是公有成員下列有關抽象類和純虛函數的敘述中,錯誤的是()。

A:抽象類的派生類若不實現純虛函數,它也是抽象類B:擁有純虛函數的類是抽象類,不能用來定義對象C:純虛函數的聲明以“=0;”結束D:純虛函數都不能有函數體

答案:純虛函數都不能有函數體如下程序的輸出結果為()。

#include<iostream>

usingnamespacestd;

classTest{

public:

Test(){n+=2}

~Test(){n-=3;}

staticintgetNum(){returnn;}

private:

staticintn;

};

intTest::n=1;

intmain()

{Test*p=newTest;

deletep;

cout<<"n="<<Test::getNum()<<endl;

return0;

}

A:n=1B:n=0C:n=2D:n=3

答案:n=0派生類繼承基類的哪些成員?()

A:公有成員和保護成員B:私有成員和保護成員C:私有成員和公有成員D:所有成員

答案:公有成員和保護成員關于虛函數,以下說法正確的是()。

A:虛函數不能是static的B:若在重定義虛函數時使用了virtual,則該重定義函數還是虛函數C:虛函數不能聲明為友元D:子類必須重定義父類的虛函數

答案:虛函數不能是static的下列關于純虛函數與抽象類的描述中,錯誤的是()。

A:抽象類是指具有純虛函數的類B:純虛函數是一種特殊的虛函數,它沒有具體的實現C:一個基類中說明具有純虛函數,該基類的派生類一定不再是抽象類D:抽象類只能作為基類來使用,其純虛函數的實現由派生類給出

答案:一個基類中說明具有純虛函數,該基類的派生類一定不再是抽象類為什么需要虛析構函數?()

A:虛析構函數可以在派生類對象被銷毀時正確釋放派生類的內存B:虛析構函數可以在派生類對象被銷毀時正確調用派生類的析構函數C:虛析構函數可以在派生類對象被銷毀時正確調用派生類和基類的析構函數D:虛析構函數可以在派生類對象被銷毀時正確釋放派生類和基類的內存

答案:虛析構函數可以在派生類對象被銷毀時正確調用派生類和基類的析構函數

第十一章單元測試

在語句cin>>data;中,cin是()。

A:函數名B:對象名C:C++的關鍵字D:類名

答案:對象名下列有關C++流的敘述中,錯誤的是()。

A:進行輸入操作時,eof()函數用于檢測是否到達文件尾B:C++操作符setw設置的輸出寬度永久有效C:處理文件I/O時,要包含頭文件fstreamD:C++操作符endl可以實現輸出的回車換行

答案:C++操作符setw設置的輸出寬度永久有效如果利用C++流進行輸入輸出,下面的敘述中正確的是()。

A:只能借助于流對象進行輸入輸出B:只能借助于cin和cout進行輸入輸出C:只能使用運算符>>和<<進行輸入輸出D:只能進行格式化輸入輸出

答案:只能借助于流對象進行輸入輸出如果利用C++流進行輸入輸出,下面的敘述中正確的是()

A:只能進行格式化輸入輸出B:只能借助于cin和cout進行輸入輸出C:只能使用運算符>>和<<進行輸入輸D:只能借助于流對象進行輸入輸出

答案:只能借助于流對象進行輸入輸出有如下程序:

#include<iostream>

usingnamespacestd;

intmain()

{

cout.fll(*);

cout.width(6);

cout.flI(#);

cout<<123<<endl;

return0;

}

執(zhí)行這個程序的輸出結果是()。

A:123*OK**B:123*OKC:*123OKD:123**OK

答案:123*OK下列關于輸入輸出流的敘述中,正確的是()。

A:寬度設置的效果永久有效B:cin是專門從鍵盤輸入數據的輸入流類C:流運算符<<用來從輸入流中讀取數據D:一個文件流可以與一個數據文件相聯系

答案:一個文件流可以與一個數據文件相聯系在C++中既可以用于文件輸入又可以用于文件輸出的流類是()。

A:ifstreamB:iostreamC:ofstreamD:fstream

答案:fstream下列關于文件流的描述中,正確的是()。

A:建立一個文件流對象時,必須同時打開一個文件B:文件流只能完成針對磁盤文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論