2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩340頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、03:02:51,1,C ++ 程序設(shè)計教程(第二版),第二章 基本編程語句 Chapter 2 Basic Programming Statements,清華大學(xué)出版社 錢 能,03:02:51,2,第二章內(nèi)容,說明語句 ( Declarative Statements ) 條件語句 (Condition Statements ) 循環(huán)語句 ( Loop Statements ) 循環(huán)設(shè)計(Loop Designs )輸

2、入輸出語句( Input/Output Statements ) 轉(zhuǎn)移語句 ( Move Statements ) 再做循環(huán)設(shè)計(More Loop Designs ),03:02:51,3,1. 說明語句 ( Declarative Statements ),數(shù)據(jù)說明:求解問題所使用的數(shù)據(jù)是什么性質(zhì),進行什么運算,表達范圍如何,必須預(yù)先說明說明方式: 既要指明其名字,也要指明其是什么類型,還可以順便初始化.如: int

3、 a; double d = 3.5;說明數(shù)據(jù)的另一個目的是創(chuàng)建一個所需大小的實體空間給該名字,以便存儲所用的數(shù)據(jù)值若數(shù)據(jù)名字沒有說明,使用其便是非法的,03:02:51,4,過程(函數(shù))說明: 求解中需要通過函數(shù)調(diào)用來實施求解時,便要對函數(shù)的性質(zhì)進行說明,說明其返回類型,參數(shù)類型,參數(shù)個數(shù)函數(shù)說明分函數(shù)聲明和函數(shù)定義兩種: 函數(shù)聲明是說明函數(shù)的名字,函數(shù)的返回類型,以及函數(shù)的參數(shù)和個數(shù).如: double are

4、a(double ra); 函數(shù)定義是在函數(shù)聲明的基礎(chǔ)上,對整個實現(xiàn)過程進行詳細定義.如: double area(double ra){ return ra*ra*3.14; },03:02:51,5,調(diào)用函數(shù)就是使用函數(shù)名字,使用名字前必須清楚名字的性質(zhì),所以必須先對函數(shù)進行聲明.運行程序中,會涉及到被調(diào)用函數(shù)的執(zhí)行,所以凡是被調(diào)用的函數(shù)都必須有函數(shù)定義,不管該定義在程序的什么位置.如: double sp

5、here(); // 聲明 int main(){ double result = sphere(); // 調(diào)用 cout>r; return r*r*3.14; },03:02:51,6,2. 條件語句(Condition Statements ),if語句的兩種形態(tài):,,語句1,條件,,,,,,語句1,條件,,,,語句2,,,,,,是,是,否,否,03:02:51,7,對應(yīng)語句: if(a>

6、;b) cout<<a<<endl; if(a==b) cout<<a<<endl; else cout<<b<<endl;,03:02:51,8,錯綜復(fù)雜時,必須注意兩義性: if(x>0) if(x<50) cout<<”x is ok.\n”; else cout<<”x is not ok

7、.\n”;,正解:else從屬于緊挨的if if(x>0){ if(x < 50) cout<<”O(jiān)K\n”; else cout<<”NOT OK\n”; },誤解:else從屬于外面的if if(x>0){ if(x < 50) cout<<”O(jiān)K\n”; }else cout<<”NOT OK\n”

8、;,03:02:51,9,條件表達式:對于 if(x) a = 327981; else b = 327981;可表示為: x ? a=327981 : b=327981;如果a和b為同類型,則還可以: (x?a:b) = 327981;,03:02:51,10,switch多分支語句: switch(整數(shù)表達式){ case value1: 語句1; break; case value2: 語

9、句2; break; … default: 語句n; }等價于: if(整數(shù)表達式==value1) 語句1; else if(整數(shù)表達式==value2) 語句2; … else 語句n; },03:02:51,11,雖然switch有等價的復(fù)合if表示, 而且,分支判斷值只能是整數(shù),顯得應(yīng)用范圍狹窄, 但是switch在使用上的直觀和靈活形式, 使得其仍具有編程價值. 如:break

