《C程序設計》習題解答_第1頁
《C程序設計》習題解答_第2頁
《C程序設計》習題解答_第3頁
《C程序設計》習題解答_第4頁
《C程序設計》習題解答_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——《C程序設計》習題解答

《C++程序設計》習題解答

第1章C++概述

1.填空題

(1)在面向?qū)ο蟪绦蛟O計中,對象是由___________、___________和___________封裝在一起構(gòu)成的實體。

(2)在面向?qū)ο蟪绦蛟O計中,類是具有________________和___________的對象的集合,它是對一類對象的抽象描述。

(3)面向?qū)ο蟪绦蛟O計最突出的特點就是___________、___________和___________。(4)C++語言包含頭文件的格式有兩種,即_______________和__________________。(5)C++源程序要經(jīng)過________、_________、________和_________四個環(huán)節(jié),才能在屏幕上顯示結(jié)果。

(6)每個C++程序都從________函數(shù)開始執(zhí)行。

(7)每個函數(shù)體都以________開始,以________終止。(8)C++程序中的每條語句以________終止。

(9)C++程序的頭文件和源程序的擴展名分別為__________和_________,目標程序的擴展名為__________,可執(zhí)行程序的擴展名為__________。

(10)在C++程序中使用基本輸入/輸出語句需包含的頭文件是________________,應放在程序的________________。

(11)在C++程序中解釋語句有_______________和______________兩種格式。(12)C++程序的續(xù)行符為_________。

(13)假使從鍵盤輸入語句給變量X,則輸入函數(shù)的形式為_____________;假使再將變量X的值顯示在屏幕上,其輸出函數(shù)的形式為_____________。(14)C++程序中的“endl〞在輸出語句中起___________作用。參考答案:

(1)對象名,一組屬性數(shù)據(jù),一組操作(2)一致屬性數(shù)據(jù),操作(3)封裝性,繼承性,多態(tài)性

(4)#include,#include\文件名.擴展名\(5)編輯,編譯,連接,運行(6)主函數(shù)(7){、}(8)分號;

(9).h,.cpp,.obj,.exe

(10)#include,開始部分(11)/**/,//(12)\\

