年春面向對象程序設計期末復習指南_第1頁
年春面向對象程序設計期末復習指南_第2頁
年春面向對象程序設計期末復習指南_第3頁
年春面向對象程序設計期末復習指南_第4頁
年春面向對象程序設計期末復習指南_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2008 年春面向對象程序設計期末復習指南 課程責任教師 蘇海燕 第一部分 考核說明 本課程是開放教育本科計算機科學與技術專業的 選修課程,由 市電大 命題。本課程考 試命題依據的教材采用王萍主編,清華大學出版社出版的 C+ 程序設計教程( 2002 年 2 月第 1 版),共 4 學分,課內學時數為 108,試卷編號 1008,考試方式為 閉卷 。考試 時間 90 分鐘。 (一)試卷類型及所占比例 單項選擇題(占 20 分左右) 填空題(占 20 分左右) 程序填充題(占 24 分左右) 理解問答題(占 24 分左右) 編程題(占 12 分左右) (二)考試注意事項 考試過程中,掌握時間的分

2、配,做到先易后難,知識點準確把握,詳略得當。 1. 單項選擇題:根據題意,從四種可選擇的答案中選擇合適的一種答案。 2. 填空題:根據題意,在畫有橫線或空白處填寫合適內容。 3. 程序填充題:根據 C+程序或函數(類)模塊,及相應的功能描述,在畫有橫 線或空白處填寫合適內容。 4. 理解問答題:根據 C+程序或函數(類)模塊,回答一些問題。如寫出程序運 行結果或函數調用結果,寫出程序或函數所能實現的功能,按題意要求指出錯誤位置 并改正。 5. 編程題:給出編程要求和函數原型,編寫出相應的程序或函數模塊。 第二部分 復習參考資料 (一)紙質資料 1、教材:C+面向對象程序設計,清華大學出版社出版

3、、中央電大出版社發行部 發行,熟讀教材,掌握各章重點。 實驗教材:面向對象程序設計實驗中央電大出版社出版和發行,機考參 考。 2 、形成性測試考核冊:獨立完成,掌握其中的知識點 3、中央電大下發的面向對象程序設計期末復習指南:結合教材,及市電大 的復 習要求,掌握考核的知識點和重難點,完成每個章節的練習題,尤其是各章的程序設計、 程序填空和寫出程序運行結果等大題。 (二)網絡資源 1、重慶電大平臺的,重難點分析,平時作業講評和自檢自測,以及巴南電大平臺的 作業講評、歷年考試真題、期末復習指南等。 2、各平臺的直播課堂和 IP 課件和重慶電大平臺的教案演示文稿。 (三)錄象教材:面向對象程序設計

4、 16 講,每講 50分鐘,中央電大音像出版社 出版和發行; 第三部分 各章知識點梳理 第 1 章 C+ 編程基礎 重點掌握 1簡單的 C+ 程序結構。 P9-12 第 2 章 基本 C+ 程序結構 重點掌握 1. C+程序的基本單位是字符,由字符可以構成標識符,表示常量或變量;p18 2常量和變量通過運算符,按照一定的優先級連接起來,構成表達式,表達式有返回 值。 P24-25 3. 定義具有簡單數據類型的常量p26和變量的方法p28,并對它們進行初始化; 4. 簡單數據類型的含義和簡單運算;p24 5. 簡單表達式的寫法和賦值語句的用法;p29 6. 用 cout 進行簡單的輸出操作的語法