10、可選,甚至case可以重疊: case value1: 語句1; case value2: 語句2; case v1: case v2: case v3: 語句;,03:02:51,12,3. 循環(huán)語句 ( Loop Statements ),for循環(huán)結(jié)構(gòu):,03:02:51,13,對應(yīng)語句為: for(int i=1; i<=10; i++) cout<<”h

11、ello.\n”;,,,,,循環(huán)初始狀態(tài),條件判斷,狀態(tài)修正,循環(huán)體,03:02:51,14,每次循環(huán)體執(zhí)行,都改變循環(huán)狀態(tài),直到條件不滿足而終止.如,設(shè)置求和的初始值,交給循環(huán)計算,完成循環(huán)后,輸出求和結(jié)果:int sum = 0;for(int i=1; i<=100; i++){ sum = sum+i;}cout<<sum<<endl;,循環(huán)開始,循環(huán)結(jié)束,03:02:51,15

12、,因為并不是所有循環(huán)都有明顯的循環(huán)初始狀態(tài)和狀態(tài)修正的,所以,while循環(huán)是一種for循環(huán)的簡潔形式.如,同樣的求和:int sum=0, i=1;while(i<=100) sum += i++;cout<<sum<<endl;,循環(huán)開始,循環(huán)結(jié)束,03:02:51,16,4. 循環(huán)設(shè)計 ( Loop Designs ),(1)簡單字符圖形的雙重循環(huán)MMMMMMMMMMM

13、MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,03:02:51,17,分析方法:該圖形一共10行,每一行增加一個字符,所以,應(yīng)循環(huán)10次,每次輸出一行,其循環(huán)模式為:for(int i=1; i<=10; ++i){ 輸出第i行(循環(huán)) 換行}行 i M個數(shù) 1 1 1 2 2 2 3

14、 3 3 4 4 4...10 10 10,03:02:51,18,for(int i=1; i<=10; ++i){ for(int j=1; j<=i; ++j) cout<<”M”; cout<<endl;},03:02:51,19,(2)判斷素數(shù):(利用數(shù)學(xué)定律)m=i×j 假定i≤j, 則

15、 i2≤i×j=m≤j2 即 i2≤m≤j2 即 i≤√m≤j bool isPrime(int m){ double sqm=sqrt(m*1.0); for(int i=2; i<=sqm; ++i) if(m%i==0) return false; return true; },,03:02:51,20,5. 輸入輸出語句( Input/Output S

16、tatements ),標準輸出流:可以控制輸出格式cout3)3); // 0 falsecout<<fixed<<12345.678; // 12345.678000cout<<scientific<<123456.678; // 1.234568e+05,03:02:51,21,控制寬度和填充字符的操

17、作是帶參數(shù)的,注意width(n)為一次性操作,即第二次顯示時將不再有效。默認為width(0),表示僅顯示數(shù)值。例如:cout.width(5);cout.fill(‘S’);cout…cout<<setw(6)<<setfill(‘$’)<<27<<endl; // 輸出: $$$$27,03:02:51,22,文件流的輸入出操作與標準輸入出基本相同,只是需要以一定

18、方式打開和關(guān)閉如,將文件a.in打開,逐行讀入字符,輸出到文件a.out: ifstream in(“a.in”); ofstream out(“a.out”); for(string s; getline(in, s); ) out<<s<<endl;其中文件流讀入操作總是伴隨著狀態(tài)返回,判斷狀態(tài)就可以確定文件是否正常讀入,如getline(in,s)當(dāng)讀到文件尾時,便返回false,以使

