




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第4章 程序的控制結(jié)構(gòu)C語言大學(xué)實用教程第1頁,共73頁。內(nèi)容提要算法的描述方法基本控制結(jié)構(gòu)基本控制語句常用算法,如累加、累乘、統(tǒng)計、遞推、迭代、窮舉等程序的基本版式結(jié)構(gòu)化程序設(shè)計的基本思想第2頁,共73頁。算法的表示方法自然語言表示傳統(tǒng)的流程圖表示N-S結(jié)構(gòu)化流程圖表示 偽代碼表示第3頁,共73頁。 N-S流程圖用以下的流程圖符號: (1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)第4頁,共73頁。條件語句if (表達式) 語句if (表達式) 語句1 else 語句2if (表達式1)語句1 else if (表達式2) 語句2else 語句3開關(guān)語句4.3 選擇結(jié)構(gòu)第5頁,共73頁。4.3 選
2、擇結(jié)構(gòu):條件語句例: if (score=90)range=1; else if(score=80) range=2; else if(score=70) range=3; else if(score=60) range=4; else range=5;第6頁,共73頁。練習(xí)3.判斷閏年yearyear能被4整除但不能被100整除能被400整除第7頁,共73頁。關(guān)系運算符和邏輯運算符條件p:邏輯表達式真假的判斷非0即為真if (a)printf(“OK!”);x=-5; if (x) printf(“OK!”);y=0; if (y=0) printf(“OK!”);y=0; if (y) p
3、rintf(“OK!”);第8頁,共73頁。switch多路選擇switch (表達式) case 常數(shù)1: 語句序列1;case 常數(shù)2: 語句序列2;default: 語句序列3;default可以沒有,但最好不省略不要忘記break第9頁,共73頁。注意:常量n僅起語句標(biāo)號作用,不做求值判斷常量n的值必須是惟一的,沒有先后次序多個case語句可以共用一組執(zhí)行結(jié)果第10頁,共73頁。循環(huán)while,forwhile (表達式) 語句; 固定?變化?第11頁,共73頁。whileint k=1,s=0;while (k=100) s=s+k; k+;循環(huán)控制表達式循環(huán)控制變量(k)循環(huán)體第1
4、2頁,共73頁。注意:循環(huán)體出現(xiàn)多條語句,應(yīng)以復(fù)合語句的形式出現(xiàn)循環(huán)前必須給循環(huán)控制變量賦初值循環(huán)體中,必須有改變循環(huán)控制變量值的語句循環(huán)體可以為空while ((c=getchar()!=A);第13頁,共73頁。do-whiledo 語句;while (表達式);首先執(zhí)行語句,然后判斷表達式的值。如果表達式為0,繼續(xù)向下執(zhí)行,否則,再次執(zhí)行語句,再次判斷表達式的值語句會被至少執(zhí)行一次最后分號不可省略!第14頁,共73頁。循環(huán)while,forfor (表達式1; 表達式2; 表達式3) 語句; 第15頁,共73頁。選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,用for如果循環(huán)次數(shù)未知,用whil
5、e如果循環(huán)體至少要執(zhí)行一次,用do-while這只是“一般”原則,不是“原則”第16頁,共73頁。合法的嵌套循環(huán)第17頁,共73頁。for (i=0;i3;i+)printf(“i=%d:”,i);for (j=0;j4;j+)printf(“j=%-4d”,j);printf(“n”);第18頁,共73頁?,F(xiàn)場編程完成例4.14 編程輸出如下形式的乘法九九表 第19頁,共73頁。#include main() int m, n; for (m=1; m10; m+) printf(%4d, m); /*打印表頭*/ printf(n); for (m=1; m10; m+) printf(
6、-); printf(n); for (m=1; m10; m+) for (n=1; n10; n+)printf(%4d, m*n); printf(n); 第20頁,共73頁?,F(xiàn)場編程完成例4.16馬克思手稿中有一道趣味數(shù)學(xué)題:有30個人,其中有男人、女人和小孩,在一家飯館里吃飯共花了50先令,每個男人各花3先令,每個女人各花2先令,每個小孩各花1先令,問男人、女人和小孩各有幾人? 解方程組窮舉法第21頁,共73頁。break和continue假假真真break表達式1表達式2循環(huán)語句的下一條語句循環(huán)語句的下一條語句假假真真 contiue表達式1表達式2continue第22頁,共73
7、頁。這一章我們學(xué)習(xí)了算法的描述方法流程圖與基本控制結(jié)構(gòu)相應(yīng)的結(jié)構(gòu)化的控制語句if-elseswitchforwhiledo-whilebreakcontinue常用算法,如累加、累乘、統(tǒng)計、遞推、迭代、窮舉等第23頁,共73頁。這一章我們學(xué)習(xí)了常用算法求階乘: 數(shù)據(jù)類型的定義, long或double求累加和: long統(tǒng)計: 統(tǒng)計正數(shù)、平均分以上、n個成績中10090、8980、7970、6960、?:); 第36頁,共73頁。(2)函數(shù)的返回值應(yīng)當(dāng)屬于某一個確定的類型,在定義函數(shù)時指定函數(shù)返回值的類型。例如:下面是3個函數(shù)的首行:int max(float ,float ) /* 函數(shù)值為
8、整型 */char letter(char c1,char c2) /* 函數(shù)值為字符型 */ double min(int ,int ) /* 函數(shù)值為雙精度型 */ 注意:凡不加類型說明的函數(shù),自動按整型處理。第37頁,共73頁。(3)在定義函數(shù)時指定的函數(shù)類型一般應(yīng)該和return語句中的表達式類型一致。 如果函數(shù)值的類型和return語句中表達式的值不一致,則以函數(shù)類型為準(zhǔn)。 對數(shù)值型數(shù)據(jù),可以自動進行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。(4)對于不帶回值的函數(shù),應(yīng)當(dāng)用“void”定義函數(shù)為“無類型”(或稱“空類型”)。此時在函數(shù)體中不得出現(xiàn)return語句。 第38頁,共73頁。函
9、數(shù)調(diào)用(call)單向值傳遞調(diào)用函數(shù)時,必須提供所有的參數(shù)printf和scanf是采用變長變量表定義的函數(shù),所以變量的個數(shù)不固定。提供的參數(shù)個數(shù)、類型、順序與定義時相同有返回值時放到一個數(shù)值表達式中,如c = max(a,b);作為另一個函數(shù)調(diào)用的參數(shù),如 c = max(max(a,b),c); printf(%dn, max(a,b);無返回值時函數(shù)調(diào)用表達式,如display(a,b);第39頁,共73頁。變量的作用域 指在源程序中定義變量的位置及其能被讀寫訪問的范圍分為局部變量(Local Variable) 全局變量(Global Variable )第40頁,共73頁。局部變量局
10、部變量在語句塊內(nèi)定義的變量形參也是局部變量定義時不會自動初始化,除非程序員指定初值進入語句塊時獲得內(nèi)存,僅能由語句塊內(nèi)語句訪問,退出語句塊時釋放內(nèi)存,不再有效 并列語句塊各自定義的同名變量互不干擾 第41頁,共73頁。全局變量全局變量在所有函數(shù)之外定義的變量在程序中定義它的位置以后都有效自動初始化為0從程序運行起即占據(jù)內(nèi)存,程序運行過程中可隨時訪問,程序退出時釋放內(nèi)存 在定義點之前或在其他文件中引用,應(yīng)該進行如下聲明: extern 類型名 變量名;使函數(shù)之間的數(shù)據(jù)交換更容易,也更高效但是并不推薦使用因為誰都可以改寫全局變量,所以很難確定是誰改寫了它盡量少用全局變量。不得不用時,要嚴格控制對它
11、的改寫第42頁,共73頁。靜態(tài)變量(static)一個函數(shù)的內(nèi)部變量在函數(shù)退出后失效。再次進入函數(shù),變量值重新初始化把此變量定義為static,則變量的值可以保存到下次進入函數(shù)static int i;靜態(tài)變量和全局變量都是靜態(tài)存儲類型自動初始化為0從靜態(tài)存儲區(qū)分配,生存期為整個程序運行期間但作用域不同第43頁,共73頁。float Add(int x, int y)return (x+y);main() int a=3,c=5; float b=c-a; printf(%3.0fn, Add(a+b,(int)b-a);第44頁,共73頁。float Add(int x, int y)ret
12、urn (x+y);main() int a=3,c=5; float b=c-a; printf(“%-3.0fn”, Add(a,Add(c,(int)b-a);第45頁,共73頁。第6章 數(shù)組C語言大學(xué)實用教程第46頁,共73頁。內(nèi)容提要數(shù)組類型;向函數(shù)傳遞一維數(shù)組和二維數(shù)組;常用算法:排序、查找、求最大最小值等;用字符數(shù)組存取字符串;使用字符串處理函數(shù)處理字符串保存大量同類型的相關(guān)數(shù)據(jù)如矩陣運算,表格數(shù)據(jù)等 第47頁,共73頁。數(shù)組的定義與初始化數(shù)組定義后的初值仍然是隨機數(shù),一般需要我們來初始化int a5 = 12, 34, 56 ,78 ,9 ;int a5 = 0 ;int a
13、= 11, 22, 33, 44, 55 ;數(shù)組大小最好用宏來定義,以適應(yīng)未來可能的變化#define SIZE 10int aSIZE;數(shù)組大小定義好后,將永遠不變第48頁,共73頁。數(shù)組的使用數(shù)組的下標(biāo)都是從0開始對數(shù)組每個元素的使用與普通變量無異可以用任意表達式作為下標(biāo),動態(tài)決定訪問哪個元素for (i=0; iSIZE; i+) ai = 2 * i;下標(biāo)越界是大忌!使用大于最大下標(biāo)的下標(biāo),將訪問數(shù)組以外的空間。那里的數(shù)據(jù)是未知的,可能帶來嚴重后果sizeof可以用來獲得數(shù)組大小第49頁,共73頁。只能逐個對數(shù)組元素進行操作(字符數(shù)組例外)輸入方法:int a10,i;輸入第i個數(shù)組元
14、素:scanf(%d,&ai);輸入整個數(shù)組元素:for (i=0;i10;i+) scanf(%d,&ai);輸出方法:輸出第i個數(shù)組元素:printf(%d,ai);輸出整個數(shù)組元素:for (i=0;i10;i+) printf(%d,ai);一維數(shù)組的輸入和輸出第50頁,共73頁。輸入某個班級所有同學(xué)的學(xué)號和成績。算法:1、輸入學(xué)生人數(shù)2、從鍵盤依次輸入學(xué)號和成績,分別存入兩個數(shù)組中(1)計算平均分(2)查找最高分(3)將成績從低到高排序(4)計算及格率和優(yōu)秀率第51頁,共73頁。數(shù)組名作函數(shù)參數(shù)用數(shù)組名作參數(shù),就是將數(shù)組的首地址傳遞給函數(shù)實參數(shù)組與形參數(shù)組占用同一段內(nèi)存在函數(shù)中可對形
15、參數(shù)組元素修改的結(jié)果,會影響結(jié)果主調(diào)函數(shù)中的實參數(shù)組第52頁,共73頁。簡單變量作函數(shù)參數(shù) 第53頁,共73頁。數(shù)組作函數(shù)參數(shù) 第54頁,共73頁。二維數(shù)組的定義和引用 二維數(shù)組定義的一般形式為類型說明符 數(shù)組名常量表達式常量表達式;例如:定義a為34(3行4列)的數(shù)組,b為510(5行10列)的數(shù)組。如下:float a34,b510;不能寫成 float a3,4,b5,10;第55頁,共73頁。二維數(shù)組的定義 二維數(shù)組中的元素在內(nèi)存中的排列順序是:按行存放,即先順序存放第一行的元素,再存放第二行的元素 一維數(shù)組在內(nèi)存中的存放下圖表示對a34數(shù)組存放的順序 第56頁,共73頁??梢杂孟旅?
16、種方法對二維數(shù)組初始化數(shù)據(jù)類型 數(shù)組名 常量表達式1常量表達式2初始化數(shù)據(jù);(1) 分行給二維數(shù)組賦初值。如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; (2) 可以將所有數(shù)據(jù)寫在一個花括弧內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;二維數(shù)組的引用第57頁,共73頁。(3) 可以對部分元素賦初值。如 int a34=1,5,9; 1 0 0 05 0 0 0 9 0 0 0也可以對各行中的某一元素賦初值,如int a34=1,0,6,0,0,11; 1 0 0 00 6 0 00 0 0 11 1
17、0 0 05 6 0 0 0 0 0 0也可以只對某幾行元素賦初值。如:int a34=1,5,6; 第58頁,共73頁。(4)如果對全部元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;它等價于:int a4=1,2,3,4,5,6,7,8,9,10,11,12;在定義時也可以只對部分元素賦初值而省略第一維的長度,但應(yīng)分行賦初值。如:int a4=0,0,3,0,10;0 0 3 00 0 0 00 10 0 0 7.2.3二維數(shù)組的引用第59頁,共73頁。二維數(shù)組的輸入和輸出數(shù)組的輸入和輸出只能逐個對數(shù)組元素進行操作(字符數(shù)組例外)int b23,i,j;輸入方法:輸入第i行第j列元素:scanf(“%d”,&aij);輸入整個數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);輸出方法:輸出第i行第j列元素:printf(“%d”,aij);輸出整個數(shù)組元素:for (i=0;i2;i+) for(j=0;j字符串2,函數(shù)值為一正整數(shù)。(3) 如果字符串1str2) printf(yes);而只能用if(strcmp(str1,str2)0)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC TS 62443-6-2:2025 EN Security for industrial automation and control systems - Part 6-2: Security evaluation methodology for IEC 62443-4-2
- 個人雇傭鐘點工勞務(wù)合同
- 文化創(chuàng)意產(chǎn)業(yè)數(shù)字化升級投資合同
- 信息安全保障服務(wù)合同
- 個人收入證明收入證明協(xié)議年
- 設(shè)備材料買賣合同
- 智能車輛研發(fā)合作協(xié)議
- 青島二手房買賣合同的
- 爆破工程承包合同與爆破承包合同
- 裝飾材料購銷合同
- 2023年岳陽職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試筆試題庫及答案解析
- 北師大版八年級數(shù)學(xué)上冊《認識無理數(shù)(第2課時)》參考課件2
- 中級建構(gòu)筑物消防員理論綜合模擬題01原題
- 全業(yè)態(tài)購物中心招商方案
- 金壇區(qū)蘇科版六年級上冊勞動《08兔子燈》教案
- 礦井地質(zhì)學(xué)全套課件完整版ppt教程(最新)
- 公共財政概論整套課件完整版電子教案課件匯總(最新)
- (5年高職)成本核算與管理教學(xué)課件匯總完整版電子教案全書課件(最新)
- 中國傳媒大學(xué)全媒體新聞編輯:案例教學(xué)-課件-全媒體新聞編輯:案例教學(xué)-第3講
- 技能大師工作室建設(shè)PPT幻燈片課件(PPT 66頁)
- 統(tǒng)編版四年級道德與法治下冊第8課《這些東西哪里來》教學(xué)課件(含視頻)
評論
0/150
提交評論