5、和使用。P28 第3章 數據類型 重點掌握 1. C+語言的基本數據類型:char(字符型卜int(整型卜float(浮點型卜double(雙精度 型)、w_char(雙字節字符型)、bool(布爾型)p36 2. 計算機內存中存儲數據是以字節為單位的,不同的數據類型占用的內存空間不同; p39-40 3. 不同的數據類型決定了計算機對內存中信息的解釋方式,因此,盡管長整數和浮點 數都是占用了四個字節的存儲空間,它們存儲數據的方式截然不同;p38 第4章 程序流程控制 重點掌握 1. if語句格式及應用;p52 2. 循環結構語句( while, do while, for ); p58-68

6、 3. 轉向控制語句( break, continue, goto ); p73-74 第 5 章 函數 重點掌握 1. 函數定義與函數聲明(函數名 p79、函數類型p80、形式參數p79、函數體p80、函 數返回p98、函數聲明p109); 2. 函數調用p82 (調用表達式、實際參數、缺省參數、傳值調用、嵌套調用、遞歸調 用)。 第6章 簡單程序設計 重點掌握 1. C+庫函數中常用的庫函數以及常用頭文件的功能;p137 2. 局部變量和全局變量的概念;p142 3. 外部存儲類型和靜態存儲類型在多文件程序中的聯絡作用;p130 第 7 章 數組與結構 重點掌握 1. 數組的定義p146和

7、存取。p147 2. 維和二維數組的定義p151、初始化;p156 3字符數組的定義、初始化,元素賦值與輸出;p147,p156 4. 向函數傳遞數組;p158 5. 字符數組及其用法;p156 第 8 章 指針與引用 重點掌握 1. 指針變量的定義和運算,指針參數的使用。p169 2. 用指針給函數傳遞參數; 3. 指針、數組和字符串之間的緊密聯系;p179 4. 能夠聲明和使用字符串數組;p183 5. 命令行參數,理解函數指針的用法;p184 8. 用引用傳遞參數的方法;p203 P195-201 p267 9. 鏈表的概念及指針對鏈表的操作:建立、修改、插入和刪除等。 第 9 章 面向

8、對象程序方法 重點掌握 1 .面向對象的概念; p207 2. 類的概念; p213 第 10 章 類與對象 重點掌握 1. 聲明和定義類和成員函數的方法;p226-227 2. 掌握類訪問成員的方法;p232 3. 類定義與頭文件;p240 第 11 章 構造函數與析構函數 重點掌握 1. 定義構造函數和析構函數的方法,把握默認構造函數的意義 1 .構造類成員的方法。 P275 第 12 章 靜態成員、友元 重點掌握 1 .怎樣聲明一個靜態數據成員 p297; 2. 靜態數據成員和靜態成員函數的使用方法;p298 第 13 章 運算符重載 重點掌握 1. 重定義與類有關的運算符;p319-3

9、28 2. 運算符重載的規則;p316 第 14 章 繼承 重點掌握 1 .繼承的概念,能利用繼承現有的類建立新類; p352 2. 多重繼承的概念;p372 第四部分 綜合練習題 一、單項選擇題 1. C+源程序文件的缺省擴展名為(A。 A. cppB. exe C. objD. lik 2能作為C+程序的基本單位是(C )。 A. 字符B.語句 C.函數D.源程序文件 3. 由C+源程序文件編譯而成的目標文件的缺省擴展名為(C )。 A. cppB. exe C. objD. lik 4. 程序中主函數的名字為(A )。 A. mainB. MAIN C. MainD.任意標識符 5. 程

10、序運行中需要從鍵盤上輸入多于一個數據時,各數據之間應使用 為分隔符。 A. 空格或逗號 C. 逗號或分號 6. x0 & x=10 D ) 符號作 B. A. x10 C. x=0 | x=10 7.設” int a=12 A. 12 C. 156 D. 的相反表達式為( B. x10 D. x0 & x10 。”,則執行完語句” B. 144 逗號或回車 空格或回車 A )。 a+=a*a。 ”后, a 的值是 ( C ) 。 D. 288 &由C+目標文件連接而成的可執行文件的缺省擴展名為 A. cpp C. obj 9.假定下列 A. x+=y+ C. x=+y B. exe D. li

11、k x和y均為int型變量,則不正確的賦值為( B. x+=y+ D. +x=+y B )。 10. 在下面循環語句中循環體執行的次數為( int i=0,s=0 A. 4 C. 6 。 while(s0 | y=5 A. x0 | y!=5 O 的相反表達式為( 錯誤的定義是( B. const int M=20 D. const bool mark=true B C )。 )。 13. do 語句能夠改寫為( D A. 復合B. if B. x0 & y=5 )語句。 C. switchD. while int a34=3,4,2,8,6 ,則元素 14. 假定一個二維數組的定義語句為 a

12、21 的值為( C )。 A. 0 B. 4 C. 8D. 6 15. 在下面的一維數組定義中,哪一個有語法錯誤。(C ) A. int a=1,2,3。 B. int a10=0。 C. int a。D. int a5。 16. 可用作C+語言用戶標識符的一組標識符是 (B )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 17以下關于函數模板敘述正確的是(C )。 A. 函數模板也是一個具體類型的函數 B. 函數模板的類型參數與函數的參數是同一個概念 C. 通過使用不同的類型參數,函數模板可以

13、生成不同類型的函數 D. 用函數模板定義的函數沒有類型 18以下函數的返回結果是( A )。 int function(char *x) char *p=x。 while(*p+) 。 return(p-x-1) 。 A. 求字符串的長度 B. 將字符串 x 連接到字符串 p 后面 C. 將字符串 x 復制到字符串 p 中 D. 將字符串 x 反向存放 19下列( C )的調用方式是引用調用。 A. 形參和實參都是變量 C. 形參是引用,實參是變量 20函數調用不可以( D A. 出現在一個表達式中 C. 作為一個函數的實參 21采用重載函數的目的是( A. 實現共享B. C. 提高速度D.

14、22以下正確的描述是( B B. 形參是指針,實參是地址值 D. 形參是變量,實參是地址值 )。 B. 出現在執行語句中 D.作為一個函數的形參 D )。 減少空間 使用方便,提高可讀性 )。 A. 函數的定義可以嵌套,函數的調用不可以嵌套 B. 函數的定義不可以嵌套,函數的調用可以嵌套 C. 函數的定義和函數的調用均可以嵌套 D. 函數的定義和函數的調用均不可以嵌套 23存儲以下數據,占用存儲字節最多的是(D )。 A. 0 B. 0 C. “0”D. 0.0 24. C+語言的編譯系統對宏命令的處理是(D )。 A. 在程序運行時進行 B. 在程序連接時進行 C. 和C+程序的其它語句同時

15、進行編譯 D. 在對源程序中其它成分正式編譯之前進行 25. 關于局部變量,下面說法正確的是( C ) 。 A. 定義該變量的程序文件中的函數都可以訪問 B. 定義該變量的函數中的定義處以下的任何語句都可以訪問 C. 定義該變量的復合語句中的定義處以下的任何語句都可以訪問 D. 定義該變量的函數中的定義處以上的任何語句都可以訪問 26 .當#“ elude 后面的文件名用雙引號括起來時,尋找被包含文件的方式是 ( B ) 。 A. 直接按系統設定的標準方式搜索目錄 B. 先在源程序所在目錄搜索,再按系統設定的標準方式搜索目錄 C. 僅僅搜索源程序所在目錄 D. 搜索當前邏輯盤上的所有目錄 27

16、若定義了函數 double *function(), 則函數 function 的返回值為( B )。 A. 實數型 B. 實數的地址 C. 指向函數的指針 D. 函數的地址 28下列給字符數組賦初值時,正確的是 ( A ) 。 A. char s1= ” abcdef ”。 B. char s24= ” abcd ”。 C. char s323= a .” “ abc” , ” xyz” 。 D. char s44= a, x, s , t 。 29關于 void 指針,下列說法正確的是( C )。 A. void指針就是未指向任何數據的指針 B. void指針就是已定義而未初始化的指針 C

17、. 指向任何類型數據的指針可直接賦值給一個 void 指針 D. void指針值可直接賦給一個非 void 指針 30設有定義“ static int data56。”,設該數組在靜態存儲區中的起始地址為 十進制的 100,若每個 int 型數占 4 個字節,則數組元素 data23 的地址為 ( D ) 。 A. 115 B.124 C.130 D.160 31設 x 是一個 bool 型的邏輯量, y 的值為 10 ,則表達式 x & y 的值為 C )。 A. 1 B. 0 C. 與 x 值相同 D. 與 x 值相反 32 假定 p 指向的字符串為” string ”,若要輸出這個字符串

18、的地址值,則使用 C )。 A. cout*s。 B. couts 。 C. cout&s 。 D. coutGetValue()D. x.GetValue() 45.在多文件結構的程序中,通常把類中所有非內聯函數的定義單獨存放于(B ) 中。 A. 主文件 B. 實現文件 C. 庫文件 D. 頭文件 46.假定 AA 為 一個類, int a() 為該類的一個成員函數, 若該成員函數在類定義體外 定義,則函數頭為( A )。 A. int AA:a() B. int AA:a() C. AA:a() D. AA:int a() 47.循環語句“ for(int i=0。 in 。 i+) c

19、outi*inext和 elemHead D. elemTail-next 和 elemTail 53對于一個類的析構函數,其函數名與類名 (C ) A. 完全相同 B. 完全不同 C. 只相差一個字符 D. 無關系 54假定一條定義語句為“ int a10, x, *pa=a。”,若要把數組 a 中下標為 3 的元 素值賦給x,則不正確的語句為(D )。 A. x=pa3。B. x=*(a+3) C. x=a3。D. x=*pa+3 55循環體至少被執行一次的語句為( A. for循環B. while C. do循環D. 56假定 AB 為一個類,則執行 “AB A.帶參構造函數B. C.拷

20、貝構造函數D. C )。 循環 任一種循環 x。”語句時將自動調用該類的 (B ) 無參構造函數 賦值重載函數 57當類中的一個整型指針成員指向一塊具有n*sizeof(int) 大小的存儲空間時,它 最多能夠存儲 ( A ) 個整數。 A. nB. n+1 58假定AB為一個類,則執行 C. n-1D. 1 AB x(a,5) 。”語句時將自動調用該類的 ( A ) 。 無參構造函數 賦值重載函數 A. 帶參構造函數B. C. 拷貝構造函數D. 59在下面的字符數組定義中,哪一個有語法錯誤。(D )。 A. char a20=” abcdefg ”。 B. char a=” x+y=55.

21、”。 C. char a15。D. char a10= 5。 60. 假定一個類 AB只含有一個整型數據成員a,當用戶不定義任何構造函數時,系統 為該類定義的無參構造函數為 ( D ) 。 A. AB() a=0。 B. AB(int aa=0): a(aa) C. AB(int aa): a(aa) D. AB() 61. 設 px 是指向一個類對象的指針變量,則執行 “ delete px 。”語句時,將自動調 用該類的 ( C ) 。 A. 無參構造函數 B. 帶參構造函數 C. 析構函數 D. 拷貝構造函數 62. 假定一個類 AB只含有一個整型數據成員a,用戶為該類定義的帶參構造函數

22、可以 為( C) 。 A. AB() B. AB(): a(0) C. AB(int aa=0) a=aa 。 D. AB(int aa) 63. 假定有“ struct BOOKchar title40。 float price 。 book 。”,則正確的語 句為( B )。 A. BOOK &x= &book 。 C. BOOK &x=new BOOK 。 64. 次數為 ( A. 2 假定 A ) B. BOOK &x=book D. BOOK &x=BOOK AB 為一個類,則執行 “AB a, b(3), *p 語句時共調用該類構造函數的 B. 3 66 .假定 AB 為一個類,則

23、執行 “ AB a(2), b3, *p4。”語句時共調用該類構造 函數的次數為 ( B ) 。 A. 3 B. 4 C. 5 D. 9 67 .假定一個二維數組的定義語句為“ int a34=3,4,2,8,6。”,則元素 a12 的值為( C )。 A. 2 B. 4 C. 6 D. 8 68 .一個類的靜態數據成員所表示屬性 ( C ) 。 A. 是類的或對象的屬性B. 只是對象的屬性 C. 只是類的屬性D. 類和友元的屬性 69 .當將一個類 A或函數f()說明為另- 個類B的友元后,類 A或函數f()能夠直接訪 問類 B 的( D )。 A. 只能是公有成員 B. 只能是保護成員 C

24、. 只能是除私有成員之外的任何成員 D. 具有任何權限的成員 70 類的靜態成員的訪問控制(D )。 A. 只允許被定義為 private B. 只允許被定義為 private 或 protected C. 只允許被定義為 public D. 可允許被定義為 private 、 protected 或 public 71 軟件產品在需求發生變化、運行環境發生變化或發現軟件產品本身的錯誤或不足 時進行相應的軟件更新的難易程度叫做軟件的( A )。 A. 可維護性B. 可復用性 C. 兼容性 D. 正確性 D. 72.在成員函數中進行雙目運算符重載時,其參數表中應帶有(B )個參數。 C. 4 6

25、5. A. B ) 實現的。 D. 5 對類對象成員的初始化是通過構造函數中給出的 函數體B. C. 參數表 初始化表 初始化表或函數體 A. 0B. 1 C. 2D. 3 73如果表達式 +a 中的“ +”是作為成員函數重載的運算符,若采用運算符函數調 用格式,則可表示為( D )。 A. a.operator+(1)B. operator+(a) C. operator+(a,1)D. a.operator+() 74雙目運算符重載為普通函數時,其參數表中應帶有(C )個參數。 A. 0 B. 1 C. 2 D. 3 75以下敘述中不正確的是(C )。 A. 在一個函數中,可以有多條 re

26、turn 語句 B. 函數的定義不能嵌套,但函數的調用可以嵌套 C. 函數必須有返回值 D. 不同的函數中可以使用相同名字的變量 76對于公有繼承,基類中的私有成員在派生類中將 ( C ) 。 A. 能夠直接使用成員名訪問 B. 能夠通過成員運算符訪問 C. 仍然是基類的私有成員 D. 變為派生類的私有成員 77從一個基類派生出的各個類的對象之間 ( C ) A. 共享所有數據成員,每個對象還包含基類的所有屬性 B. 共享部分數據成員,每個對象還包含基類的所有屬性 C. 不共享任何數據成員,但每個對象還包含基類的所有屬性 D. 共享部分數據成員和函數成員 78當保護繼承時,基類的(B )在派生

27、類中成為保護成員,在類作用域外不能夠 A. int Function(void a) C. int Function(a) B. void Function (int) D. void int(double a) 通過派生類的對象來直接訪問該成員。 A. 任何成員 B. 公有成員和保護成員 C. 保護成員和私有成員 D. 私有成員 79 在關鍵字 private 后面定義的成員為類的( A )成員。 A. 私有 B. 公用 C. 保護 D. 任何 80函數原型語句正確的是( B )。 81在多文件結構的程序中,通常把含有main() 函數的文件稱為( A )。 A. 主文件 B. 實現文件 C

28、. 程序文件 D. 頭文件 82設有如下函數定義 int f(char *s) char *p=s 。 while(*p!= 0 ) p+ 。 return(p-s) 。 在主函數中用 coutf( “good” ) 調用上述函數 , 則輸出結果為( B )。 A. 3B. 4 C. 5 D. 6 83當類中一個字符指針成員指向具有n 個字節的存儲空間時,它所能存儲字符串的 最大長度為 ( C ) 。 A. nB. n+1 C. n-1 D. n-2 84若用數組名作為函數調用的實參, A. 數組的首地址 B. C. 數組全部元素的值 D. 85類的構造函數是在定義該類的一個 A. 成員函數

29、B. C. 對象 D. 86預處理命令在程序中都是以 A. *B. # C. &D. 87假定一個類的構造函數為 A x(4,5) 。”語句后, A. 4和 5 C. 4和 20 88假定有定義“ A. pb=b 。 C. *pb=new int 。 89當一個類對象離開它的作用域時,系統自動調用該類的 A. 無參構造函數B.帶參構造函數 C. 拷貝構造函數D.析構函數 x.a 和 x.b B. 5 傳遞給形參的是( A )。 數組中第一個元素的值 數組元素的個數 ( C ) 時被自動調用執行的。 數據成員 友元函數 ) 符號開頭的。 D. 20 int b10 。 int *pb B. pb

30、=&b0 D. pb=b5 D. A(int aa, int bb) a=aa 的值分別為 ( C ) 。 和4 和5 ”,則不正確的賦值語句為( 。 b=aa*bb 。 ”,則執行 D)。 90假定變量 b 和 pb 定義為“ int b10, *pb=b。”,要將 24 賦值給 b1 元素中, 不正確的語句是( C )。 A. *(pb+1)=24。 B. *(b+1)=24 。 C. *+b=24 。 D. *+pb=24 。 91對類中常量成員的初始化是通過構造函數中給出的( C ) 實現的。 A. 函數體 B. 參數表 C. 初始化表 D. 初始化表或函數體 92假定 AA 為一個類

31、, a 為該類公有的數據成員,若要在該類的一個成員函數中訪問 它,則書寫格式為( A )。 A. aB. AA:a C. a()D. AA:a() 93引入友元的主要目的是為了(C ) 。 A. 增強數據安全性 B. 提高程序的可靠性 C. 提高程序的效率和靈活性 D. 保證類的封裝性 94類中定義的成員默認為( B )訪問屬性。 A. publicB. private C. protectedD. friend 95關于運算符重載,下列說法正確的是(C )。 A. 重載時,運算符的優先級可以改變。 B. 重載時,運算符的結合性可以改變。 C. 重載時,運算符的功能可以改變。 D. 重載時,運

32、算符的操作數個數可以改變。 96. 如果是類B在類A的基礎上構造,那么,就稱( B )。 A. 類 A 為基類或父類,類 B 為超類或子類 B. 類A為基類、父類或超類,類B為派生類或子類 C. 類 A 為派生類,類 B 為基類 D. 類 A 為派生類或子類,類 B 為基類、父類或超類 97. 一個類的構造函數通常被定義為該類的( A ) 成員。 A.公用B.保護 C.私有D.友元 98. 假定一個類對象數組為An ,當離開它定義的作用域時,系統自動調用該類析構 函數的次數為 ( C ) 。 A. 0B. 1 C. nD. n-1 二、填空題 1. C+語言是在C語言的基礎上發展起來的。 2.

33、 假定x=10,則表達式 xa 。 30假定 x 是一個邏輯量,則 x & false 的值為 _0。 31若需要把一個字符串” aaa ”賦值到字符數組 a 中,則需要執行 _strcpy 函 數的調用來實現。 32假定 p 所指對象的值為 25, p+1 所指對象的值為 42,則執行 (*p)+ 運算后, p 所 指對象的值為 _26。 33.存儲字符a和字符串” a”分別需要占用_1和_2個字節。 34若“ double x=100 。”是文件 F1.CPP 中的一個全局變量定義語句,若文件 F2.CPP 中的某個函數需要訪問此 x , 則應在文件 F2.CPP 中添加對 x 的聲明語句

34、為 extern doule x。 。 35. 常數 100 和 3.62 的數據類型分別為 _int _和 _double 。 36. 全局變量和靜態局部變量具有靜態生存期,存放在內存的_全局數據 區中。 37. 假定一個二維數組為 c58 ,則 c3 的值為二維元素 _c30_ 的地址, c3+2 的值為二維元素 _c32的地址。 38. 假定對數組 a 進行初始化的數據為 2,7,9,6,5,7,10 ,則 a2 和 a5 分別被初 始化為 _9和7。 39. 函數形參的作用域是該函數的 _函數體 。 40. 若 a 是一個字符數組,則向屏幕輸出a 中所存字符串的表達式為 _couta

35、_。 41 .對于無返回值函數,定義函數時要用_void_ 修飾函數類型。 42. 假定 p 是一個指向整數對象的指針,則用_*p_表示該整數對象,用 _&p_表示 指針變量 p 的地址。 43. 一個數組的數組名實際上是指向該數組_第一個 _元素的指針,并且在任何時候都 不允許 _修改 _它。 44. 一個指針類型的對象占用內存的 _4_個字節的存儲空間。 45. 假定對二維數組 a34 進行初始化的數據為 3,5,6,2,8,7 ,則 a11 和 a23 分別被初始化為 _8_和_0 。 46. 局部變量具有局部生存期,存放在內存的_棧 區中。 47. 假定x是一個邏輯量,則!x | fa

36、lse 的值為_!x。 48. 若y是x的引用,貝U &y和&x的值相等_,即為變量_x的地址。 49. 假定 p 為指向二維數組 int d46 的指針,則 p 的類型為 _int(*)6。 50. 假定p所指對象的值為 25, p+1所指對象的值為 42,則執行*(p+)或*p+運算 后, p 所指對象的值為 _42。 51 .假定p是一個指針,則*p+運算首先訪問_*p _,然后使 p的值增1。 52特殊類的對象擁有其一般類的全部屬性與操作,稱特殊類_繼承 了一般類。 53假定用戶沒有給一個名為AB 的類定義構造函數,則系統為其定義的構造函數為 _AB() 。 54在函數模板的參數中,用

37、 class 修飾的參數稱為 _類型 參數。 55執行 _deletep 操作將釋放由 p 所指向的動態分配的數組空間。 56假定指向一維數組 b10 中元素 b4 的指針為 p ,則 p+3 所指向的元素為 _b7 , p-2 所指向的元素為 _b2 。 57假定 x=5, y=6 ,則執行表達式y+=x- 計算后, x 和 y 的值分別為 _4_和 _11。 58用于從鍵盤上為變量輸入值的標準輸入流對象是_cin_ 。 59若二維數組 a 有 m 列,設 a00 位于數組的第一個位置上,則計算任一元素 aij 在數組中位置序號的公式為 _i*m+j+1 。 60已知有定義“ int x,

38、a=5,7,9, *pa=a 。”,在執行“ x=+*pa 。”語句后, x 的值是 _6。 61執行 int p=new int 操作得到的一個動態分配的整型對象為_*p 。 62對于類中定義的任何成員,其隱含訪問權限為 _private 。 63為了避免在調用成員函數時修改對象中的任何數據成員,則應在定義該成員函數 時,在函數頭的后面加上 _const 關鍵字。 64如果一個派生類的基類不止一個,則這種繼承稱為 _多重繼承 。 65假定用戶沒有給一個名為AB 的類定義析構函數,則系統為其定義的析構函數為 _AB() 。 66若一個函數的定義處于調用它的函數之前,則在程序開始可以省去該函數的

39、_原型 語句。 67已知變量 a 定義為“ int a=5 。”,要使 ra 成為 a 的引用,則 ra 應定義為 _ int &ra=a 。 68對于結構中定義的任何成員,其隱含訪問權限為 _public_ 。 69已知語句“ couts 。”的輸出是“ apple ”,則執行語句“ coutname 等價的表達式是 (*p).name 。 三、程序填充 1斐波那契數列的第1 和第 2 個數分別為 0 和 1 ,從第三個數開始,每個數等于其 前兩個數之和。求斐波那契數列中的前 20個數,要求每行輸出 5 個數。 #include void main() int f,f1,f2,i 。 cou

40、t ” 斐波那契數列: n ”。 f1=0 。 f2=1 。 coutsetw(6)f1setw(6)f2 。 for(i=3 。i=20。i+) f=(1) 。 coutsetw(6)f。 if(2) coutendl。 f1=f2。 f2=(3) 。 coutendl 。 【答案】 (1) f1+f2(2) i%5=0(3) f 2在輸出屏幕上打印出一個由字符*組成的等腰三角形,該三角形的高為5 行, 從上到下每行的字符數依次為 1,3,5,7,9 。 #include void main() int i,j。 for(i=1。 _(1)_ 。 i+) for(j=1。 j=9 。 j+)

41、 if(j=5-i | _(2)_) cout。 else _(3)_。 coutendl。 【答案】 (1) i=5+i(3) cout* 3打印出 2 至 99 之間的所有素數 (即不能被任何數整除的數 )。 #include #include void main() int i,n for(n=2。 _(1)_ 。 n+) int temp=int(sqrt(n) 。 / 求出 n 的平方根并取整 for(i=2。 _(2)_ 。 i+) if(n%i=0) _(3)_。 if(itemp) coutn 。 coutn 。 【答案】 (1) n=99 (2) i=temp (3) bre

42、ak 4統計字符串中英文字母個數的程序。 #include int count (char str)。 void main() char s180 。 cout s1 cout ”count= ” count(s1)= _(2) _(3)_ 。 stri 。 i+) a & stri=A& stri= Z (2) num+ (3) return num 5采用輾轉相除法求出兩個整數的最大公約數。 #include void main() int a,b。 coutab 。 while(a=0 | _(1)_) coutab 。 while(b) int r。 r=a%b。 _(2)_。 _(3

43、)_ 。 / 分別修改 a 和 b 的值 coutaendl 。 / 輸出最大公約數 【答案】 (1) b=0 (2) a=b (3) b=r 6從鍵盤上輸入一個正整數,然后把它轉換成的二進制數的每一位存放到一維數組 中,最后輸出該二進制數。注意二進制數的存放是按照從低位到高位的次序進行的。 #include void main() int x。 coutx 。 int a20,k=0,r。 do r=x%2 。 ak+=r 。 x=_(1)_。 while(_(2)_)。 for(-k。 k=0。 k-) _(3)_ 。 coutendl 。 【答案】 (1) x/2 (2) x!=0 (3

44、) coutak 7假定有定義為“ struct NODEint data。 NODE* next 。 。”,下面算法根據 table 數組中的 n 個元素建立一個表頭指針為 L 的鏈表,鏈表中結點值的順序與數組元素 值的順序相同。 void f5(NODE*& L, int table, int n) if(nnext=_(2)_。 p-data=_(3)_。 i+ 。 p-next=NULL 。 / 把最后一個結點的指針域置空 p=L 。 L=L-next 。 / 使 L 指向鏈表的第一個帶值的結點 delete p 。 【答案】 (1) in (2) new NODE (3) table

45、i 8對數組 an 按升序進行的選擇排序算法 void SelectSort(int a, _(1)_) int i,j,k。 for(i=1。 in 。 i+) / 進行 n-1 次選擇和交換 k=i-1。 for(j=i。 jn 。 j+) if(ajak) _(2)_。 int x=ai-1 。 ai-1=ak 。 _(3)_ 。 【答案】 (1) int n(2) k=j (3) ak=x 9假定有定義為“struct NODEint data 。 NODE* next 。 。”,下面算法根據 table 數組中的 n 個元素建立一個表頭指針為 L 的鏈表,鏈表中結點值的順序與數組元素

46、 值的順序正好相反。 void f6(NODE*& L, int table, int n) L=NULL 。 if(ndata=_(2)_。 p-next=L。 _(3)_。 i+ 。 【答案】 (1) i=i & _(3)_)。 return p*a*b。 【答案】 (1) b%i=0 (2) i+ (或 +i)(3) b=i 11 class A char *a 。 public: _(1)_ /定義無參構造函數,使 a 的值為空 A(char *aa) a=_(2)_。 strcpy(a,aa) 。 / 用 aa 所指字符串初始化 a 所指向的動態存儲空間 _(3)_ /定義析構函數,

47、刪除 a 所指向的動態存儲空間 。 【答案】 (1) A() a=0 。 或 A():a(0) (2) new charstrlen(aa)+1 (3) A() delete a。 12已知一個類的定義如下: #include class AA int a10 。 int n 。 public: void SetA(int aa, int nn) 。 / 用數組 aa 初始化數據成員 a, / 用 nn 初始化數據成員 n int MaxA() 。 / 從數組 a 中前 n 個元素中查找最大值 void SortA() 。 / 采用選擇排序的方法對數組 a 中前 n 個元素 / 進行從小到大排

48、序 void InsertA() 。 / 采用插入排序的方法對數組 a 中前 n 個元素進行從小到大排 序 void PrintA() 。 / 依次輸出數組 a 中的前 n 個元素 / 最后輸出一個換行 。 使用該類的主函數如下: void main() int a10=23,78,46,55,62,76,90,25,38,42 AA x。 _(1)_。 int m=_(2)_。 _(3)_。 coutmendl 。 該程序運行結果為 : 23 78 46 55 62 76 78 答案】 (1) x.SetA(a,6) (2) x.MaxA() (3) x.PrintA() 13 class

49、A int a,b。 public: A(int aa=0, int bb=0) _(1)_ /分別用 aa 和 bb 對應初始化 a 和 b 。 main() _(2)_ 。 / 定義類 A 的對象 x 并用 5 初始化,同時定義 y 并用 x 初始化 _(3)_ 。 / 定義 p 指針,使之指向對象 x 【答案】 (1) :a(aa),b(bb) (2) A x(5),y(x) (3) A *p=&x 14 class Point private: int x, y。 public: Point()x=y=0 。 Point(int x0,int y0) x=x0。 y=y0 。 int

50、GetX() return x。 int GetY() return y。 void Print()coutPoint(x,y)endl 。 _(1)_。 / 友元函數聲明 _(2)_。 / 友元函數聲明 。 Point operator+(Point& pt,int dd) / 加號操作符重載函數,實現 Point 類對象與整數加法 Point temp=pt。 temp.x+=dd 。 temp.y+=dd 。 return temp Point operator+(Point& pt1,Point& pt2) / 加號操作符重載函數,實現兩個 Point 類對象的加法 Point tem

51、p=pt1 。 temp.x+=pt2.x 。 _(3)_。 return temp 。 【答案】 (1) friend Point operator+(Point& pt,int dd) (2) friend Point operator+(Point& pt1,Point& pt2) (3) temp.y+=pt2.y 15 class A int a,b 。 public: _(1)_ /定義構造函數,使參數 aa 和 bb 的默認值為 0, / 在函數體中用 aa 初始化 a ,用 bb 初始化 b 。 main() A *p1, *p2 。 _(2)_。 / 調用無參構造函數生成由

52、p1 指向的動態對象 _(3)_。 / 調用帶參構造函數生成由 p2 指向的動態對象, /使 a 和 b 成員分別被初始化為 4 和 5 【答案】 (1) A(int aa=0, int bb=0)a=aa。 b=bb 。 (2) p1=new A (3) p2= new A(4,5) 四、寫出程序運行結果 1 #include #include void main() int a8=25,48,32,85,64,18,48,29 。 int max,min。 max=min=a0 。 for(int i=0。 iai) max=ai。 if(xai) min=ai。 coutmax:maxe

53、ndl。 coutmin:minendl。 【答案】 max:85 min:18 2 #include #include int a4=36,-5,73,8 。 void main() int i,y。 for(i=0。 i4 。 i+) if(ai0) y=1 。 else if(ai10) y= ai* ai+3 o 。 / sqrt(x)為取 x 的平方根函數 else if(ai60) y=4*ai-5 else y=int(sqrt(ai) coutsetw(5)aisetw(5)y 【答案】 36 139 -5 173 88 67 3 #include void main() in

54、t a,b。 for(a=1,b=2。 b50 。 ) couta b a=a+b。 b=a+b。 coutendl 。 couta b endl 【答案】 1 2 3 5 8 13 21 34 55 89 4 #include void main() int a=2,b=5,c=0 if(a+b10) c=a*b 。 else c=3*a+b 。 if(c=20) coutc*c 。 else cout4+c-5 coutendl 。 a=a+b 。 b=a+b 。 c+=a+b 。 couta,b,c=a,b,cendl 【答案】 121 a,b,c=7,12,30 5 #include

55、const int M=3, N=4 。 void main() int i,j,s=0。 for(i=1。 i=M。 i+) for(j=1。j=N。j+) s+=i*j。 cout”s=”sendl 。 【答案】 s=60 6#include void main() for(int i=1,s=0。 i20 。 i+) if(i%2=0 | i%3=0) continue。 couti。 s+=i 。 coutsendl 。 【答案】 1 5 7 11 13 37 7#include const int N=3。 void main() int aNN=7,-5,3,2,8,-6,1,-4

56、,-2 int bNN=3,6,-9,2,-8,3,5,-2,-7 int i,j,cNN。 for(i=0 。 iN 。 i+) / 計算矩陣 C for(j=0。 jN 。 j+) cij=aij+bij。 for(i=0 。 iN 。 i+) / 輸出矩陣 C for(j=0 。 jN 。 j+) coutsetw(5)cij coutendl 。 【答案】 10 1 -6 4 0 -3 6 -6 -9 8 #include int a8=36,25,20,43,12,70,66,35 void main() int s0,s1,s2 。 s0=s1=s2=0 for(int i=0 。

57、 i8 。 i+) switch(ai%3) case 0: s0+=ai 。 break 。 case 1: s1+=ai 。 break 。 case 2: s2+=ai 。 break 。 s1 s2endl 。 couts0 【答案】 114 138 55 9 #include void main() int i,j。 for(i=0。 i5 。 i+) for(j=i。 j5 。 j+) cout coutendl 。 【答案】 * 10 #include void main() 。 else c=3*a+b 。 。 else cout10) c=a*b if(c=20) coutc

