




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、新編第2講C基礎(chǔ)與編程1新編第2講C基礎(chǔ)與編程1 要求: 對兩個隨機(jī)的100以內(nèi)的整數(shù)進(jìn)行加法運(yùn)算,共出10題,每題10分,最后給出得分。1 編程練習(xí)一:自動出題器 基本思想:(1)用循環(huán)實現(xiàn)(2)產(chǎn)生兩個100以內(nèi)的隨機(jī)數(shù)(3)將用戶輸入的答案與正確答案比較,如果一致則在得分上加10分,否則不得分(4)輸出總分2 要求:1 編程練習(xí)一:自動出題器 基本思想:41 編程練習(xí)一:自動出題器 程序:#include#includeusing namespace std;int main() int x,y,a,b,s=0; for(int i=1;i=10;i+) x=rand() % 100;
2、y=rand() % 100; a=x+y; cout第i題:x+yb; if(a=b) s+=10; cout您的總得分是:sendl;31 編程練習(xí)一:自動出題器 程序:5 問題: 當(dāng)程序第二次運(yùn)行時,所出的題目與第1次一樣。1 編程練習(xí)一:自動出題器 原因:隨機(jī)數(shù)的序列總是和一個隨機(jī)種子相關(guān)聯(lián),相同隨機(jī)種子對應(yīng)的隨機(jī)數(shù)序列相同。由于沒有指定隨機(jī)種子,因此程序運(yùn)行后均以默認(rèn)的隨機(jī)種子產(chǎn)生相應(yīng)的隨機(jī)數(shù)序列。 解決方案: 使用srand庫函數(shù)重新指定隨機(jī)種子。4 問題:1 編程練習(xí)一:自動出題器 原因: 解決方案:61 編程練習(xí)一:自動出題器 程序:#include#include#inclu
3、deusing namespace std;int main() int x,y,a,b,s=0; srand(unsigned)time(NULL); for(int i=1;i=10;i+) x=rand() % 100; y=rand() % 100; a=x+y; cout第i題:x+yb; if(a=b) s+=10; cout您的總得分是:sendl;51 編程練習(xí)一:自動出題器 程序:7 要求: 對于一個字符串,順讀與逆讀是相同的字符。 定義一個子函數(shù)完成判斷功能,若是回文,返回1,否則返回0。在主函數(shù)中根據(jù)返回值輸出結(jié)果。2 編程練習(xí)二:回文字符串判斷 基本思想:(1)計算字符
4、串的長度(2)第一個字符與最后一個字符比較,第二個字符與倒數(shù)第二個字符比較(3)用循環(huán)實現(xiàn)(4)考慮參數(shù)傳遞6 要求:2 編程練習(xí)二:回文字符串判斷 基本思想:8 程序:#include#includeusing namespace std;int decidePalindrome(char s) int i=0,j; j=strlen(s)-1; while(ij) if(si!=sj) return 0; i+; j-; return 1;int main() char str100; cout“輸入一個字符串:”str; int result=decidePalindrome(str);
5、 if(result) cout“該字符串是回文”endl; else cout“該字符串不是回文”endl; return 0;2 編程練習(xí)二:回文字符串判斷7 程序:int main()2 編程練習(xí)二:回文字符串判斷9 要求: 冒泡法 選擇法 直接插入法3 編程練習(xí)三:數(shù)據(jù)排序8 要求:3 編程練習(xí)三:數(shù)據(jù)排序10 冒泡法程序:#include#includeusing namespace std;void bubblesort(int data,int n);int main() int a=20,40,-50,7,13; int n=sizeof(a)/sizeof(int); bub
6、blesort(a,n); for(int j=0;jn;j+) coutajt; coutendl; system(pause);void bubblesort(int data,int n) int temp; for(int i=0;in-1;i+) for(int j=0;jdataj+1) temp=dataj; dataj=dataj+1; dataj+1=temp; 3 編程練習(xí)三:數(shù)據(jù)排序9 冒泡法程序:void bubblesort(int dat 選擇法程序:#include#includeusing namespace std;void bubblesort(int da
7、ta,int n);int main() int a=20,40,-50,7,13; int n=sizeof(a)/sizeof(int); selsort(a,n); for(int j=0;jn;j+) coutajt; coutendl; system(pause);void selsort(int data,int n) int min,k,temp; for(int i=0;in-1;i+) min=datai; k=i; for(int j=i+1;jdataj) min=dataj; k=j; temp=datai; datai=datak; datak=temp; 3 編程練
8、習(xí)三:數(shù)據(jù)排序10 選擇法程序:void selsort(int data練習(xí): 把輸入的字符串逆序排列,并顯示。分析:數(shù)據(jù)結(jié)構(gòu):輸入的字符串用字符數(shù)組存放。算法要點:逆序排列用交換算法,求出字符串最后一個字符的下標(biāo),然后將第一個和最后一個交換,第二個和倒數(shù)第二個交換,.。11練習(xí): 把輸入的字符串逆序排列,并顯示。分析:13程序:#include using namespace std;int main() char str80; int temp,i,j; coutEnter a string:str; for(i=0,j=strlen(str)-1;ij;i+,j-) temp=stri
9、; stri=strj; /*交換i,j兩個元素*/ strj=temp; coutnReversed string:n“str;12程序:14練習(xí): 直接插入法排序基本思想: 先將下標(biāo)為0的元素作為已排好的元素,然后從下標(biāo)為1的元素開始,依次把后面的元素按大小插入到前面已排好序的元素中,直到將全部元素插完為止,從而完成排序過程。13練習(xí): 直接插入法排序基本思想:15程序:#include using namespace std;void insertsort(int data,int n);int main() int a=20,40,-50,7,13; int n=sizeof(a)/s
10、izeof(int); insertsort(a,n); for(int j=0;jn;j+) coutajt; coutendl; system(pause);void insertsort(int data,int n) int nInsert,nPos; int nPosMax=0; int j; for(int i=1;in;i+) nInsert=datai; nPos=i; for(j=0;j=nPosMax;j+) if(nInsert=nPos) dataj+1=dataj; datanPos=nInsert; nPosMax+; 14程序:void insertsort(in
11、t data,void insertsort(int data,int n) int nInsert,j; for(int i=1;i=0)&(nInsertdataj) dataj+1=dataj; j-; dataj+1=nInsert; 15void insertsort(int data,int#include#includeusing namespace std;int const N = 3;int main() char lN30,temp30; int i,j,k; cout請輸入字符串endl; for(i=0;iN;i+) cin.getline(li,10,#); for
12、(i = 0;iN-1;i+) for(j=0;j0) strcpy(temp,lj); strcpy(lj,lj+1); strcpy(lj+1,temp); for(i = 0;iN;i+) coutli ; system(pause); return 0; 練習(xí): 對字符串進(jìn)行排序16#includefor(i = 0;i文字常量(literal constant) 又稱為“符號常量”、“字面常量” 經(jīng)編譯之后寫在代碼區(qū),是不可尋址的。 利用預(yù)編譯指令#define定義的常量屬于文字常量。常變量(constant variable) 常變量與其他變量一樣被分配空間,是可以尋址的。 由普通
13、變量在前面加const關(guān)鍵字定義的是常變量。4 深入學(xué)習(xí)一:文字常量和常變量17文字常量(literal constant)4 深入學(xué)習(xí)一:常變量的值 常變量的值在初始化后不能改變,是在高級語言的語義層面上定義的,由編譯器所做的語法檢查進(jìn)行保障。 但是,由于運(yùn)行時常變量并不是放在只讀內(nèi)存中,而是和一般變量一樣放在數(shù)據(jù)區(qū),所以在運(yùn)行時如果能獲得常變量的地址,一樣可以通過特殊的途徑對它們進(jìn)行修改。4 深入學(xué)習(xí)一:文字常量和常變量18常變量的值4 深入學(xué)習(xí)一:文字常量和常變量20例子:#includeusing namespace std;void ShowValue(const int &i) c
14、outiendl; int main() const int j=5; int *ptr; void *p=(void *)&j; ptr=(int *)p; (*ptr)+; ShowValue(j); 4 深入學(xué)習(xí)一:文字常量和常變量19例子:4 深入學(xué)習(xí)一:文字常量和常變量21例子:#includeusing namespace std;void ShowValue(const int &i) coutiendl; int main() const int j=5; int *ptr; void *p=(void *)&j; ptr=(int *)p; (*ptr)+; coutjend
15、l;4 深入學(xué)習(xí)一:文字常量和常變量20例子:4 深入學(xué)習(xí)一:文字常量和常變量22原因: 編譯器在代碼優(yōu)化的過程中已經(jīng)將j替換成了文字常量5。另:ShowValue()中的形參不用引用可以嗎? 值傳遞、指針傳遞4 深入學(xué)習(xí)一:文字常量和常變量21原因:4 深入學(xué)習(xí)一:文字常量和常變量23出于語法規(guī)則或代碼優(yōu)化的需要,在某些情況下文字常量和常變量會由編譯器進(jìn)行轉(zhuǎn)換。 例子:#includeusing namespace std;void DefineArray(const int n) int Bn=;/出編譯錯誤 coutB0endl; int main() const int m=5; in
16、t Am=;/正確 coutA0endl; 4 深入學(xué)習(xí)一:文字常量和常變量22出于語法規(guī)則或代碼優(yōu)化的需要,在某些情況下文字常量和常變量會const的位置 const 的位置與語義之間的關(guān)系: #include using namespace std;int main() int i=5; const int v1=1; int const v2=2; const int *p1; int const *p2; const * int p3;/wrong int * const p3=&v1;/ wrong int * const p3;/ wrong int *const p3=&i; c
17、onst int *const p4=&v1; int const *const p5=&v2; const int &r1=v1; int const &r2=v2; 5 深入學(xué)習(xí)二:const用法23const的位置5 深入學(xué)習(xí)二:const用法25const的位置(1)const和數(shù)據(jù)類型結(jié)合在一起,形成所謂“常類型”。利用常類型聲明或定義變量,就產(chǎn)生了常變量。(2)const用來修飾類型時,既可以放在類型的前面,也可以放在類型的后面(3)用常類型聲明或定義變量時,const只會出現(xiàn)在變量前面。(4)const和被修飾類型之間不能有其他標(biāo)識符存在。(5)在理解有const存在的聲明語句時
18、,關(guān)鍵是搞清楚到底什么是“不可變”的。5 深入學(xué)習(xí)二:const用法24const的位置5 深入學(xué)習(xí)二:const用法26const的位置 1)對一個具體的變量來說,如果const直接出現(xiàn)在該變量的前面,則該變量的值一旦被初始化就不能再改變。 2)常指針和指針常量 常指針是指針指向的是一個常量,指針常量是指指針本身的值是一個常量,不能修改。 如果指針被定義為指針常量,則在定義它的時候必須同時初始化,否則編譯報錯。 3)常引用是指將被引用對象當(dāng)做一個常量,也就是不允許通過引用來修改被引用對象的值。5 深入學(xué)習(xí)二:const用法25const的位置5 深入學(xué)習(xí)二:const用法27const對象和
19、對象的const成員(P6)(1)常對象:用const修飾的對象。(2)常函數(shù):用const修飾的類的成員函數(shù)(3)在常函數(shù)中不允許對任何成員變量進(jìn)行修改。(4)通過常對象,只能調(diào)用該對象的常函數(shù)。(5)只有類的非靜態(tài)成員函數(shù)可以被聲明為常函數(shù),其他類型的函數(shù)不能被聲明為常函數(shù)。(6)const是重載的標(biāo)記(7)非只讀對象調(diào)用某個函數(shù)時,先尋找它的非const函數(shù)版本,如果沒有找到,再調(diào)用它的const函數(shù)版本。5 深入學(xué)習(xí)二:const用法26const對象和對象的const成員(P6)5 深入學(xué)習(xí)二:const對象和對象的const成員(8)如果一個非只讀對象調(diào)用某個函數(shù)時,這個函數(shù)同時存
20、在非const函數(shù)版本和const函數(shù)版本,而我們希望調(diào)用它的const函數(shù)版本? 必須通過建立該對象的常引用或指向該對象的常指針來達(dá)到目的。(9)定義一個常對象,是將該對象的全體數(shù)據(jù)成員當(dāng)做常量看待。(10)類對象的非靜態(tài)常量成員必須在構(gòu)造函數(shù)中初始化,而且只能借助初始化列表進(jìn)行。5 深入學(xué)習(xí)二:const用法27const對象和對象的const成員5 深入學(xué)習(xí)二:cons用const修飾函數(shù)的參數(shù)和函數(shù)的返回值(P8)(1)目的:是讓編譯器為程序員做變量只讀性的檢查,以便程序更加健壯。(2)如果函數(shù)的返回值是引用,則用const修飾返回值可以阻止對被引用對象的修改。常見的對const的誤解
21、(P10)(1)用const修飾的變量的值一定是不能改變的。(2)常引用或常指針,只能指向常變量。 引用被聲明為常引用,只是說明不能通過該引用(或該指針)去修改被引用對象的值。至于被引用對象原來是什么性質(zhì),或者是否會被其他引用修改,是無法由常引用來決定的。5 深入學(xué)習(xí)二:const用法28用const修飾函數(shù)的參數(shù)和函數(shù)的返回值(P8)5 深入學(xué)習(xí)引用變量是C+語言引入的一個重要機(jī)制,它的出現(xiàn)使得原來在C語言中必須用指針實現(xiàn)的功能有了另一種實現(xiàn)的選擇,而且在書寫形式上更為簡便。曾經(jīng)學(xué)過的(1)引用就是被引用對象一個別名。(2)編譯器可以不為引用分配內(nèi)存空間。引用的本質(zhì) int i=5; int &ri=i; ri=8; 經(jīng)過代碼優(yōu)化,可以轉(zhuǎn)換成如下代碼: int i=5; i=8;也就是說,既然ri是i的別名,那么凡是ri出現(xiàn)的地方,都可以直接用它的“原名”i,或者說,在編譯的時候,在符號表中ri和i對應(yīng)于相同的變量的地址,這樣的確就沒有必要存在一個名為ri的變量了。6 深入學(xué)習(xí)三:引用與指針常量29引用變量是C+語言引入的一個重要機(jī)制,它的出現(xiàn)使得原來在C但是,這種在編譯階段進(jìn)行靜態(tài)替換的做法并不是在任何情況
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度預(yù)算與財務(wù)目標(biāo)設(shè)定計劃
- 系列美術(shù)創(chuàng)作主題教案計劃
- 打破部門壁壘的協(xié)同計劃
- 電子政務(wù):管理信息化整合之道
- 第五章+第1節(jié)《透鏡》教學(xué)設(shè)計 -2023-2024學(xué)年人教版物理八年級上學(xué)期
- 第二單元第9課《記錄校園生活》教學(xué)設(shè)計 2023-2024學(xué)年青島版(2019)初中信息技術(shù)第二冊
- 2025年山東貨運(yùn)從業(yè)資格模擬考試題app
- 2025年太原貨運(yùn)從業(yè)資格證考試題技巧
- 2025年鄭州貨運(yùn)資格證考試真題
- 2025年高中化學(xué)必修二核心框圖和內(nèi)容結(jié)構(gòu)預(yù)復(fù)習(xí)
- 2025年度事業(yè)單位招聘考試公共基礎(chǔ)知識模擬試卷及答案(共四套)
- 2024年海東市第二人民醫(yī)院自主招聘專業(yè)技術(shù)人員筆試真題
- 2025年江西陶瓷工藝美術(shù)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫1套
- 《計算機(jī)基礎(chǔ)與應(yīng)用(Office 和 WPS Office )》課件 項目二?計算機(jī)操作系統(tǒng)配置與應(yīng)用
- 2025年湖南電氣職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 混凝土拌合站拌合運(yùn)輸工程合同
- 機(jī)床操作與數(shù)控編程作業(yè)指導(dǎo)書
- 2025云南昆明空港投資開發(fā)集團(tuán)招聘7人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級下冊第二單元百分?jǐn)?shù)(二)單元檢測(含答案)
- 人教版 八年級英語下冊 Unit 2 單元綜合測試卷(2025年春)
- 湖北省武漢市江漢區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含解析)
評論
0/150
提交評論