(13)cin>>X、coutvoidmain(){cout>c;

if((c>='a'_____c='A'_____cvoidmain(){

inti=0,j=0;while(ivoidmain(){

unsignedinti;

for________________coutvoidmain(){

constintN=10;intx,max=0;

cout>x;

if(________________){

max=x;continue;}

elseif(______________)

__________________}

coutvoidmain(){

inti=0;while(++i){

if(i==10)break;if(i%3!=1)continue;cout

}

(14)以下程序的輸出結(jié)果是____________。#includevoidmain(){

intx=5;do{

switch(x%2){

case1:x--;break;case0:x++;break;}x--;

cout0);}

參考答案:(1)4,32

(2)2,4,1,4,8(3)true,false(4)1,0

(5)規(guī)律,規(guī)律(6)1,1

(7)+0(13)147(14)31-1

2.選擇題

(1)以下四組標識符中不屬于VisualC++關(guān)鍵字的是()。

A.witchB.breakC.mainD.continuefloatcharcincase

(2)以下四組變量命名,不符合VisualC++變量命名規(guī)則的是()。

A.ccB.6xC.wlD.ye_78avercharyear78wo

(3)假設有兩個變量a=65432和b=a*2,在保證數(shù)據(jù)正確存儲的前提下,以下變量類型定義錯誤的是()。

A.inta;intb;C.unsignedshorta;unsignedshortb;(4)在if語句中的表達式(A.只能是關(guān)系表達式C.只能是規(guī)律表達式(5)以下程序的輸出結(jié)果為(A.t1=trueB.t1=8t2=falset2=0t3=truet3=-1#includevoidmain(){

boolt1=8;boolt2=0;boolt3=-1;

coutvoidmain(){

intx=8,y=5;inta,b,c,d;a=x+y--;b=x/y10)

從鍵盤輸入一個x,求出相應的y值。

(4)輸入3個整型數(shù),按由大到小的順序輸出顯示。

(5)根據(jù)從鍵盤輸入的表示星期幾的數(shù)字,輸出它對應的英文名稱。(6)從鍵盤輸入一個整數(shù),求其階乘。

(7)編寫一個簡易計算器程序,根據(jù)用戶輸入的運算符做兩個數(shù)的加、減、乘或除運算。

(8)編寫程序在屏幕上打印如下圖案。

*************************參考答案:

(1)#include

voidmain(){

intsum=0;

for(inti=1;i

voidmain(){

intmax=0;inti=13;

while(i

voidmain(){

floatx,y;cin>>x;if(x=1elsey=x-5;cout

voidmain(){

intinta,intb,intc;

cin>>inta>>intb>>intc;if(inta

voidmain(){

intdata;

cout>data;switch(data){

case0:cout

voidmain(){

intn,t=1;

cout>n;if(n

voidmain(){

floatx,y;charch;

cout>x>>y;

cout>ch;switch(ch){case'+':cout

voidmain(){

for(inti=0;i#defineN8voidfun(int);voidmain(){

for(inti=1;iconstintN=5;voidfun();inta=0;voidmain(){

for(inti=1;iintm=3;

voidfun(intm){m=6;}

voidmain(){

fun(m);

coutintgcd(int,int);voidmain(){

inta,b;a=16;b=24;

cout=8

2.選擇題

1)以下表達不正確的是()。

A.函數(shù)是構(gòu)成C++程序的基本元素

B.程序總是從第一個定義的函數(shù)開始執(zhí)行C.主函數(shù)是C++程序中不可缺少的函數(shù)

D.在函數(shù)調(diào)用之前,必需要進行函數(shù)的定義或聲明2)以下函數(shù)聲明正確的是()。

A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y);3)當一個函數(shù)無返回值時,函數(shù)的類型應為()。

A.任意B.voidC.intD.char4)以下關(guān)于函數(shù)聲明說法不正確的是()。

voidfun(void);

A.函數(shù)聲明是一條獨立的語句,必需以分號結(jié)尾B.函數(shù)聲明尋常放在程序的開始部分C.函數(shù)fun無參數(shù)傳入

D.函數(shù)fun返回一個值,其類型為void

5)以下關(guān)于return語句的說法錯誤的是()。

A.在函數(shù)中通過return語句返回一個函數(shù)值

B.return語句中表達式的類型決定函數(shù)返回的類型C.在無返回值的函數(shù)體中可以沒有return語句

D.當函數(shù)返回值的類型為void時,函數(shù)中不應出現(xiàn)return(表達式)6)以下關(guān)于重載函數(shù)的說法正確的是()。

A.重載函數(shù)必需具有不同的返回值類型B.重載函數(shù)形參個數(shù)必需不同

C.重載函數(shù)必需具有不同的形參列表D.重載函數(shù)名可以不同

7)一個函數(shù)為voidf(int,float=?a?),另一個函數(shù)為voidf(int),則它們(A.不能在同一個程序中定義

B.可以在同一個程序中定義并可重載C.可以在同一個程序中定義,但不可重載D.以上說法均不正確

8)以下函數(shù)定義中正確的是()。

A.doublefun(doublex,y)B.doublefun(doublex,doubley){{

doublez;returnx/y;

。((((((()

z=x/y;}returnz;}

C.doublefun(doublex,y)D.doublefun(doublex,doubley){{

z=x/y;z=x/y;returnz;returnx/y;}}

(9)以下關(guān)于默認參數(shù)值函數(shù)說法錯誤的是()。

A.C++中,允許設置參數(shù)的默認值

B.必需從參數(shù)表最右邊的參數(shù)開始,設置參數(shù)的默認值C.在函數(shù)聲明和函數(shù)定義中,默認參數(shù)的值必需一致

D.函數(shù)調(diào)用時,帶默認值的參數(shù)無實參輸入時,使用默認值(10)以下程序的輸出結(jié)果為()。

A.10,20,30B.35,7,5C.35,20,10D.10,20,35#includeintfun(inta,intb,intc){a=5;b=a+2;c=a*b;return(c);}

voidmain(){inta=10,b=20,c=30;c=fun(a,b,c);coutintfun(inta,intb){intc;c=a*b;return(c);}

voidmain(){inta=3,b=5,c=4,x=0;x=fun(fun(a,b),c);cout

}

(12)以下函數(shù)的返回類型為()。

A.voidB.floatC.intD.無法確定fun(void){floatx=3.0,y;y=x*x/2;return(y);}

(13)以下程序的輸出結(jié)果為()。

A.x=15B.x=17C.x=23D.x=25#includeintx=5;intfun(inta){intc;c=x*a;return(c);}

voidmain(){intx=3;inta=4;x=x+fun(a);cout>x;sum=sum+x;}ave=sum/10;

cout

voidinverts(){charch;cin>>ch;if(ch=='0')return;elseinverts();cout

inttotal(floatfloatsum=0;intn=0;

cout>score;do{n=n+1;sum=sum+score;cin>>score;}while(score>0);ave=sum/n;returnn;

}

floatave(){

floataverage;

cout>___________;}

(6)以下程序按2行3列輸出二維數(shù)組,請?zhí)羁铡?/p>

#includevoidmain(){

intb[2][3]={1,2,3,4,5,6},i,j;for(i=0;_________;i++){

for(j=0;_________;j++)

coutvoidmain()

}a[i]='\\0';

for(i=0;i='a'i=0,j=n-1;while(i

#defineN100voidmain(){inta[N+1];//元素值置1,表示該元素是素數(shù);置0,表示該元素不是素數(shù)inti;for(i=1;i

voidmain(){inti,j;for(i=0;istructabc{charc;

floatv;};

voidmain(){abca={'B',98.5};coutconstintm=4;constintn=45;structstudent{intnumber;charname[12];floatscore[m];//m門課的成績floatave;//平均分}stu[n]={{0}};

voidcaculate(students[],intn){inti,j;floatsum;for(i=0;istructflower{intnum;//花號charname[20];//花名charcolor[10];//花色floatprice;

}mudan={110245,\牡丹\voidmain(){cout>wang.num;B.wang.score[2]=86;C.cin>>wang.score[0];D.=\

(6)以下聲明結(jié)構(gòu)體變量錯誤的是()。

A.B.structstudent

structstudent{{intnum;intnum;charname[10];charname[10];charsex;charsex;};}stu1,stu2;structstudentstu1,stu2;

C.D.

structstudentstructstudent{{intnum;intnumcharname[10];charname[10]charsex;charsex};};studentstu1,stu2;structstu1,stu2;

(7)以下關(guān)于共用體的表達錯誤的是()。

A.在定義共用體變量時可以進行初始化

B.共用體變量的地址和它的各成員的地址都是同一地址C.共用體和結(jié)構(gòu)體在變量的初始化方法一致D.共用體可以作為結(jié)構(gòu)體的成員,參考答案:

(1)D(2)B(3)C(4)C(5)D(6)D(7)C

3.簡答題

(1)簡述結(jié)構(gòu)體和共用體的區(qū)別。參考答案:

結(jié)構(gòu)體是一種用戶自定義的數(shù)據(jù)類型,結(jié)構(gòu)體成員組合在一起形成一個整體,結(jié)構(gòu)體中的成員可以是不同的類型。

共用體是指多種不同類型的變量從同一地址開始存放,共同占用同一段內(nèi)存單元。這種含有共用體成員的結(jié)構(gòu)體稱為異質(zhì)結(jié)構(gòu)。共用體也是一種自定義的數(shù)據(jù)類型,由若干數(shù)據(jù)成員組成。

雖然共用體與結(jié)構(gòu)體有好多相像之處,但兩者還是有本質(zhì)區(qū)別的。在任一時刻,結(jié)構(gòu)體中的所有成員都是可訪問的,而共用體中只有一個成員可以訪問,其他所有成員都是不可訪問的。這種不同反映到存儲空間分派上就是結(jié)構(gòu)體變量各成員順序存放在一段內(nèi)存中,每個成員分別占有自己的內(nèi)存單元,結(jié)構(gòu)體變量所占存儲空間的大小等于其所有數(shù)據(jù)成員所占存儲空間的總和。而共用體變量的各成員均從同一地址開始存放,共同占用同一存儲空間,即各成員所占用的存儲空間是相互覆蓋的。因此,每個共用體變量所占存儲空間的大小等于其所有數(shù)據(jù)成員中所占存儲空間最大者的值,在任一時刻只能從變量的首地址開始保存一個數(shù)據(jù)成員的值。

4.編程題

(1)定義一個結(jié)構(gòu)體“教師〞,其成員包括姓名、性別、年齡、職稱和聯(lián)系電話。(2)定義一個通訊錄結(jié)構(gòu),成員包括:姓名(字符串)、電話(字符串)、生日。參考答案:

(1)structteacher

{charname[10];charsex;intage;charzhicheng[10];chartelephone[20];

};

(2)structinformation//定義通訊錄信息類

{charname[20];chartelephone[20];charbathday[20];};

第6章指針和引用

1.填空題

(1)若定義inta;則int

(3)可以直接賦給指針的唯一正數(shù)值是___________。

(4)指針可以進行的運算有___________、___________和___________。(5)若定義doublex;則:

使指針p可以指向變量x的定義語句是___________。使指針p指向變量x的賦值語句是___________。

(6)若一個數(shù)組中的所有元素的值都是地址,則稱該數(shù)組為___________。(7)以下程序段的輸出結(jié)果為___________。

chars[10]=\char*p=s;p++;

cout='a'

}

(11)假使正常執(zhí)行了如下語句:

intm[22],*p1=x=p2-p1;

則x的值為___________。(12)假使正常執(zhí)行了如下語句:intd[]={1,2,3,4,5,6,7,8,9,10},*p1=d+8,*p2=p1-=3coutvoidmain(){inta=10;

int*p1=int*

coutvoidmain(){intx=100;

intinty=200;int

cout

inta[5],*p=a;A.*則標示符p()。

A.是一個指向整型變量的指針B.是一個指針數(shù)組名

C.是一個指針,它指向一個含有4個整型元素的一維數(shù)組D.定義不合法

(10)若有以下定義,則正確的表達是()。

Char*b[2]={\

A.數(shù)組b的兩個元素中各存放了字符串\和\的首地址B.數(shù)組b的兩個元素中各存放了含有四個字符的一維數(shù)組的首地址C.b是一個指針,它指向含有2個數(shù)組元素的字符型一維數(shù)組D.數(shù)組b的兩個元素值分別是\和\(11)關(guān)于引用的說明,以下說法錯誤的是()。

A.任何變量都可以被引用

B.不允許把為一個變量建立的引用重新用作另一變量的別名C.引用和其所代表的變量使用同一片存儲空間

D.假使程序需要先指向一個對象,后又指向另一對象,此時應當采用引用(12)以下程序的運行結(jié)果為()。

#includevoidmain(){inta[5]={2,4,6,8,10},*p1,**p2;

p1=a;p2=

cout

voidmain(){

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

for(i=0;i

#includevoidmain(){charstr1[]={'h','e','l','l','o','\\0'};char*str2;str2=newchar[strlen(str1)+1];for(inti=0;*(str1+i)!='\\0';i++){str2[i]=str1[i];}str2[i]='\\0';cout>ch;p[i]=newchar[strlen(ch)+1];strcpy(p[i],ch);}

}

voidout(char*p[N])//輸出函數(shù){inti;for(i=0;i0)k=j;j++;}if(i!=k){t=p[k];p[k]=p[i];p[i]=t;}}

}

voidmain(){char*p[N];cout

#includevoidmain(){chara[20];intn=0,j,i=0;charc;cout='A'for(i=0;i

#includevoidmain(){chara[20];intn=0,j,i=0;charc;coutclassA{inta;doubleb;public:A(intx=100,doubley=1.2){a=x;b=y;}voidshow(char*pt){cout

}};

voidmain(){Aobj1,obj2(100,3.5);obj1.show(\obj2.show(\A*p;p=p->show(\(*p).show(\p=p->show(\(*p).show(\p=newA;p->show(\deletep;}

(16)分析以下程序的輸出結(jié)果。

#includeclassMyCla{

private:intx,y;

public:

MyCla();

MyCla(intxx);

MyCla(intxx,intyy);MyCla(MyClavoidDisplay();voidSet(int,int);~MyCla();};

MyCla::MyCla(){

coutobj1:

a=100b=1.2(*p)obj1:a=100b=1.2p->obj2:a=100b=3.5(*p)obj2:a=100b=3.5p->new:a=100b=1.2(16)

①執(zhí)行無參構(gòu)造函數(shù):x=0y=0

執(zhí)行一個參數(shù)構(gòu)造函數(shù):x=101y=0執(zhí)行兩個參數(shù)構(gòu)造函數(shù):x=87y=98執(zhí)行析構(gòu)函數(shù):x=87y=98執(zhí)行析構(gòu)函數(shù):x=101y=0執(zhí)行析構(gòu)函數(shù):x=0y=0

②執(zhí)行兩個參數(shù)構(gòu)造函數(shù):x=57y=28

執(zhí)行設置函數(shù):x=0y=0執(zhí)行設置函數(shù):x=86y=0執(zhí)行顯示函數(shù):x=86y=0執(zhí)行設置函數(shù):x=24y=75執(zhí)行顯示函數(shù):x=24y=75執(zhí)行析構(gòu)函數(shù):x=24y=75

③執(zhí)行一個參數(shù)構(gòu)造函數(shù):x=33y=0

執(zhí)行設置函數(shù):x=86y=543執(zhí)行顯示函數(shù):x=86y=543執(zhí)行復制構(gòu)造函數(shù):x=86y=543執(zhí)行顯示函數(shù):x=86y=543執(zhí)行析構(gòu)函數(shù):x=86y=543執(zhí)行析構(gòu)函數(shù):x=86y=543

④執(zhí)行一個參數(shù)構(gòu)造函數(shù):x=33y=0

執(zhí)行兩個參數(shù)構(gòu)造函數(shù):x=223y=54執(zhí)行兩個參數(shù)構(gòu)造函數(shù):x=38y=84執(zhí)行顯示函數(shù):x=223y=54執(zhí)行析構(gòu)函數(shù):x=38y=84執(zhí)行顯示函數(shù):x=33y=0執(zhí)行析構(gòu)函數(shù):x=223y=54執(zhí)行析構(gòu)函數(shù):x=33y=0

2.選擇題

(1)以下關(guān)于類和對象的表達錯誤的是()。

A.對象是類的一個實例B.任何一個對象都歸屬于一個具體的類C.一個類只能有一個對象D.類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相像(2)以下關(guān)于構(gòu)造函數(shù)的表達錯誤的是()。

A.構(gòu)造函數(shù)名必需與類名一致B.構(gòu)造函數(shù)在定義對象時自動執(zhí)行C.構(gòu)造函數(shù)無任何函數(shù)類型D.在一個類中構(gòu)造函數(shù)又且僅有一個(3)以下關(guān)于析構(gòu)函數(shù)的表達錯誤的是()。

A.一個類中只能定義一個析構(gòu)函數(shù)B.析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣可以有形參C.析構(gòu)函數(shù)不允許有返回值D.析構(gòu)函數(shù)名前必需冠有符號“~〞(4)以下表達正確的是()。

A.在類中不作特別說明的數(shù)據(jù)成員均為私有類型B.在類中不作特別說明的成員函數(shù)均為公有類型C.類成員的定義必需放在類體內(nèi)

D.類成員的定義必需是成員變量在前,成員函數(shù)在后(5)以下表達不正確的是()。

A.一個類的所有對象都有各自的數(shù)據(jù)成員,它們共享成員函數(shù)B.一個類中可以有多個同名的成員函數(shù)

C.一個類中可以有多個構(gòu)造函數(shù)、多個析構(gòu)函數(shù)

D.類成員的定義必需是成員變量在前,成員函數(shù)在后(6)以下不屬于構(gòu)造函數(shù)特征的是()。

A.構(gòu)造函數(shù)名與類名一致B.構(gòu)造函數(shù)可以重載C.構(gòu)造函數(shù)可以設置默認參數(shù)D.構(gòu)造函數(shù)必需指定函數(shù)類型(7)以下函數(shù)中,是類MyClass的析構(gòu)函數(shù)的是()。

溫馨提示

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

最新文檔

評論

0/150

提交評論