58、*c coutendl a=a+b 。 b=a+b c+=a+b。 couta,b,c=a,b,cendl 【答案】 121 a,b,c=7,12,30 11#include void main() int a8=36,25,48,14,55,40,50,24 int b1, b2 b1=b2=a0 for(int i=1 。 ib1) b2=b1 else if(aib2) b2=ai coutb1 b2endl 。 b1=ai 【答案】 55 50 12 #include void main() char s35=1234,abcd,+-*/ char *p3 for(int I=0 fo

59、r(I=2 coutendl 。 I=0。 I-) coutpI 【答案】 +-*/ abcd 1234 13 #include const int T=6 void main() int i,j for(i=1 。i=T。i+=2) for(j=2。 j=T 。 j+=2) if(i+jT) cout + else cout * 。 【答案】 +*+* 14 #include void main() int x=24,y=88 。 int i=2,p=1 。 do while(x%i=0 & y%i=0) p*=i。 x/=i。 y/=i。 i+ 。 while(x=i & y=i)。 co

60、utp*x*yendl 。 【答案】 264 15 #include const int N=5 。 void main() int i,p=1,s=0 。 for(i=1。 iN 。 i+) p=p*i。 s=s+p。 coutsetw(5)isetw(5)p coutsetw(5)sendl 【答案】 1 1 1 2 2 3 3 6 9 4 24 33 16 #include class CE private: int a,b。 int getmin() return (ab? a:b)。 public: int c。 void SetValue(int x1,int x2, int x3

溫馨提示

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

評論

0/150

提交評論