C習(xí)題與答案_第1頁
C習(xí)題與答案_第2頁
C習(xí)題與答案_第3頁
C習(xí)題與答案_第4頁
C習(xí)題與答案_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章習(xí)題一、 選擇填空12345678910CBDADADDAC1. 下列各種高級語言中,( )是面向?qū)ο蟮某绦蛟O(shè)計語言。A.BASIC;B.PASCAL;C.C+ D.Ada2. 下列各種高級語言中,( )是最早提出了對象的概念。A.Algol 60;B.Simula 67;C.Smalltalk;D.C+3. 下述面向?qū)ο蟪橄蟮脑碇校?)是不對的。A. 數(shù)據(jù)抽象;B. 行為共享;C.進(jìn)化;D. 兼容;4. ( )不是面向?qū)ο笙到y(tǒng)所包含的要數(shù)。A. 重載; B. 對象;C. 類;D. 繼承;5. 關(guān)于C+與C語言的關(guān)系的描述中,( )是錯誤的。A. C語言是C+的一個子集;B. C語言

2、與C+是兼容的;C. C+對C語言進(jìn)行了一些改進(jìn);D. C+和C語言都是面向?qū)ο蟮?6. 下面關(guān)于對象概念的描述中,( )是錯誤的。A.對象就是C語言中的結(jié)構(gòu)變量;B.對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體;C. 對象是一個狀態(tài)和操作(或方法)的封裝體;D.對象之間的信息傳遞是通過消息進(jìn)行的;7. 下面關(guān)于類概念的描述中,( )是錯誤的。A.類是抽象數(shù)據(jù)類型的實現(xiàn); B.類是具有共同行為的若干對象的統(tǒng)一描述體;C.類是創(chuàng)建對象的樣板;D.類就是C語言中的結(jié)構(gòu)類型;8. C+對C語言作了很多改進(jìn),下列描述中( )使得C語言發(fā)生了質(zhì)變,即從面向過程變成為面向?qū)ο?。A.增加了一些新的運算符;B.允許函

