




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第 一 章 概述1-1 簡述計算機程序設計語言的發展歷程。解: 迄今為止計算機程序設計語言的發展經歷了機器語言、匯編語言、高級語言等階段,C+語言是一種面向對象的編程語言,也屬于高級語言。1-2 面向對象的編程語言有哪些特點?解: 面向對象的編程語言與以往各種編程語言有根本的不同,它設計的出發點就是為了能更直接的描述客觀世界中存在的事物以及它們之間的關系。面向對象的編程語言將客觀事物看作具有屬性和行為的對象,通過抽象找出同一類對象的共同屬性(靜態特征)和行為(動態特征),形成類。通過類的繼承與多態可以很方便地實現代碼重用,大大縮短了軟件開發周期,并使得軟件風格統
2、一。因此,面向對象的編程語言使程序能夠比較直接地反問題域的本來面目,軟件開發人員能夠利用人類認識事物所采用的一般思維方法來進行軟件開發。C+語言是目前應用最廣的面向對象的編程語言。1-3 什么是結構化程序設計方法?這種方法有哪些優點和缺點?解: 結構化程序設計的思路是:自頂向下、逐步求精;其程序結構是按功能劃分為若干個基本模塊;各模塊之間的關系盡可能簡單,在功能上相對獨立;每一模塊內部均是由順序、選擇和循環三種基本結構組成;其模塊化實現的具體方法是使用子程序。結構化程序設計由于采用了模塊分解與功能抽象,自頂向下、分而治之的方法,從而有效地將一個較復雜的程序系統設計任務分解成許多易于控
3、制和處理的子任務,便于開發和維護。 雖然結構化程序設計方法具有很多的優點,但它仍是一種面向過程的程序設計方法,它把數據和處理數據的過程分離為相互獨立的實體。當數據結構改變時,所有相關的處理過程都要進行相應的修改,每一種相對于老問題的新方法都要帶來額外的開銷,程序的可重用性差。由于圖形用戶界面的應用,程序運行由順序運行演變為事件驅動,使得軟件使用起來越來越方便,但開發起來卻越來越困難,對這種軟件的功能很難用過程來描述和實現,使用面向過程的方法來開發和維護都將非常困難。 1-4 什么是對象?什么是面向對象方法?這種方法有哪些特點?解: 從一般意義上講,對象是現實世界中
4、一個實際存在的事物,它可以是有形的,也可以是無形的。對象是構成世界的一個獨立單位,它具有自己的靜態特征和動態特征。面向對象方法中的對象,是系統中用來描述客觀事物的一個實體,它是用來構成系統的一個基本單位,由一組屬性和一組行為構成。面向對象的方法將數據及對數據的操作方法放在一起,作為一個相互依存、不可分離的整體-對象。對同類型對象抽象出其共性,形成類。類中的大多數數據,只能用本類的方法進行處理。類通過一個簡單的外部接口,與外界發生關系,對象與對象之間通過消息進行通訊。這樣,程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障。通過實現繼承與多態性,還可以大大提高程序的可重用性
5、,使得軟件的開發和維護都更為方便。面向對象方法所強調的基本原則,就是直接面對客觀存在的事物來進行軟件開發,將人們在日常生活中習慣的思維方式和表達方式應用在軟件開發中,使軟件開發從過分專業化的方法、規則和技巧中回到客觀世界,回到人們通常的思維。1-5 什么叫做封裝?解: 封裝是面向對象方法的一個重要原則,就是把對象的屬性和服務結合成一個獨立的系統單位,并盡可能隱蔽對象的內部細節。1-6 面向對象的軟件工程包括哪些主要內容?解: 面向對象的軟件工程是面向對象方法在軟件工程領域的全面應用,它包括面向對象的分析(OOA)、面向對象的設計(OOD)、面向對象的編程(OOP)、面向對象
6、的測試(OOT)和面向對象的軟件維護(OOSM)等主要內容。1-7 簡述計算機內部的信息可分為幾類?解: 計算機內部的信息可以分成控制信息和數據信息二大類;控制信息可分為指令和控制字兩類;數據信息可分為數值信息和非數值信息兩類。 1-8 什么叫二進制?使用二進制有何優點和缺點?解: 二進制是基數為2,每位的權是以2 為底的冪的進制,遵循逢二進一原則,基本符號為0和1。采用二進制碼表示信息,有如下幾個優點:1.易于物理實現;2.二進制數運算簡單;3.機器可靠性高;4.通用性強。其缺點是它表示數的容量較小,表示同一個數,二進制較其他進制需要更多的位數。1-9 請將以下
7、十進制數值轉換為二進制和十六進制補碼:(1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) (2)10 = (10)2 = (2)16(2) (9)10 = (1001)2 = (9)16(3) (93)10 = (1011101)2 = (5D)16(4) (-32)10 = (11100000)2 = (E0)16(5) (65535)10 = (11111111 11111111)2 = (FFFF)16(6) (-1)10 = (11111111 11111111)2 = (FFFF)161-10 請將以下數值轉換為十進
8、制:(1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2 (4)(7F)16 (5)(2D3E)16 (6)(F10E)16解: (1)(1010)2 = (10)10(2)(10001111)2 = (143)10(3)(01011111 11000011)2 = (24515)10(4)(7F)16 = (127)10(5)(2D3E)16 = (11582)10(6)(F10E)16 = (61710)101-11 簡要比較原碼、反碼、補碼等幾種編碼方法。解: 原碼:將符號位數字化為 0 或 1,數的絕對值與符號
9、一起編碼,即所謂"符號絕對值表示"的編碼。正數的反碼和補碼與原碼表示相同。負數的反碼與原碼有如下關系:符號位相同(仍用1表示),其余各位取反(0變1,1變0)。補碼由該數反碼的最末位加1求得。 第 二 章 C+簡單程序設計2-1 C+語言有那些主要特點和優點?解: C+語言的主要特點表現在兩個方面,一是全面兼容C,二是支持面向對象的方法。C+是一個更好的C,它保持了C的簡潔、高效、接近匯編語言、具有良好的可讀性和可移植性等特點,對C的類型系統進行了改革和擴充,因此C+比C更安全,C+的編譯系統能
10、檢查出更多的類型錯誤。 C+語言最重要的特點是支持面向對象。2-2 下列標識符哪些是合法的?Program, -page, _lock, test2, 3in1, mail, A_B_C_D解: Program, _lock, test2, A_B_C_D是合法的標識符,其它的不是。2-3 例2.1中每條語句的作用是什么?#include <iostream.h>void main(void)cout<<"Hello!n"cout<<"Welcome to c+!n"解: #include <
11、iostream.h> /指示編譯器將文件iostream.h中的代碼/嵌入到該程序中該指令所在的地方void main() /主函數名,void 表示函數沒有返回值 /函數體標志cout<<"Hello!n" /輸出字符串Hello!到標準輸出設備(顯示器)上。cout<<"Welcome to c+!n" /輸出字符串Welcome to c+!在屏幕輸出如下:Hello!Welcome to c+!2-4 使用關鍵字const而不是#define語句的好處有哪些?解: const定義的常量是有類型的,所以在使
12、用它們時編譯器可以查錯;而且,這些變量在調試時仍然是可見的。2-5 請寫出C+語句聲明一個常量PI,值為3.1416;再聲明一個浮點型變量a,把PI的值賦給a。解: const float PI = 3.1416;float a = PI;2-6 在下面的枚舉類型中,Blue的值是多少?enum COLOR WHITE, BLACK = 100, RED, BLUE, GREEN = 300 ;解: Blue = 1022-7 注釋有什么作用?C+中有哪幾種注釋的方法?他們之間有什么區別?解: 注釋在程序中的作用是對程序進行注解和說明,以便于閱讀。編譯系統在對源程
13、序進行編譯時不理會注釋部分,因此注釋對于程序的功能實現不起任何作用。而且由于編譯時忽略注釋部分,所以注釋內容不會增加最終產生的可執行程序的大小。適當地使用注釋,能夠提高程序的可讀性。在C+中,有兩種給出注釋的方法:一種是延用C語言方法,使用"/*"和"*/"括起注釋文字。另一種方法是使用"/",從"/"開始,直到它所在行的行尾,所有字符都被作為注釋處理。2-8 什么叫做表達式?x = 5 + 7是一個表達式嗎?它的值是多少?解: 任何一個用于計算值的公式都可稱為表達式。x = 5 + 7是一個表達式,它的
14、值為12。2-9 下列表達式的值是多少?1. 201 / 42. 201 % 43. 201 / 4.0解: 1 502 13 50.252-10 執行完下列語句后,a、b、c三個變量的值為多少?a = 30;b = a+;c = +a;解: a:32 ; b:30 ; c:32;2-11 在一個for循環中,可以初始化多個變量嗎?如何實現?解: 在for循環設置條件的第一個""前,用,分隔不同的賦值表達式。例如:for (x = 0, y = 10; x < 100; x+, y+)2-12 執行完下列語句后,n的值為多少?int n;
15、for (n = 0; n < 100; n+)解: n的值為1002-13 寫一條for語句,計數條件為n從100到200,步長為2;然后用while和dowhile語句完成同樣的循環。解: for循環:for (int n = 100; n <= 200; n += 2); while循環:int x = 100;while (n <= 200)n += 2; dowhile循環:int n = 100;don += 2; while(n <= 200);2-14 if ( x = 3 ) 和 if (x = = 3) 這兩條
16、語句的差別是什么?解: 語句if(x = 3)把3賦給x,賦值表達式的值為true,作為if語句的條件;語句if(x = 3)首先判斷x的值是否為3,若相等條件表達式的值為ture,否則為false。2-15 什么叫做作用域?什么叫做局部變量?什么叫做全局變量,如何使用全局變量? 解: 作用域是一個標識符在程序正文中有效的區域。局部變量,一般來講就是具有塊作用域的變量;全局變量,就是具有文件作用域的變量。 2-16 已知x、y兩個變量,寫一條簡單的if語句,把較小的的值賦給原本值較大的變量。解: if (x > y)x = y;else
17、/ y > x | y = xy = x;2-17 修改下面這個程序中的錯誤,改正后它的運行結果是什么?#include <iostream.h>void main()int iint j;i = 10; /* 給i賦值j = 20; /* 給j賦值 */cout << "i + j = << i + j; /* 輸出結果 */return 0;解: 改正:#include <iostream.h>int main()int i;int j;i = 10; / 給i賦值j = 20; /* 給j賦值 */cout <
18、;< "i + j = " << i + j; /* 輸出結果 */return 0;程序運行輸出:i + j = 302-18 編寫一個程序,運行時提示輸入一個數字,再把這個數字顯示出來。解: 源程序:#include <iostream.h> int main()int i;cout << "請輸入一個數字:"cin >> i;cout << "您輸入一個數字是" << i << endl;return 0;程序運行輸出:
19、請輸入一個數字:5您輸入一個數字是52-19 C+有哪幾種數據類型?簡述其值域。編程顯示你使用的計算機中的各種數據類型的字節數。解: 源程序:#include <iostream.h> int main()cout << "The size of an int is:tt" << sizeof(int) << " bytes.n"cout << "The size of a short int is:t" << sizeof(short) &l
20、t;< " bytes.n"cout << "The size of a long int is:t" << sizeof(long) << " bytes.n"cout << "The size of a char is:tt" << sizeof(char) << " bytes.n"cout << "The size of a float is:tt" << sizeo
21、f(float) << " bytes.n"cout << "The size of a double is:t" << sizeof(double) << " bytes.n"return 0;程序運行輸出:The size of an int is: 4 bytes.The size of a short int is: 2 bytes.The size of a long int is: 4 bytes.The size of a char is: 1 bytes.The size
22、 of a float is: 4 bytes.The size of a double is: 8 bytes.2-20 打印ASCII碼為32127的字符。解: #include <iostream.h>int main()for (int i = 32; i<128; i+)cout << (char) i;return 0;程序運行輸出:!"#$%G'()*+,./0123456789:;<>?ABCDEFGHIJKLMNOP_QRSTUVWXYZ'abcdefghijklmnopqrstuvwxyz<
23、|>s2-21 運行下面的程序,觀察其輸出,與你的設想是否相同?#include <iostream.h>int main()unsigned int x;unsigned int y = 100;unsigned int z = 50;x= y - z;cout << "Difference is: " << x;x = z - y;cout << "nNow difference is: " << x <<endl;return 0;解: 程序運行輸出:Diffe
24、rence is: 50Now difference is: 4294967246注意,第二行的輸出并非 -50,注意x、y、z的數據類型。2-22 運行下面的程序,觀察其輸出,體會i+與+i的差別。#include <iostream.h>int main()int myAge = 39; / initialize two integersint yourAge = 39;cout << "I am: " << myAge << " years old.n"cout << "You
25、are: " << yourAge << " years oldn"myAge+; / postfix increment+yourAge; / prefix incrementcout << "One year passes.n"cout << "I am: " << myAge << " years old.n"cout << "You are: " << yourAge <<
26、; " years oldn"cout << "Another year passesn"cout << "I am: " << myAge+ << " years old.n"cout << "You are: " << +yourAge << " years oldn"cout << "Let's print it again.n"cout <
27、< "I am: " << myAge << " years old.n"cout << "You are: " << yourAge << " years oldn"return 0;解: 程序運行輸出:I am 39 years oldYou are 39 years oldOne year passesI am 40 years oldYou are 40 years oldAnother year passesI am 40 yea
28、rs oldYou are 41 years oldLet's print it againI am 41 years oldYou are 41 years old2-23 什么叫常量?什么叫變量?解: 所謂常量是指在程序運行的整個過程中其值始終不可改變的量,除了用文字表示常量外,也可以為常量命名,這就是符號常量;在程序的執行過程中其值可以變化的量稱為變量,變量是需要用名字來標識的。2-24 變量有哪幾種存儲類型?解: 變量有以下幾種存儲類型:auto存儲類型:采用堆棧方式分配內存空間,屬于一時性存儲,其存儲空間可以被若干變量多次覆蓋使用; regist
29、er存儲類型:存放在通用寄存器中;extern存儲類型:在所有函數和程序段中都可引用;static存儲類型:在內存中是以固定地址存放的,在整個程序運行期間都有效。2-25 寫出下列表達式的值:1. 2 < 3 && 6 < 92. ! ( 4<7 )3. ! ( 3 > 5) | (6 < 2 )解: 1. true2. false3. true2-26 若a = 1,b = 2,c = 3,下列各式的結果是什么?1. a | b - c2. a b & -c3. a & b | c4. a | b & c解:
30、160;1 -12 13 34 32-27 若a = 1,下列各式的結果是什么?1. ! a | a2. a | a3. a a4. a >> 2解: 1 12 -13 04 02-28 編寫一個完整的程序,實現功能:向用戶提問"現在正在下雨嗎?",提示用戶輸入Y或N。若輸入為Y,顯示"現在正在下雨。"; 若輸入為N,顯示"現在沒有下雨。";否則繼續提問"現在正在下雨嗎?"解: 源程序:#include <iostream.h>#include <stdlib.h&
31、gt; void main()char flag;while(1)cout << "現在正在下雨嗎?(Yes or No):"cin >> flag;if ( toupper(flag) = 'Y')cout << "現在正在下雨。"break;if ( toupper(flag) = 'N')cout << "現在沒有下雨。"break;程序運行輸出:現在正在下雨嗎?(Yes or No):x現在正在下雨嗎?(Yes or No):l現在正在下
32、雨嗎?(Yes or No):q現在正在下雨嗎?(Yes or No):n現在沒有下雨?;颍含F在正在下雨嗎?(Yes or No):y現在正在下雨。2-29 編寫一個完整的程序,運行時向用戶提問"你考試考了多少分?(0100)",接收輸入后判斷其等級,顯示出來。規則如下:解: #include <iostream.h> void main()int i,score;cout << "你考試考了多少分?(0100):"cin >> score;if (score>100 | score<0
33、)cout << "分數值必須在0到100之間!"elsei = score/10;switch (i)case 10:case 9:cout << "你的成績為優!"break;case 8:cout << "你的成績為良!"break;case 7:case 6:cout << "你的成績為中!"break;default:cout << "你的成績為差!" 程序運行輸出:你考試考了多少分?(0100):85你的成績為良!
34、2-30 (1)實現一個簡單的菜單程序,運行時顯示"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時分別提示"數據已經增加、刪除、排序。"輸入為Q時程序結束。要求使用if else語句進行判斷,用break、continue控制程序流程。解: #include <iostream.h>#include <stdlib.h> void main()char choice,c;while(
35、1)cout << "Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"cin >> c;choice = toupper(c);if (choice = 'A')cout << "數據已經增加. " << endl;continue;else if (choice = 'D')cout << "數據已經刪除. " << endl;continue;else if (choice = &
36、#39;S')cout << "數據已經排序. " << endl;continue;else if (choice = 'Q')break;程序運行輸出:Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a數據已經增加. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d數據已經刪除. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s數據已經排序. Menu:
37、 A(dd) D(elete) S(ort) Q(uit), Select one:q (2)實現一個簡單的菜單程序,運行時顯示"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時分別提示"數據已經增加、刪除、排序。"輸入為Q時程序結束。要求使用Switch語句。解: 源程序:#include <iostream.h>#include <stdlib.h> void main(
38、)char choice;while(1)cout << "Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"cin >> choice;switch(toupper(choice)case 'A':cout << "數據已經增加. " << endl;break;case 'D':cout << "數據已經刪除. " << endl;break;case 'S':cou
39、t << "數據已經排序. " << endl;break;case 'Q':exit(0);break;default:;程序運行輸出:Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a數據已經增加. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d數據已經刪除. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s數據已經排序. Menu: A(dd) D(elet
40、e) S(ort) Q(uit), Select one:q2-31 用窮舉法找出1100間的質數,顯示出來。分別使用while,do-while,for循環語句實現。解: 源程序: 使用while循環語句:#include <iostream.h>#include <math.h> void main()int i,j,k,flag;i = 2;while(i <= 100)flag = 1;k = sqrt(i);j = 2;while (j <= k)if(i%j = 0)flag = 0;break;j+;if (fla
41、g)cout << i << "是質數." << endl;i+; 使用dowhile循環語句:#include <iostream.h>#include <math.h> void main()int i,j,k,flag;i = 2;doflag = 1;k = sqrt(i);j = 2;doif(i%j = 0)flag = 0;break;j+;while (j <= k);if (flag)cout << i << "是質數." &l
42、t;< endl;i+;while(i <= 100); 使用for循環語句:#include <iostream.h>#include <math.h> void main()int i,j,k,flag;for(i = 2; i <= 100; i+)flag = 1;k = sqrt(i);for (j = 2; j <= k; j+)if(i%j = 0)flag = 0;break;if (flag)cout << i << "是質數." << endl;程序運
43、行輸出:2是質數.3是質數.5是質數.7是質數.11是質數.13是質數.17是質數.19是質數.23是質數.29是質數.31是質數.37是質數.41是質數.43是質數.47是質數.53是質數.59是質數.61是質數.67是質數.71是質數.73是質數.79是質數.83是質數.89是質數.97是質數.2-32 比較Break語句與Continue語句的不同用法。解: Break使程序從循環體和switch語句內跳出,繼續執行邏輯上的下一條語句,不能用在別處;continue 語句結束本次循環,接著開始判斷決定是否繼續執行下一次循環; 2-33 定義一個
44、表示時間的結構體,可以精確表示年、月、日、小時、分、秒;提示用戶輸入年、月、日、小時、分、秒的值,然后完整地顯示出來。 解: 源程序見"實驗指導"部分實驗二2-34 在程序中定義一個整型變量,賦以1100的值,要求用戶猜這個數,比較兩個數的大小,把結果提示給用戶,直到猜對為止。分別使用while、dowhile語句實現循環。解: /使用while語句#include <iostream.h> void main() int n = 18;int m = 0;while(m != n) cout <<
45、"請猜這個數的值為多少?(0100):"cin >> m;if (n > m)cout << "你猜的值太小了!" << endl;else if (n < m)cout << "你猜的值太大了!" << endl;elsecout << "你猜對了!" << endl;/使用dowhile語句#include <iostream.h> void main() int n = 18;int m =
46、0;docout << "請猜這個數的值為多少?(0100):"cin >> m;if (n > m)cout << "你猜的值太小了!" << endl;else if (n < m)cout << "你猜的值太大了!" << endl;elsecout << "你猜對了!" << endl;while(n != m); 程序運行輸出:請猜這個數的值為多少?(0100):50你猜的值太大了!請猜這
47、個數的值為多少?(0100):25你猜的值太大了! 請猜這個數的值為多少?(0100):10你猜的值太小了!請猜這個數的值為多少?(0100):15你猜的值太小了!請猜這個數的值為多少?(0100):18你猜對了! 2-35 定義枚舉類型weekday,包括Sunday到Saturday七個元素在程序中定義weekday類型的變量,對其賦值,定義整型變量,看看能否對其賦weekday類型的值。解: #include <iostream.h> enum weekdaySunday,Monday,Tuesday,Wedne
48、sday,Thursday,Friday,Saturday; void main()int i;weekday d = Thursday;cout << "d = " << d << endl;i = d;cout << "i = " << i << endl;d = (weekday)6;cout << "d = " << d << endl;d = weekday( 4 );cout << "
49、d = " << d << endl; 程序運行輸出:d = 4i = 4d = 6d = 4 第三章 函數3-1 C+中的函數是什么?什么叫主調函數,什么叫被調函數,二者之間有什么關系?如何調用一個函數? 解: 一個較為復雜的系統往往需要劃分為若干子系統,高級語言中的子程序就是用來實現這種模塊劃分的。C和C+語言中的子程序就體現為函數。調用其它函數的函數被稱為主調函數,被其它函數調用的函數稱為被調函數。一個函數很可能既調用別的函數又被另外的函數調用,這樣它可能
50、在某一個調用與被調用關系中充當主調函數,而在另一個調用與被調用關系中充當被調函數。調用函數之前先要聲明函數原型。按如下形式聲明:類型標識符 被調函數名 (含類型說明的形參表);聲明了函數原型之后,便可以按如下形式調用子函數:函數名(實參列表)3-2 觀察下面程序的運行輸出,與你設想的有何不同?仔細體會引用的用法。源程序:#include <iostream.h> int main()int intOne;int &rSomeRef = intOne;intOne = 5;cout << "intOne:tt" << in
51、tOne << endl;cout << "rSomeRef:t" << rSomeRef << endl;int intTwo = 8;rSomeRef = intTwo; / not what you think!cout << "nintOne:tt" << intOne << endl;cout << "intTwo:tt" << intTwo << endl;cout << "rSom
52、eRef:t" << rSomeRef << endl;return 0;程序運行輸出:intOne: 5rSomeRef: 5intOne: 8intTwo: 8rSomeRef: 83-3 比較值調用和引用調用的相同點與不同點。解: 值調用是指當發生函數調用時,給形參分配內存空間,并用實參來初始化形參(直接將實參的值傳遞給形參)。這一過程是參數值的單向傳遞過程,一旦形參獲得了值便與實參脫離關系,此后無論形參發生了怎樣的改變,都不會影響到實參。引用調用將引用作為形參,在執行主調函數中的調用語句時,系統自動用實參來初始化形參。這樣形參就成為實參的一個
53、別名,對形參的任何操作也就直接作用于實參。3-4 什么叫內聯函數?它有哪些特點?解: 定義時使用關鍵字 inline的函數叫做內聯函數;編譯器在編譯時在調用處用函數體進行替換,節省了參數傳遞、控制轉移等開銷;內聯函數體內不能有循環語句和switch語句;內聯函數的定義必須出現在內聯函數第一次被調用之前;對內聯函數不能進行異常接口聲明;3-5 函數原型中的參數名與函數定義中的參數名以及函數調用中的參數名必須一致嗎?解: 不必一致,所有的參數是根據位置和類型而不是名字來區分的。 3-6 重載函數時通過什么來區分?解: 重載的函數的函數名是相同的,但它們的參數
54、的個數和數據類型不同,編譯器根據實參和形參的類型及個數的最佳匹配,自動確定調用哪一個函數。3-7 編寫函數,參數為兩個unsigned short int型數,返回值為第一個參數除以第二個參數的結果,數據類型為short int;如果第二個參數為0,則返回值為-1。在主程序中實現輸入輸出。解: 源程序:#include <iostream.h>short int Divider(unsigned short int a, unsigned short int b)if (b = 0)return -1;elsereturn a/b;typedef unsigned sho
55、rt int USHORT;typedef unsigned long int ULONG;int main()USHORT one, two;short int answer;cout << "Enter two numbers.n Number one: "cin >> one;cout << "Number two: "cin >> two;answer = Divider(one, two);if (answer > -1)cout << "Answer: "
56、<< answer;elsecout << "Error, can't divide by zero!"return 0;程序運行輸出:Enter two numbers.Number one:8Number two:2Answer: 43-8 編寫函數把華氏溫度轉換為攝氏溫度,公式為:C = (F - 32) * 5/9; 在主程序中提示用戶輸入一個華氏溫度,轉化后輸出相應的攝氏溫度。解: 源程序見"實驗指導"部分實驗三3-9 編寫函數判斷一個數是否是質數,在主程序中實現輸入、輸出。解: #inclu
57、de <iostream.h>#include <math.h>int prime(int i); /判一個數是否是質數的函數void main()int i;cout << "請輸入一個整數:"cin >> i;if (prime(i)cout << i << "是質數." << endl;elsecout << i << "不是質數." << endl;int prime(int i)int j,k,flag;f
58、lag = 1;k = sqrt(i);for (j = 2; j <= k; j+)if(i%j = 0)flag = 0;break;if (flag)return 1;elsereturn 0;程序運行輸出:請輸入一個整數:11511151是質數.3-10 編寫函數求兩個整數的最大公約數和最小公倍數。解: 源程序:#include <iostream.h>#include <math.h>int fn1(int i,int j); /求最大公約數的函數void main()int i,j,x,y;cout << "請輸入一個正
59、整數:"cin >> i ;cout << "請輸入另一個正整數:"cin >> j ;x = fn1(i,j);y = i * j / x;cout << i << "和" << j << "的最大公約數是:" << x << endl;cout << i << "和" << j << "的最小公倍數是:" << y
60、<< endl;int fn1(int i, int j)int temp;if (i < j)temp = i;i = j;j = i;while(j != 0)temp = i % j;i = j;j = temp;return i;程序運行輸出:請輸入一個正整數:120請輸入另一個正整數:72120和72的最大公約數是:24120和72的最小公倍數是:3603-11 什么叫作嵌套調用?什么叫作遞歸調用?解: 函數允許嵌套調用,如果函數1調用了函數2,函數2再調用函數3,便形成了函數的嵌套調用。函數可以直接或間接地調用自身,稱為遞歸調用。3-12 在主程序中提示
61、輸入整數n,編寫函數用遞歸的方法求1 + 2 + + n的值。解: #include <iostream.h>#include <math.h>int fn1(int i);void main()int i;cout << "請輸入一個正整數:"cin >> i ;cout << "從1累加到" <<i << "的和為:" << fn1(i) << endl;int fn1(int i)if (i = 1)return
62、 1;elsereturn i + fn1(i -1);程序運行輸出: 請輸入一個正整數:100從1累加到100的和為:50503-13 編寫遞歸函數GetPower(int x, int y)計算x的y次冪, 在主程序中實現輸入輸出。解: 源程序:#include <iostream.h>long GetPower(int x, int y);int main()int number, power;long answer;cout << "Enter a number: "cin >> number;cout <
63、;< "To what power? "cin >> power;answer = GetPower(number,power);cout << number << " to the " << power << "th power is " <<answer << endl;return 0;long GetPower(int x, int y)if(y = 1)return x;elsereturn (x * GetPower(x,y-1);程
64、序運行輸出:Enter a number: 3To what power? 43 to the 4th power is 813-14 用遞歸的方法編寫函數求Fibonacci 級數,公式為fib(n) = fib(n-1) + fib(n-2),n>2; fib(1) = fib(2) = 1;觀察遞歸調用的過程。解: 源程序見"實驗指導"部分實驗三3-15 用遞歸的方法編寫函數求n階勒讓德多項式的值,在主程序中實現輸入、輸出;解: #include <iostream.h>float p(int n, int x);void main()int n,x;cout << "請輸入正整數n:"cin >> n;cout << "請輸入正整數x:"cin >> x;cout << "n = " << n << endl;cout << "x = " << x << endl;cout << "P" << n << &quo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年微生物標本運輸要求試題及答案
- 電視設備智能生物樣本庫技術考核試卷
- 皮革服裝企業競爭策略制定考核試卷
- 2025年金屬非金屬礦山支柱證考試題及答案
- 2024年項目管理考試考點試題及答案
- 企業融資方式的財務分析試題及答案
- 汽車配件連鎖經營理念考核試卷
- 2024年行政管理師考試相關課程的試題及答案
- 2024年項目管理知識展示試題及答案
- 核安全事故分析與整改建議考核試卷
- 發熱病人中醫護理
- 捕鼠公司合同協議
- 工程審計面試題及答案
- 安置房收樓合同協議
- 2025-2030中國煤化工行業發展分析及投資風險與戰略研究報告
- 病歷書寫規范2025版
- 2025-2030中國養老服務行業市場深度調研及前景趨勢與投資研究報告
- 洗滌機械生產過程質量控制考核試卷
- 畫龍點睛成語故事
- (一模)2025年廣東省高三高考模擬測試 (一) 歷史試卷(含官方答案及詳解)
- 湖北省武漢市七一華源中學2024-2025學年九年級下學期第二次月考化學試題(含答案)
評論
0/150
提交評論