19、循環(huán)結(jié)束,03:02:51,23,6. 轉(zhuǎn)移語句 ( Move Statements ),break除了用在switch之外,主要的是用在終結(jié)本次循環(huán)for(int i; ; ){ for( ; ; ) { // ... if(i==1) break; // ... } a=1; // ...},break跳到此處,03:02:51,24,continue一般是用條件判斷執(zhí)

20、行的,通過反條件,可以免去continue的使用,所以,它用來構(gòu)筑良好的程序風(fēng)格 for(int n=100; n<=200; ++n) { if(n%3==0) continue; cout<<n<<endl; }免去continue的情形: for(int n=100; n<=200; ++n) if(n%3!=0) cout

21、<<n<<endl;,03:02:51,25,goto的程序段除了系統(tǒng)跟蹤和架構(gòu)困難外,閱讀也相對復(fù)雜: int a; goto Init; Forward: a = a + 1; Print: cout<<a<<endl; goto Down; Init: a = 1; goto Print; Down:

22、 if(a<100) goto Forward;等價于: for(int i=1; i<=100; ++i) cout<<i<<“\n”;,03:02:51,26,break語句的可取之處:// 用break語句的代碼段bool flag=false; // 用于做退出記號for(int i=1; i<100; ++i){ for(int j=1

23、; j<100; ++j) if(i*j==651){ flag=true; break; }else{ // ... } if(flag) break;}// goto語句的代碼段for(int i=1; i<100; ++i)for(int j=1; j<100; ++j){ if(i*j==651) goto End; // ...

24、}End:,03:02:51,27,7. 再做循環(huán)設(shè)計( More Loop Designs ),邏輯判斷類的語句控制結(jié)構(gòu): for(所有可能情況){ // 可為多重循環(huán) if(條件1不滿足) continue; if(條件2不滿足) continue; // … if(條件n不滿足) continue; 輸出所要的結(jié)果 },03:02:51,28,百雞問題的例子: f

25、or(int c=1; c<=13; ++c) for(int h=1; h<=18; ++h) for(int s=1; s<=96; ++s){ if(7*c+5*h+s/3-100) continue; if(c+h+s-100) continue; if(s%3) continue; cout<<"Cock:"<<c

26、 <<", Hens:"<<h <<", Chicks:"<<100-c-h<<endl; },03:02:51,29,級數(shù)逼近問題前后項之差與0的鄰域(精度要求)的比較作為循環(huán)退出條件,是控制精度的必要方法項值計算由循環(huán)變量,根據(jù)通項公式,直接求第i項的值也可先給出第一項的值,然后反復(fù)根

27、據(jù)前項求后項,03:02:51,30,求級數(shù)的例子:double sum=0, item=1;for(int n=1; abs(item)>1e-6; ++n){ item *= (-1.0)*(2*n-3)/(2*n-1); sum += item;}cout<<"Pi = “ <<setiosflags(ios::fixed) <<sum*

28、4<<endl;,,03:02:51,31,C ++ 程序設(shè)計教程(第二版),第三章 數(shù)據(jù)類型 Chapter 3 Data Types,清華大學(xué)出版社 錢 能,03:02:51,32,數(shù)據(jù)類型:一定的數(shù)據(jù)在計算機的內(nèi)部表示;該數(shù)據(jù)所表示的值的集合;在該數(shù)據(jù)上的一系列操作。內(nèi)部數(shù)據(jù)類型: 1.整型長整型,短整型,字符型,布爾型 2.浮點型單精度,雙精度,03:02:51,33,第三章內(nèi)容,整型 ( i

29、nt Types ) 整型子類 ( sub-int Types ) 浮點型 ( Floating-Point Type ) C-串與string ( C-string & string ) 數(shù)組 ( Arrays ) 向量 ( vectors ) 指針與引用 ( Pointer & References ),03:02:51,34,1. 整型 ( int Types ),整型數(shù)的內(nèi)部表示:二進制

30、補碼 位數(shù)既定的二進制補碼運算沒有加減的區(qū)別;對于溢出,只是簡單的舍棄而不是錯誤整型數(shù)的表示范圍:取決于二進制位數(shù)整型數(shù)的操作:+,-,*,/,%,>,>=,!,^,,>=,==,^=,&,|,&=,|=,&&,||,&&=,||=,!=,=,+=,-=,*=,/=,%=,++,--,,,? :,03:02:51,35,編譯器的機器字長總是與整型的位長有關(guān).

31、如: 32位編譯器的整型數(shù)一定為32位長 整型字面值分八進制,十進制和十六進制不同表示.如: 0123 // 8進制 0x12af3 // 16進制 12345 // 10進制 超過表示范圍的整型數(shù)其值不可預(yù)料或者出錯.如: int a = 12345678912345678912345; // 錯,03:02:51,36,2. 整型子類(

32、Sub-int Types ),字符型: 表示范圍: 有符號:-128~127 無符號:0~255 輸出形式與整型數(shù)不同: int a = 65; char b = 65; cout<<a<<“\n”; cout<<b<<“\n”; 結(jié)果為: 65 A,03:02:51,37,枚舉型: 自定義整數(shù)區(qū)間,甚

33、至列舉單個整數(shù)值 enum Week{ Mon, Tue, Wed, Thu, Fri, Sat, Sun }; 最大特點是可以給每個值指定一個在程序中直接使用的標記(枚舉符). 編程中將其當(dāng)作整數(shù)常量用.如: int a = 7; if ( a == Sun) cout <<“Sunday\n”;,03:02:51,38,布爾型:表示范圍僅含整數(shù)0和1,也可以表示成true和fal

34、se,相當(dāng)于: enum bool{ false, true };因為條件表達式、邏輯運算的結(jié)果都是0或1,所以,相當(dāng)大數(shù)量的表達式的值與布爾型對應(yīng),03:02:51,39,3. 浮點型 ( Floating-Point Types ),浮點數(shù)的內(nèi)部表示: 國際標準IEEE754浮點表示法,它與編程所用的浮點數(shù)字面量以及輸出的十進制浮點數(shù)之間有一個轉(zhuǎn)換關(guān)系浮點數(shù)的表示范圍: 32位浮點數(shù)±3

35、.4×1038 64位浮點數(shù)±1.8×10308浮點數(shù)的操作: 常規(guī)的加、減、乘、除等操作,03:02:51,40,4. C-串與string ( C-string & string ),C-串結(jié)構(gòu) 每個字符占據(jù)1個字節(jié) 一個C-串是一個字符序列,用來表示各種名字或者文字說明 C-串的字符序列的最后總是添加有一個結(jié)束標志.即在6個字符的字串(“Hello!”)其空間存儲有7個

36、字節(jié) 左邊三圖是不同細節(jié)的同一空間結(jié)構(gòu)描述,’H’’e’’l’’l’’o’’!’’\0’,,,,,,,72 101 108 108 111 33 0,,,,,,,03:02:51,41,知道了C-串首地址,即可知道整個串,所以可以藉字符首址(字符指針)來操作C-串,但要注意,串的第一個字符與整個串的操作不同,如,C-串的輸出操作: char* str = ”Hello”; cout &l

37、t;< *str <<endl; // 顯示H cout << str << endl; // 顯示Hello,03:02:51,42,C-串不能直接比較,因為字符指針的比較只是地址值的比較而不是C-串的字典序比較: cout<<(“join”==”join” ? ”” : ”not “)<<”equal\n”; // 字面值比較 cha

38、r* str1=”good”; char* str2=”good”; cout<<(str1==str2 ? ”” : ”not “)<<”equal\n”; // 字符指針比較 char buffer1[6]=”Hello”; char buffer2[6]=”Hello”; cout<<(buffer1==buffer2 ? ”” : ”not “)&l

39、t;<”equal\n”; // 字符數(shù)組比較 結(jié)果: not equal not equal not equal,03:02:51,43,不得不配備專門操作C-串的庫函數(shù):strcpy(s1, s2); //從s2拷貝到s1strcmp(s1, s2); //比較s1與s2strcat(s1, s2); //連接s2到s1strrev(s); //將s倒排

40、 strset(s, ‘c’); //將s全置為cstrstr(s, “ell”); //查找s中的子串strchr(s,‘c’); //查找s中的字符 等等,03:02:51,44,但字符指針操作C-串的安全性受到質(zhì)疑:char* str1;char* str2 = new char[5];strcpy(str2, ”ugly”);strcpy(str1,str2);

41、 // 錯: str1沒有空間可儲strcpy(str2, ”Hello”); // 錯: str2空間不夠大str2 = ”Hello”; // 錯:原來的”ugly”空間脫鉤,導(dǎo)致內(nèi)存泄漏根源:復(fù)制操作須以足夠的目的地空間為前提,而所有C-串操作的空間調(diào)配都是人為安排的,C-串庫函數(shù)一概不管,03:02:51,45,類串string—串類—自定義串對應(yīng)字符指針的C-串操作: string

42、 a, s1 = "Hello "; string s2 = "123"; a = s1; // copy cout<<(a==s1 ? "" : " not")<<"equal\n&quo

43、t;; // compare cout<<a+s2<<endl; // concatenate reverse(a.begin(), a.end()); cout<<a<<endl;

44、 // reverse cout<<a.replace(0,9,9,'c')<<endl; // set cout<<(s1.find("ell")!= -1 ? "" : "not ")<<"found\n";// find string co

45、ut<<(s1.find('c')!= -1 ? "": "not ")<<"found\n"; // find char,03:02:51,46,輸入C-串的string承載方式:cin>>的讀入方式總是將前導(dǎo)的空格(所謂空格,即包括空格、回車、水平或垂直制表符等)濾掉,將單詞讀入,在遇到空格時結(jié)束本次輸入getl

46、ine總是將行末的回車符濾掉,將其整行輸入對字串”Hello, How are you?”的兩種輸入方式 for ( string s; cin>>s; ) cout<<s<<” “; cout<<endl; string s; getline(cin, s); cout<<s<<endl;,0

47、3:02:51,47,string流:將string實體看作是一個輸入設(shè)備.給一個像cin這樣的取名,作為流來操作,會很有用 例如,如果一個文件aaa.txt,有若干行,每行中含有不知道幾個的整數(shù),要輸出每行的整數(shù)和: ifstream in ( "aaa.txt" ) ; for ( string s ; getline ( in, s ) ; ) { int a

48、, sum=0 ; for ( istringstream sin ( s ) ; sin >> a ; sum += a ) ; cout << sum << “\n” ; },,03:02:51,48,5. 數(shù)組( Arrays ),數(shù)組是同類元素的集合,它的元素排列在連續(xù)的空間中,按下標來標記描述數(shù)組必須給出元素類型,元素個數(shù)元素個數(shù)必須在編程

49、時確定,任何變量都不允許 int a[’a’] ; // 表示int a[97]; int n = 100 ; int a[n] ; // 錯: 元素個數(shù)必須預(yù)知 const int n = 100 ; int a[n] ; // ok int a[ ] ; // 錯: 無元素個數(shù) int a[ ] = { 1, 2, 3, 4, 5 } ; // ok

50、:通過初始化確定元素個數(shù),03:02:51,49,數(shù)組初始化可選,但須遵循語法.無初始化的數(shù)組按規(guī)定取默認值 int array1[5] = { 1, 2, 3, 4, 5, 6 } ; // 錯: 初始值個數(shù)超元素個數(shù)int array2[5] = { 1, , 2, 3, 4 } ; // 錯: 不能以逗號方式省略int array3[5] = { 1, 2, 3, } ;

51、 // 錯: 同上int array4[5] = { } ; // 錯: 初始值不能為空int array5[5] = { 1, 2, 3 } ; // ok: 后面元素取0int array6[5] = { 0 }; // ok: 元素全為0int array7[5] ;

52、 // ok: 元素值不確定int a[3][5] = { { 1, 2, 3, 4, 5 }, { 2, 3, 4, 5, 6 }, { 3, 4, 5, 6, 7 } } ;,03:02:51,50,數(shù)組有諸多缺陷,造成編程艱難和不安全 int a[5] = {1,2,3,4,5}, c[5]; int b[5] = a; // 錯:無法拷貝創(chuàng)建 c = a;

53、 // 錯:無法整體拷貝和局部拷貝 a[8] = 10; // 錯:無法動態(tài)擴容和隨意增減元素 for(int i=0; i<=5; ++i) // 錯:無法防范下標溢出 a[i] = i+1; if(a==c) a[0] = 2; // 錯:不可比較 int a[5] = {1}; // 初始化呆板,無法獲得全1初值,03:02:51,51,二維數(shù)組的初始化,下

54、標訪問及輸出 int array1[2][3]={1,2,3,4,5}; int array2[2][3]={{1,2},{4}}; cout<<"array1: "; for(int i=0; i<2; ++i) for(int j=0; j<3; ++j) cout<<array1[i][j]<<","; co

55、ut<<"\narray2: "; for(int i=0; i<2; ++i) for(int j=0; j<3; ++j) cout<<array2[i][j]<<","; cout<<"\n";結(jié)果為: array1: 1,2,3,4,5,0, array2: 1,2,0,4,0,

56、0,,03:02:51,52,6.向量( vector ),向量與數(shù)組的共同特征是元素的排列在邏輯上是線性序列結(jié)構(gòu),可以用下標進行訪問 向量可以按需創(chuàng)建,拷貝創(chuàng)建,局部拷貝創(chuàng)建,異類拷貝和創(chuàng)建 靈活的初始化 隨意擴容和元素增減 可通過異常來進行下標溢出追蹤和處理 可比較 等等,03:02:51,53,int n=10;int t[5]={1,2,3,4,5};vector a(n); //按需創(chuàng)建vect

57、or b(10, 1); //元素賦全1,靈活的初始化vector c(b); // 整體拷貝創(chuàng)建vector f(t, t+5); //異類拷貝創(chuàng)建vector d(b.begin(), b.begin()+3); //局部拷貝創(chuàng)建d為b的前3個元素a.assign(100); //動態(tài)擴容至100個元素,03:02:51,54,向量常用操作a.assign(b.begin(), b.begin()+3); //

58、 b的前3個元素賦給aa.assign(4,2); // a向量含4個元素,全初始化為2int x = a.back(); // a的最后一個元素賦給變量xa.clear(); // a向量清空(不再有元素)if(a.empty()) cout<<”empty”; // a判空操作int y = a.front(); // a的第一個元素賦

59、給變量ya.pop_back(); // 刪除a的最后一個元素a.push_back(5); // a最后插入一個元素,其值為5a.resize(10); // a元素個數(shù)調(diào)至10。多刪少補,其值隨機a.resize(10,2);//a元素個數(shù)調(diào)至10。多刪少補,新添元素初值為2if(a==b) cout<<”equal”; // a與b的向量比較操作,03:02:51,55,向量操作尤其適合于函數(shù)

60、參數(shù)傳遞(2-D以上的數(shù)組參數(shù)的傳遞十分丑陋):傳遞一個矩陣,無論其每行中的元素個數(shù)不同.輸出之:typedef vector > Mat;void print(const Mat& a){ for(int i=0; i<a.size(); ++i){ for(int j=0; j<a[i].size(); ++j) cout<<a[i][j]<<&q

61、uot; "; cout<<endl; }},03:02:51,56,7. 指針與引用 ( Pointers & Reference ),指針指向存放數(shù)據(jù)的地址指針必須初始化或者賦值(指向了數(shù)據(jù))后,才能進行間接訪問(間訪)操作int* ip;int iCount = 18;int* iPtr = &iCount; // 初始化ip = &iCount;

62、 // 賦值*ip = 8; // 間訪操作,03:02:51,57,指針操作與指向數(shù)據(jù)的類型密切相關(guān) float f = 34.5; int* ip = reinterpret_cast(&f); cout””34.5 iAddr: 1245064=>1107951616 int: 100 float: 1.4013e-43,03:02:51,58,指針加減整數(shù)的操作表示空

63、間位置上的挪動但是挪動的字節(jié)數(shù)與其數(shù)據(jù)類型相關(guān):對float指針加6實際增加了24個字節(jié)對long int指針加5實際增加了20個字節(jié)對char指針減7實際減少了7個字節(jié)對double指針減2實際減少了16個字節(jié),03:02:51,59,數(shù)組名本身就是表示元素集合的首地址可以將數(shù)組名賦給指針 int a[3]; for(int i=0; i<3; ++i) a[i] = i*2; for(int*

64、 iP=a; iP<a+3; iP+=1) cout<<iP<<“: ”<<*iP<<“\n”; 結(jié)果為: 1245036: 0 1245040: 2 1245044: 4,,03:02:51,60,指針限定const int a = 78;int b = 10;int c = 18;const int* ip = &a; // const修飾

65、指向的實體類型——常量指針int* const cp = &b; // const修飾指針*cp——指針常量int const* dp = &b; // 等價于上一句——指針常量const int* const icp = &c; // 常量指針常量*ip = 87; // 錯:常量指針不能修改指向的常量,*ip只能做右值ip = &c;

66、 // ok:常量指針可以修改指針值*cp = 81; // ok:指針常量可以修改指向的實體cp = &b; // 錯:指針常量不能修改指針值,即使是同一個地址*icp = 33; // 錯:常量指針常量不能修改指向的常量icp = &b; // 錯:常量指針常量不能修改指針值int d = *icp;

67、 // ok,03:02:51,61,引用必須初始化,因為引用總是附屬于某個實體int someInt = 5;int& rInt = someIne; //初始化修改引用的值,即是修改了附屬的實體值int a = 5;int& ra = a;ra = 8;cout<<a<<“\n”;結(jié)果為:8引用多用在函數(shù)參數(shù)的傳遞上,03:02:51,62,C ++

68、程序設(shè)計教程(第二版),第四章 計算表達 Chapter 4 Computational Expressing,清華大學(xué)出版社 錢 能,03:02:51,63,計算表達: 表達計算使用一系列操作,它依賴于特定語言的操作符功能,關(guān)乎數(shù)據(jù)類型的內(nèi)在特性,故計算表達目的在于深入剖析數(shù)據(jù)類型對于編程的影響,從而準確使用操作符學(xué)習(xí)方法: 1.掌握操作符的功能和相互關(guān)系(優(yōu)先級和結(jié)合性) 2.針對內(nèi)部數(shù)據(jù)類型,對一些典型的操作中的典

69、型問題留下深刻印象,03:02:51,64,第四章內(nèi)容,名詞解釋( Name Explainations ) 算術(shù)運算問題 ( Arithmetic Problems ) 相容類型的轉(zhuǎn)換 ( Cast Campatible Type ) 關(guān)系與邏輯操作 ( Relation & Logic Operations ) 位操作 ( Bit Operations ) 增量操作 ( Increment Operatio

70、ns ) 表達式副作用 ( Expression’s Side Effects ),03:02:51,65,1. 操作符 ( Operators ),單目操作符:在一個操作數(shù)上施加的操作,如:-3雙目操作符:在二個操作數(shù)上施加的操作,如:5-3 故有些操作符既是單目操作符,又是雙目操作符表達式:若干個操作數(shù)和操作符按語法規(guī)則構(gòu)成的操作,如: a = -3-5+6*7/-8,03:02:51,66,優(yōu)先級

71、:表達式中多個操作符的執(zhí)行順序的規(guī)定性,如: *x++; // 先做x++ 結(jié)合性:同級操作符的執(zhí)行順序的規(guī)定性,如: a=b=6; // 先做b=6,03:02:51,67,2. 算術(shù)運算問題( Arithmetic Problems ),整型數(shù)表示范圍有限,如: 1+2+3+...+10000 不能用整型變量累計的一般循環(huán)方法來解: int sum = 0; for(int i=1;

72、 i<=10000; ++i) sum += i; cout<<sum<<“\n”;,03:02:51,68,整型數(shù)的周而復(fù)始性,如: unsigned int a = 2000000000; unsigned int b = 3000000000; cout<< a+b<<“\n”; 結(jié)果為: 705032704 超過

73、表示范圍的整型數(shù)不是報錯,而是表示成一個去掉進位后的余數(shù),03:02:51,69,中間結(jié)果溢出導(dǎo)致計算錯誤,如:  int a = 100000; int b = 100000; int c = 1000; cout<<a*b/c<<"\n"; cout<

74、<a*(b/c)<<"\n"; 結(jié)果為: 1410065 10000000,03:02:51,70,浮點數(shù)的精度和有效位 影響比較的正確性,如: float f1 = 7.123456789; float f2 = 7.123456785; if ( f1==f2 ) cout<<“f

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論