3、數(shù)重載,并允許設(shè)置缺省參數(shù);C.規(guī)定函數(shù)說明必須用原型;D.引進(jìn)了類和對象的概念;9. 按照標(biāo)識符的要求,( )符號不能組成標(biāo)識符。A.連接符;B. 下劃線;C.大小寫字母;D.數(shù)字字符;10. 下列符號中,( )不可作為分隔符。A.,;B.:;C.?;D.;二、判斷下列描述的正確性,對者劃,錯者劃×。123456789101112××××××1 C+引進(jìn)了引用的概念,對編程帶來了很多方便。Y2 C+允許使用友元,但是友元會破壞封裝性。Y3 C+中使用了新的注釋符(/),C語言中注釋符(/*/)不能在C+中使用。X4 C+中

4、為了減輕使用者的負(fù)擔(dān),與C語言相比較C+中減少了一些運算符。X5 C+程序中,每條語句結(jié)束時都加一個分號(;)。Y6 C+中標(biāo)識符內(nèi)的大小寫字母是沒有區(qū)別的。X7 C+中不允許使用宏定義的方法定義符號常量,只能用關(guān)鍵字const來定義符號常量。X8 在編寫C+程序時,一定要注意采用人們習(xí)慣使用的書寫格式,否則將會降低其可讀性。Y9 C+是一種以編譯方式實現(xiàn)的高級語言。Y10 在C+編譯過程中,包含預(yù)處理過程、編譯過程和連接過程,并且這三個過程的順序是不能改變的。Y11 預(yù)處理過程是一般編譯過程之后連接過程之前進(jìn)行的。X12 源程序在編譯過程中可能會出現(xiàn)一些錯誤信息,但在連接過程中將不會出現(xiàn)錯誤

5、信息。X三、分析下列程序的輸出結(jié)果1 BeiJjing ShangHai TianJing2 Input a,b:8 5a=8,b=5a-b=33 d=5:c=m1#include<iostream.h>void main()cout<<"BeiJing"<<" "cout<<"ShangHai"<<"n "cout<<"TianJing"<<endl;2.#include<iostream.h>vo

6、id main()int a,b;cout<<"input a,b:"cin>>a>>b;cout<<"a="<<a<<","<<"b="<<b<<endl;cout<<"a-b="<<a-b<<"n"假定,輸入如下兩個數(shù)據(jù):8 53#include <iostream.h>void main()char c=m;int

7、d=5;cout<<"d="<<d<<":"cout<<"c="<<c<<"n"四、編譯下列程序,改正所出現(xiàn)的各種錯誤信息,并分析輸出結(jié)果:1、 #include<iostream>void main ( )cout<<"This is a string!"This is a string!2、 #include<iostream.h>void main( ) int x;cin>&

8、gt;x;int p=x*x;cout<<"p=”<<p<<”n"3、 #include <iostream.h>void main ( )int i,j;i=5;j=0;int k=i+j;cout<<"i+j="<<k<<"n"i+j=5五、通過對第四題中三個程序的所出現(xiàn)問題的修改,回答下列問題:1. 從對第四題1題的修改中,總結(jié)出編程時應(yīng)注意哪三個問題?2. C+程序中所出現(xiàn)的變量是否都必須先說明才能引用?3. 使用cout和運算符<<

9、;輸出字符串時應(yīng)注意什么問題?4. 有些變量雖然說明了但是沒有賦值,這時能否使用?5. 一個程序編譯通過了并且運行后得到了輸出結(jié)果,這個結(jié)果是否一定是正確的?第二章習(xí)題一、 選擇填空12345678910ADCAC無ACCA11121314151617181920DDDAAADBAC21222324DDAD1、 在16位機中,int型字寬為( )字節(jié)。A2; B。 4;C。 6; D 82、 類型修飾符unsigned修飾( )類型是錯誤的。A char; B. int; C.long int ; D、float3、 下列十六進(jìn)制的整型數(shù)常數(shù)表示中,( )是錯誤的。A0xaf; B. 0X1b

10、; C. 2fx; D. 0xAE4 、下列double型常量表示中,( )是錯誤的。 AE15; B. .35; C. 3E5; D. 3E-55、下列字符常量表示中,( )是錯誤的。A. 105 ; B. *; C.4f; D. a6、下列字符串常量表示中, ( )是錯誤的。A.""yes"or"No"" B."OK!" C. "abcdn" D. "ABC0"7、下列變量名中,( )是合法的。A.CHINA; B. byte-size; C. double; D. A+

11、a8、在int a5=1,3,5;中,數(shù)組元素a1的值是( )。 A. 1; B. 0; C. 6; D.29、在int b3=1,3,2,4,5,6,0;中b22的值是( )。 A.0; B. 5; C.6; D.210、下列給字符數(shù)組進(jìn)行初始化中,( )是正確的。 Achar s1 ="abcd”; B. char s23="xyz" C. char s33=a,x,y; D. char s423="xyz","mnp"11、在int a=3,*p=&a; 中,*p的值是( )。A. 變量a的地址值; B.無意義

12、; C. 變量p的地址值;D.312、對于int *pa5;的描述,()是正確的。A. pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素;B. pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變量;C. pa5表示某個數(shù)組的第5個元素的值;D. pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針;13、下列關(guān)于指針的運算中,()是非法的。A 兩個指針在一定條件下,可以進(jìn)行相等或不等的運算;B 可以用一個空指針賦值給某個指針;C 一個指針可以加上兩個整數(shù)之差;D 兩個指針在一定條件下,可以相加。14、指針可以用來表示數(shù)組元素,下列表示中()是錯誤的。已知:int a3

13、7;A. *(a+1)5; B. *(*a+3); C. *(*(a+1); D. *(&a00+2)15、下列表示引用的方法中,() 是正確的。已知:int m=10; A. int &x=m; B. int &y=10; C. int &z; D. float &t=&m16、下列各運算符中,( )可以作用于浮點數(shù)。A+; B. %; C. >> D. &17、下列各運算符中,()不能作用于浮點數(shù)。A/; B.&& C.!; D.18、下列各運算符中,()優(yōu)先級最高。A. +(雙目);B. *(單目); C

14、. <=; D. *=19、下列各運算符中,()優(yōu)先級最低。 A?:;B. |; C. |; D.!=20、下列各運算符中,()結(jié)合性從左到右。A. 三目;B. 賦值; C.比較; D.單目21、下列表達(dá)式中,()是非法的。已知:int a=5; float b=5.5;A. a%3+b; B. b*b&&+a; C.(a>b)+(int(b)%2); D. - -a+b22、下列表達(dá)式中,()是合法的。已知:double m=3.2; int n=3;A. m<<2; B. (m+n)|n C. !m*=n; D. m=5,n=3.1,m+n23、下列

15、關(guān)于類型轉(zhuǎn)換的描述中,()是錯誤的。A 在不同類型操作數(shù)組成的表達(dá)式中,其表達(dá)式類型一定是最高類型double型;B 逗號表達(dá)式的類型是最后一個表達(dá)式的類型;C 賦值表達(dá)式的類型是左值的類型;D 在由底向高的類型轉(zhuǎn)換中是保值映射。24、下列各表達(dá)式中,()有二義性。已知:int a(5); b(6);A. a+b>>3; B. +a+b+; C.b+(a=3); D. ( a=3)-a+二、 判斷下列描述是否正確,對者劃,錯者劃×。1、 任何字符常量與一個任意大小的整型數(shù)進(jìn)行加減都是有意義的。2、 轉(zhuǎn)義序列表示法只能表示字符不能表示數(shù)字。3、 在命名標(biāo)識符中,大小寫字母是

16、不加區(qū)別的。4、 C+的程序中,對變量一定要先說明再使用,說明只要在使用之前就可以。5、 C+中數(shù)組元素的下標(biāo)是從0開始,數(shù)組元素是連續(xù)存儲在內(nèi)存單元中的。6、 數(shù)組賦初值時,初始值表中的數(shù)據(jù)項的數(shù)目可以大于或等于數(shù)組元素的個數(shù)。7、 枚舉變量的取值受到該枚舉變量所對應(yīng)的枚舉表中的枚舉符的局限。8、 指針是用來存放某種變量的地址值的變量。這種變量的地址值也可以存放在某個變量中,存放某個指針的地址值的變量稱為指向指針的指針,即二級指針。9、 引用是用來給某個變量以別名的變量。,對引用的操作,實質(zhì)上就是對被引用的變量的操作。10、 運算符的優(yōu)先級和結(jié)合性可以確定表達(dá)式的計算順序。11、 在說明語句

17、 中,的值和的值是相等的。12、 已知:表達(dá)式具有兩用性。13、 移位運算符在移位操作中,無論左移還是右移,所移出的空位一律補0;14、 某個變量的類型高是指該變量被存放在內(nèi)存中的高地址處。15、 隱含的類型轉(zhuǎn)換都是保值映射,顯式的類型轉(zhuǎn)換都是非保值映射。16、 類型定義是用來定義一些C+中所沒有的新的類型。三、 計算下列各表達(dá)式的值(下列各表達(dá)式是相互獨立的,不考慮前面對后面的影響。)1、 已知:unsigned int x=015,y=0x2b;A.x|y;B.xy;C.x&y;D.x+y; E.x<<=3; F.y>>=4.2、 已知:inti(10),j

18、(5);A.+i-j-;B.i=i*=j;C.i=3/2*(j=3-2);D.ij; E.i&j|1; F.i+i&0xff.3、 已知:int a(5),b(3);計算下列表達(dá)式得值以及a和b的值。A.!a&&b+;B.a|b+4&&a*b;C.a=1,b=2,a>b?+a:+b;D.+b,a=10,a+5;E.a+=b%=a+b; F.a!=b>2<=a+1.4、 已知:int d(5),*pd=&d,&rd=d;A.d+-rd;B.*pd*rd; C.+*pd-rd; D.+rd-d.5、 已知:1的ASC

19、II碼的值為49。A.3+2<<1+1;B.2*9|3<<1;C.5%-3*2/6-3; D.8= =3<=2&5; E.!(3>5)|2<6; F.6>=3+2-(0-7).四、 按下列要求編寫程序1 從鍵盤上輸入兩個int型數(shù),比較其大小,并輸出顯示其中小的。2 從鍵盤上輸入一個int型數(shù),一個浮點型數(shù)比較其大小,并輸出其中大的。3 輸入一攝氏溫度,編程輸出華氏溫度。已知:華氏溫度轉(zhuǎn)換為攝氏溫度的計算公式如下:C=(F-32)*5/9其中,F(xiàn)表示華氏溫度,C表示攝氏溫度。4 編程實現(xiàn)輸入公里數(shù),輸出顯示其英里數(shù)。已知:1英里=1.60

20、934公里(用符號常量)。5 輸入一個int型數(shù),將它的低4位(右4位)都置為1。第三章習(xí)題一、 選擇填空1. 預(yù)處理命令在程序中都是以( )開頭的。A. * ; B. # ;C . :;D. / ;2. 文件包含命令中被包含的文件的擴轉(zhuǎn)名( )。A.必須為.h;B.不能用.h;C .必須是.c;D.不一定是.h;3. 下列條件編譯命令中#if()<語句序列1>#else<語句序列2>#endifA.整常量表達(dá)式;B.任何標(biāo)識符;C .任意表達(dá)式;D.被定義的宏名;4. 帶參數(shù)的宏定義中,程序中引用宏定義的實參( )。A.只能是常量;B.只能是整型量;C .只能是整形表

21、達(dá)式;D.可以是任意表達(dá)式;5. 下列( )是語句A. ;;B.a=17;C .x+y;D. cout<<”n”;6. 下列for循環(huán)的次數(shù)為( )。for(int i(0),x=0;!x&&i<=5;i+)A.5;B.6;C .1;D.無限;7. 下列while循環(huán)的次數(shù)是( )。while(int i=0)i- -;A.0;B.1;C .5;D.無限;8. 下列do-while循環(huán)的循環(huán)次數(shù)為( )。已知:int i(5);docout<<i- - <<endl;i- - ;while(i!=0);A.0;B.1;C .5;D.無限

22、;9. 下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為( )。for(int i(0),j(10);i=j=10;i+,j- -) A.0;B.1;C .10;D.無限;10. 已知:int a,b;下列switch語句中,( )是正確的。A. switch(a);case a:a+;break;case b:b+;break;B. switch(a+b) case 1:a+b;break;case 2:a-b|C. switch(a*a)case1,2:+a;case3,4:+b;D. switch(a/10+b)case 5:a/5;breakdefault:a+b;11. 下述關(guān)于循環(huán)體的描述中,(

23、)是錯誤的。A. 循環(huán)體中可以出現(xiàn)break語句和continue語句;B. 循環(huán)體中還可以出現(xiàn)循環(huán)語句;C. 循環(huán)體中不能出現(xiàn)goto語句;D. 循環(huán)體中可以出現(xiàn)開關(guān)語句。12. 下述關(guān)于goto語句的描述中,( )是正確的。A. goto語句可在一個文件中隨意轉(zhuǎn)向;B. goto語句后面要跟上一個他所轉(zhuǎn)向的語句;C. goto語句可以同時轉(zhuǎn)向多條語句;D. goto語句可以從一個循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外。13. 下述關(guān)于break語句的描述中,( )是正確的。A. break語句可用于循環(huán)體內(nèi),它將退出該重循環(huán);B. break語句可用于開關(guān)語句中,它將退出開關(guān)語句。C. break語句可用于

24、if體內(nèi),它將退出if語句;D. break語句在一個循環(huán)體內(nèi)可以出現(xiàn)多次。14. 下述關(guān)于開關(guān)語句的描述中,( )是正確的。A. 開關(guān)語句中default子句可以沒有,也可以有一個;B. 開關(guān)語句中每個語句序列中必須有break語句;C. 開關(guān)語句中default子句只能放在最后;D. 開關(guān)語句中case子句后面的表達(dá)式可以是整形表達(dá)式。15. 下列關(guān)于條件語句的描述中,()是錯誤的。A. if語句中只有一個else子句;B. if語句中可以有多個else if子句;C. if語句中if體內(nèi)不能是開關(guān)語句;D. if語句中的if體中可以是循環(huán)語句。二、 判斷下列描述是否正確,對者劃,錯者劃&

25、#215;。 預(yù)處理命令是在進(jìn)行編譯時首先執(zhí)行的,然后再進(jìn)行正常編譯。 宏定義命令是以分號結(jié)束的。 帶參數(shù)的宏定義只能有1至2個參數(shù)。 文件包含命令所包含的文件是不受限制的。 條件編譯命令只在編譯時才有作用。 預(yù)處理命令的主要作用是提高效率的。 復(fù)合語句就是分程序。 條件語句不能作為多路分支語句。 開關(guān)語句不可以嵌套,在開關(guān)語句的語句序列中不能再有開關(guān)語句10開關(guān)語句中的default關(guān)鍵字,只能放在該語句的末尾,不能放在開頭或中間。11Switch語句中必須有break語句否則無法退出switch語句。12While循環(huán)語句的循環(huán)體至少執(zhí)行一次。13Do-while循環(huán)可以寫成while循環(huán)

26、的格式。14For循環(huán)是只有可以確定的循環(huán)次數(shù)時才可使用,否則不能用for循環(huán)。15只有for循環(huán)的循環(huán)體可以是空語句,其他種循環(huán)的循環(huán)體不能用空語句。16當(dāng)循環(huán)體為空語句時,將說明該循環(huán)不作任何工作,只起延時作用。17循環(huán)是可以嵌套的,一個循環(huán)體內(nèi)可以包含另一種循環(huán)語句。18在多重循環(huán)中,內(nèi)重循環(huán)的循環(huán)變量應(yīng)用的次數(shù)比外重的多。19Break語句可以出現(xiàn)在各種循環(huán)體中。20continue語句只能出現(xiàn)在循環(huán)體中。三、 分析下列程序的輸出結(jié)果。1.#include<iostream.h>#define M 1.5#define A(a) M*avoid main()int x(5)

27、,y(6);cout<<A(x+y)<<endl;2. #include<iostream.h>#define MAX(a,b) (a)>(b)?(a):(b)void main()int m(1),n(2),p(0),q;q=MAX(n,n+p)*10;cout<<q<<endl;3.#include<iostream.h>#include”f1.cpp”void main()int a(5),b;b=f1(a);cout<<b<<endl;f1.cpp文件內(nèi)容如下:#define M(m)

28、 m*mf1(int x)int a(3);return M(x+a);4.#include<iostream.h>void main()int i(0);while(+i)if(i= =10) break;if(i%3!=1) continue;cout<<i<<endl;5.#include<iostream.h>void main()int i(1);doi+;cout<<+i<<endl;if(i= =7) break;while(i= =3);cout<<”O(jiān)k!n”;6.#include<io

29、stream.h>void main()int i(1),j(2),k(3),a(10);if(!i)a- -;else if (j)if(k) a=5;elsea=6;a+;cout<<a<<endl;if(i<j)if(i!=3)if(!k)a=1;else if(k)a=5;a+=2;cout<<a<<endl;7.#include<iostream.h>void main()int i,j,a88;* * a=1;for(i=1;i<8;i+)* *(a+i)=1;*(*(a+i)+i)=1;for(j=1;

30、j<i;j+)*(*(a+i)+j)= *(*(a+i-1)+j-1)+ *(*(a+i-1)+j);for(i=0;i<8;i+)for(j=0;j<=i;j+)cout<<""<<*(*(a+i)+j);cout<<endl;8.#include<iostream.h>void main()int x(5);doswitch(x%2)case 1:x- -;break;case 0:x+;break;x- -;cout<<x<<endl;while(x>0);9.#inclu

31、de<iostream.h>void main()int a(5),b(6),i(0),j(0);switch(a)case 5:switch(b)case 5:i+;break;case 6:j+;break;default: i+;j+;case 6: i+;j+;break;default: i+;j+;cout<<i<<”,“<<j<<endl;10.#include<iostream.h>char input="SSSWILTECH1111W1WALLMP1"void main()int i;

32、char c;for(i=2;(c=inputi)!='0'i+)switch(c)case 'a':cout<<'i'continue;case'1':break;case 1:while(c=input+i)!='1'&&c!='0');case 9:cout<<c;case 'E':case 'L':continue;default :cout<<c; continue;cout<<' &#

33、39;cout<<endl;四、 按下列要求編程,并上機調(diào)試。 求100之內(nèi)的自然數(shù)中奇數(shù)之和。 求100之內(nèi)的自然數(shù)中被13整除的最大數(shù)。 求輸入兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。 求下列分?jǐn)?shù)序列的前15項之和。2/1,3/2,5/3,8/5,13/8,21/13,. . . 求i!(i=1,. . .,10)(即求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!之和) 求出11000之間的完全平方數(shù)。所謂完全平方數(shù)是指能夠表示成為另一個證書的平方的整數(shù)。要求每行輸出8個數(shù)。 輸入4個int型數(shù),按其大小順序輸出。 有一函數(shù)如下所示: x (x<1)Y= x+

34、5 (1x<10) x-5 (x10)已知x值時,輸出y值。 求一元二次方程ax2+bx+c=0的解。討論下述情況:(1)b2-4ac=0,有兩個相等實根;(2)b2-4ac>0,有兩個不等實根;(3) b2-4ac<0,有兩個共軛復(fù)根;(4)a=0,不是二次方程。10編程輸出如下圖案。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *第四章習(xí)題一、 選擇填空1. 當(dāng)一個函數(shù)無返回值時,定義它時函數(shù)的類型應(yīng)是( )A. void; B. 任意;C . int;D. 無

35、;2. 在函數(shù)說明時,下列( )項是不必要的。A.函數(shù)的類型;B.函數(shù)參數(shù)類型和名次;C .函數(shù)名字;D.返回值表達(dá)式;3. 在函數(shù)的返回值類型與返回值表達(dá)式的類型的描述中,( )是錯誤的。A. 函數(shù)的返回值的類型是定義函數(shù)時確定的;B. 函數(shù)的返回值的類型就是返回值表達(dá)式的類型;C. 函數(shù)的返回值表達(dá)式的類型與函數(shù)返回值類型不同時,表達(dá)示類型應(yīng)轉(zhuǎn)換成函數(shù)返回值類型;D. 函數(shù)的返回值類型決定了返回值表達(dá)式的類型。4. 在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,( )是錯誤的。A. 被調(diào)用函數(shù)中可以不用 return語句;B. 被調(diào)用函數(shù)中可以使用多個return語句;C. 被調(diào)用函

36、數(shù)中,如果有返回值,就一定要有return語句;D. 被調(diào)用函數(shù)中,一個return語句可返回多個值給調(diào)用函數(shù)。5. 下列( )是引用調(diào)用A. 形參是指針,實參是地址值;B. 形參和實參都是變量;C. 形參是數(shù)組名,實參是數(shù)組名;D. 形參是引用,實參是變量。6. 在傳值調(diào)用中,要求( )。A. 形參和實參類型任意,個數(shù)相等;B. 形參和實參類型都完全一致,個數(shù)相等;C. 形參和實參對應(yīng)的類型一致,個數(shù)相等;D. 形參和實參對應(yīng)的類型一致,個數(shù)任意。7. 在C+中,關(guān)于下列設(shè)置參數(shù)默認(rèn)的描述中,( )是正確的。A. 不允許設(shè)置參數(shù)的默認(rèn)值;B. 設(shè)置參數(shù)默認(rèn)值只能在定義函數(shù)時設(shè)置;C. 設(shè)置參

37、數(shù)默認(rèn)值時,應(yīng)該是先設(shè)置右邊的再設(shè)置左邊的;D. 設(shè)置參數(shù)默認(rèn)值時,應(yīng)該全部參數(shù)都設(shè)置;8. 重載函數(shù)在調(diào)用時選擇的依據(jù)中,( )是錯誤的。A.參數(shù)個數(shù);B.參數(shù)的類型;C .函數(shù)名字;D.函數(shù)的類型;9. 下列的標(biāo)識符中,( )是文件級作用域的。A.函數(shù)形參;B.語句標(biāo)號;C .外部靜態(tài)類標(biāo)識符;D.自動類標(biāo)識符。10. 有一個int 型變量,在程序中使用頻度很高,最好定義為( )。A.register;B.auto;C .extern;D.static;11. 下列標(biāo)識符中,( )不是局部變量。A.register類;B.外部static類;C .auto類;D.函數(shù)形參;12. 下列存儲

38、類標(biāo)識符中,( )的可見性與存在性不一值。A. 外部類;B.自動類;C .內(nèi)部靜態(tài)類;D.寄存器類。13. 下列存儲類標(biāo)識符中,要求通過函數(shù)來實現(xiàn)一種不太復(fù)雜的功能,并且要求加快執(zhí)行速度,選用()合適。A.內(nèi)聯(lián)函數(shù); B.重載函數(shù);C .遞歸調(diào)用;D.嵌套調(diào)用。14. 采用函數(shù)重載的目的在于( )。A.實現(xiàn)共享;B.減少空間;C .提高速度;D.使用方便,提高可讀性。15. 在將兩個字符串連接起來組成一個字符串時,選用( )函數(shù)。B. A.strlen();B.strcpy();C .strcat();D.strcmp. 二、 判斷下列描述的正確性,對者劃,錯者劃×。 在C+中,定義

39、函數(shù)時必須給出函數(shù)的類型 在C+中,說明函數(shù)時要用函數(shù)原型,即定義函數(shù)時的函數(shù)頭部分。 在C+中,所有函數(shù)在調(diào)用前都要說明。 如果一個函數(shù)沒有返回值,定義時需用void說明。 在C+中,傳址調(diào)用將被引用調(diào)用所代替。 使用內(nèi)聯(lián)函數(shù)是以犧牲增大空間開銷為代價的。 返回值類型、參數(shù)個數(shù)和類型都相同的函數(shù)也可以重載。 在設(shè)置了參數(shù)默認(rèn)值后,調(diào)用函數(shù)的對應(yīng)實參就必須省略。 計算函數(shù)參數(shù)順序引起的二義性完全是由不同的編譯系統(tǒng)決定的。 For循環(huán)中,循環(huán)變量的作用域是該循環(huán)的循環(huán)體內(nèi)。 語句標(biāo)號的作用域是定義該語句標(biāo)號的文件內(nèi)。 函數(shù)形參的作用域是該函數(shù)的函數(shù)體。 定義外部變量時,不用存儲類說明符exter

40、n, 而說明外部變量時用它。 內(nèi)部靜態(tài)類變量與自動類變量作用域相同,但是生存期不同。 靜態(tài)生存期的標(biāo)識符的壽命是短的,而動態(tài)生存期的標(biāo)識符的壽命是長的。 重新定義的標(biāo)識符在定義它的區(qū)域內(nèi)是可見的,而與其同名的原標(biāo)識符在此區(qū)域內(nèi)是不可見的。但是,它是存在的。 靜態(tài)類標(biāo)識符在它的作用域之外是不存在的。 所有的函數(shù)在定義它的程序中都是可見的。 編譯系統(tǒng)所提供的系統(tǒng)函數(shù)都被定義在他所對應(yīng)的頭文件中。 調(diào)用系統(tǒng)函數(shù)時,要先將該系統(tǒng)函數(shù)的原型說明所在的頭文件包含進(jìn)去。三、 分析下列程序的輸出結(jié)果。1.#include<iostream.h>#define N 5void fun();void

41、main()for (int i(1);i<N;i+)fun();void fun ()static int a;int b(2);cout<<(a+=3,a+b)<<endl;2. #include<iostream.h>int add(int a,int b);void main()extern int x,y;cout<<add(x,y)<<endl;int x(20),y(5);int add(int a,int b)int s=a+b;return s;3.#include<iostream.h>void

42、f(int j);void main()for(int i(1);i<=4;i+)f(i);void f(int j)static int a(10);int b(1);b+;cout<<a<<”+”<<b<<”+”<<j<<”=”<<a+b+j<<endl;a+=10;4.#include<iostream.h>void f(int n)int x(5);static int y(10);if(n>0)+x;+y;cout<<x<<”,”<&l

43、t;y<<endl;void main()int m(1);f(m);5.#include<iostream.h>int fac(int a);void main()int s(0);for(int i(1);i<=5;i+)s+=fac(i);cout<<”5!+4!+3!+2!+1!=”<<s<<endl;int fac(int a)static int b=1;b*=a;return b;6.#include<iostream.h>void fun(int ,int , int *);void main()in

44、t x,y,z;fun(5,6,&x);fun(7,x,&y);fun(x,y,&z);cout<<x<<”,”<<y<<”,”<<z<<endl;void fun(int a,int b,int *c)b+=a;*c=b-a;7.#include<iostream.h>int add(int x, int y=8);void main()int a(5);cout<<”sum1=”<<add(a)<<endl;cout<<”sum2=”&

45、lt;<add(a,add(a)<<endl;cout<<”sum3=”<<add(a,add(a,add(a)<<endl;int add(int x,int y)return x+y;8.#include<iostream.h>#define N 6int f1(int a);void main()int a(N);cout<<f1(a)<<endl;int f1(int a)return(a= =0)?1:a*f1(a-1);9.#include<iostream.h>void swap

46、(int &,int &);void main()int a(5),b(8);cout<<”a=”<<a<<”,“<<”b=”<<b<<endl;swap(a,b);cout<<”a=”<<a<<”,“<<”b=”<<b<<endl;void swap(int &x,int &y)int temp;temp=x;x=y;y=temp;10.#include<iostream.h>int &f1(int

47、 n,int s)int &m=sn;return m;void main()int s=5,4,3,2,1,0;f1(3,s)=10;cout<<f1(3,s)<<endl;11. #include<iostream.h>void print(int),print(char),print(char *);void main()int u(1998);print(u);print(u);print(“abcd”);void print(char x)cout<<x<<endl;void print(char *x)cout&l

48、t;<x<<endl;void print(int x)cout<<x<<endl;12.#include<iostream.h>void ff(int),ff(double);void main()float a(88.18);ff(a);char b(a);ff(b);void ff(int x)cout<<”ff(int):”<<x<<endl;void ff(double x)cout<<”ff(double):”<<x<<endl;四、 按下列要求編程,并上機

49、驗證。 從鍵盤上輸入15浮點數(shù),求出其和幾平均值。要求寫出求和平均值的函數(shù)。 從鍵盤上輸入10個int型數(shù),去掉重復(fù)的。降其剩余的由大到小排序輸出。 給定某個年、月、日的值,例如,1998年4月7日。計算出這一天是該年的第幾天。要求寫出計算潤年的函數(shù)和計算日期的函數(shù)。 寫出一個函數(shù),使從鍵盤上輸入的一個字符串反序存放,并在主函數(shù)中輸入和輸出該字符串。 寫出一個函數(shù),要求將輸入的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。要求函數(shù)調(diào)用時,使用指針作函數(shù)形參。 編寫兩個函數(shù):一個是將一個5位 int型數(shù)轉(zhuǎn)換成為每兩個數(shù)字間加一個空格的空字符串;另一個是求出轉(zhuǎn)換后的字符串的長度。由主函數(shù)輸入int型數(shù),并輸出轉(zhuǎn)換后的

50、字符串和長度。 輸入5個學(xué)生4門功課的成績,然后求出: A.每個學(xué)生的總分; B. 每門課程的平均分; C. 輸出總分最高的學(xué)生的姓名和總分?jǐn)?shù)。 使用遞歸調(diào)用方法將一個n位整數(shù)轉(zhuǎn)換成字符串。 使用函數(shù)重載的方法定義兩個重名函數(shù),分別求出int型數(shù)的兩個點間距離和浮點數(shù)的兩點間距離。 已知二維字符數(shù)組s5=“abcd”,”efgh”,”ijkl”,”mnop”;使用字符串處理函數(shù),將該數(shù)組的4個字符串連接起來,組成一個字符串:abcdefghijklmnop。 編程求下式的值:n1+n2+n3+n4+n10,其中n=1,2,3。編寫函數(shù)時,設(shè)置參數(shù)n的默認(rèn)值為2。 編一個程序驗證哥德巴赫猜想:任

51、何一個充分大的偶數(shù)(大于等于6)總可以表示成兩個素數(shù)之和。要求編一個求素數(shù)prime()函數(shù),它有一個int型參數(shù),當(dāng)參數(shù)值為素數(shù)時返回1,否則返回0。第五章習(xí)題一、 選擇填空1. 在下列關(guān)鍵字中,用以說明類中公有成員的是( )A. public; B. private;C. protected;D. friend;2. 下列的各類函數(shù)中,( )不是類的成員函數(shù)。A. 構(gòu)造函數(shù);B. 析構(gòu)函數(shù);C . 友元函數(shù);D. 拷貝初始化構(gòu)造函數(shù);3. 作用域運算符的功能是( )。A. 標(biāo)識作用域的級別的;B. 指出作用域的范圍的;C. 給定作用域的大小的;D. 標(biāo)識某個成員是屬于哪個類的。4. ( )

52、是不可能作為該類的成員的。A. 自身類對象的指針;B.自身類的對象;C.自身類對象的引用; D.另一個類的對象。5. ( )不是構(gòu)造函數(shù)的特征A. 構(gòu)造函數(shù)的函數(shù)名與類名相同;B. 構(gòu)造函數(shù)可以重載;C. 構(gòu)造函數(shù)可以設(shè)置缺省參數(shù);D. 構(gòu)造函數(shù)必須指定類型說明。6. ( )是析構(gòu)函數(shù)的特征。A. 一個類中只能定義一個析構(gòu)函數(shù);B. 析構(gòu)函數(shù)與類名不同;C. 析構(gòu)函數(shù)的定義只能在類體內(nèi);D. 析構(gòu)函數(shù)可以有各個或多個參數(shù)。7. 通常的拷貝初始化函數(shù)的參數(shù)是( )。E. 某個對象名;A. 某個對象的成員名;B. 某個對象的引用名;C. 某個對象的指針名;8. 關(guān)于成員函數(shù)特征的下述描述中,( )

53、是錯誤的。D. 成員函數(shù)一般是內(nèi)聯(lián)函數(shù);A. 成員函數(shù)可以重載;B. 成員函數(shù)可以設(shè)置參數(shù)的缺省值;C. 成員函數(shù)可以是靜態(tài)的。9. 下述靜態(tài)數(shù)據(jù)成員的特征中,( )是錯誤的。D. 說明靜態(tài)數(shù)據(jù)成員時前邊要加修飾符static;A. 靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化;B. 引用靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運算符;C. 靜態(tài)數(shù)據(jù)成員不是所有對象所共用的。10. 友元的作用( )。A. 提高程序的運用效率;B. 加強類的封裝性;C. 實現(xiàn)數(shù)據(jù)的隱藏性;D. 增加成員函數(shù)的種類。 二、 判斷下列描述的正確性,對者劃,錯者劃×。 使用關(guān)鍵字class定義

54、的類中缺省的訪問權(quán)限是私有(private)的。 作用域運算符(:)只能用來限定成員函數(shù)所屬的類。 析構(gòu)函數(shù)是一種函數(shù)體為空的成員函數(shù)。 構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。 說明或定義對象時,類名前面不需要加class關(guān)鍵字。 對象成員的表示與結(jié)構(gòu)變量成員表示相同,使用運算符.或->。 所謂私有成員是指只有類中所提供的成員函數(shù)才能直接使用它們,任何類外的函數(shù)對它們的訪問都是非法的。 某類中的友元類的所有成員函數(shù)可以存取或修改該類中的私有成員。 可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。 如果一個成員函數(shù)只存取一個類的靜態(tài)數(shù)據(jù)成員,則可將該成員函數(shù)說明為靜態(tài)成員函數(shù)。三、 分析下列程序的輸

55、出結(jié)果。1.#include<iostream.h>class A public:A();A(int i,int j);void print( ); private:int a,b;A:A( ) a=b=0; cout<<”Default constructor called.n”; A:A(int i,int j) a=i;b=j;cout<<”Constructor called.n”;void A:print() cout<<”a=”<<a<<”,b=”<<b<<endl;void main()A m,n(4,8);m.print();n.print();2. #include<iostream.h>class B public:B();B(int i,int j);void printb( ); private:int a,b;cla

溫馨提示

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

最新文檔

評論

0/150

提交評論