版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算概論 (Introduction to Computing),主講人:馬思偉 北京大學(xué)數(shù)字媒體研究所 ,第七講 程序結(jié)構(gòu),復(fù)習(xí),程序的基本框架 編譯預(yù)處理: #include, #define 自定義函數(shù)的聲明 主函數(shù):main() 自定義函數(shù)的定義 程序的基本元素 標(biāo)識(shí)符和關(guān)鍵字 標(biāo)識(shí)符是以字母,下劃線( _ ) 開(kāi)始的一個(gè)字符序列,后面可以跟字母,下劃線,數(shù)字 關(guān)鍵字:具有專門(mén)的意義和用途,不能當(dāng)作一般的標(biāo)識(shí)符使用 數(shù)據(jù)類型、常量和變量 基本數(shù)據(jù)類型:整型、短整型、長(zhǎng)整型、單精度浮點(diǎn)型、雙精度浮點(diǎn)型、字符型、空類型 常量:直接使用;#define定義 變量:內(nèi)存空間 運(yùn)算符和表達(dá)式 算
2、術(shù)、關(guān)系、邏輯、位運(yùn)算、賦值、條件運(yùn)算 語(yǔ)句和控制流,數(shù)據(jù)類型、常量和變量,表達(dá)式中的數(shù)據(jù)類型轉(zhuǎn)換,兩種方式 強(qiáng)制轉(zhuǎn)換,使用 (DataType) 強(qiáng)制轉(zhuǎn)換,例 int a, b=1; float c=4.3; a = b + (int) c; 賦值表達(dá)式也會(huì)進(jìn)行強(qiáng)制轉(zhuǎn)換 a = b + c; 自動(dòng)轉(zhuǎn)換,表達(dá)式運(yùn)算中低精度變量自動(dòng)向高精度轉(zhuǎn)換 區(qū)別上面的a = b + (int) c;與a = b + c; 區(qū)別 c = 5/2; 與 c = 5.0/2; a = 5.0/2;與a = 5/2;,字符數(shù)據(jù)類型,字符類型數(shù)據(jù)與整數(shù)(0-255), 區(qū)別 char c1 = 0;賦初值為字符0 c
3、har c1= 0; 字符類型數(shù)據(jù)的運(yùn)算 char c2 = A; printf(“%c”, c2+1); 特殊類型字符 反斜線(Backslash) 退格(Backspace)b 回車(Carriage return)r 進(jìn)紙符(Form feed)f 制表符(Form feed)t 換行(New line)n 單引號(hào)(Single quote),自加自減運(yùn)算,區(qū)別+在變量前后 j = +i; 表示先將i的值加1,再賦給j,如果i的值是5,則j的值是6。(先給變量加1,再使用變量) j = i+; 表示先將i的值賦給j,再把i的值加1,如果i的值是5,則j的值是5。(先使用變量,再給變量加1
4、),課堂練習(xí),以下程序的輸出結(jié)果是( )。 main( ) int a=4,b=5; float c= a/b; printf(“%fn”,c); A 不確定值 B 0.8 C 0.000000 D 0 以下程序的輸出結(jié)果是( )。 main( ) int a=4,b=5; float c= (float)a/b; printf(“%fn”,c); A 不確定值 B 0.800000 C 0.000000 D 0 7. 當(dāng)執(zhí)行完以下語(yǔ)句后,變量a的值為( ),d的值為( ),e的值為( )。 a=6; b=+a; c=-a; d=a+; e=a-; 答案:C; B; 6, 6, 7,運(yùn)算符與表
5、達(dá)式,關(guān)系表達(dá)式:使用關(guān)系運(yùn)算符和括號(hào)將操作數(shù)連接起來(lái)的表達(dá)式稱為關(guān)系表達(dá)式: (大于),=(大于等于), y,(x+1) = 4,(-3+a-b*5) 1) if (a,運(yùn)算符優(yōu)先級(jí),最高優(yōu)先級(jí): ,-, , () /左右結(jié)合 單目運(yùn)算:-, , !, +, -, !(), sizeof /右結(jié)合 算術(shù)乘除運(yùn)算: *, /, % /左結(jié)合 算術(shù)加減運(yùn)算:+, - /左結(jié)合 移位運(yùn)算: , , = /左結(jié)合 相等關(guān)系運(yùn)算:=, != /左結(jié)合 按位與: 賦值語(yǔ)句,如:x = y + z; 函數(shù)調(diào)用語(yǔ)句,如:scanf(“%d”, 程序控制語(yǔ)句 空語(yǔ)句 ,輸入輸出,在標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù)(stdi
6、o.h)中,提供了通過(guò)標(biāo)準(zhǔn)輸入輸出設(shè)備(鍵盤(pán)和顯示器)進(jìn)行數(shù)據(jù)的輸入輸出函數(shù): 單個(gè)字符輸入:int getchar(),返回的是字符的ASCII碼 單個(gè)字符輸出:int putchar(int) 格式化輸入:int scanf(constrol_string, arg1, arg2, ) 格式化輸出:int printf(constrol_string, arg1, arg2, ),輸入輸出,getchar(), putchar(),輸入輸出,scanf() 和printf()的基本格式控制符有: %d:整數(shù)(int) %ld:整數(shù)(long) %hd:整數(shù)(short) %c:字符(cha
7、r) %s:字符串(字符數(shù)組) %f:?jiǎn)尉雀↑c(diǎn)數(shù)(float) %lf:雙精度浮點(diǎn)數(shù)(double),輸入輸出,在scanf()中的格式控制中,還可以控制多個(gè)輸入數(shù)據(jù)之間的分隔標(biāo)記,如:scanf(“%c,%d,%f”, 如果n的值為10,則輸出效果為,程序結(jié)構(gòu),順序程序結(jié)構(gòu):程序順序地執(zhí)行語(yǔ)句,語(yǔ)句出現(xiàn)的順序就是其執(zhí)行順序 循環(huán)程序結(jié)構(gòu):程序反復(fù)執(zhí)行某些語(yǔ)句 分支程序結(jié)構(gòu):控制多路選一的分支情況,三種結(jié)構(gòu)語(yǔ)句,程序控制語(yǔ)句及其控制說(shuō)明: 分支控制語(yǔ)句:if-else, switch-case/default 循環(huán)控制語(yǔ)句:while, do-while, for 此外,還有一些與程序轉(zhuǎn)移控
8、制有關(guān)的語(yǔ)句:break, continue, return 用大括號(hào)()把修飾性描述和語(yǔ)句組合在一起的,稱為復(fù)合語(yǔ)句。復(fù)合語(yǔ)句在語(yǔ)法上和簡(jiǎn)單語(yǔ)句是一樣的(代碼段:也包括不含有修飾性描述的情況),分支控制if-else,兩種形式 if (表達(dá)式) 語(yǔ)句/語(yǔ)句組 if (表達(dá)式) 語(yǔ)句/語(yǔ)句組 else 語(yǔ)句/語(yǔ)句組2 例 if (i0) y=x/i; else x=i; y=-x; ,分支控制if-else,嵌套if-else, 最近鄰原則-else與最近的if語(yǔ)句共同構(gòu)成一句 if (i0) if (ji) x=j; else x=i; 區(qū)別 if (i0) if (ji) x=j; els
9、e x=i;,分支控制if-else,分支控制if-else,分支控制if-else,分支控制if-else,多分支語(yǔ)句switch-case/default,另一類問(wèn)題,通常我們需要將一個(gè)表達(dá)式的值與多個(gè)不同的常量按順序進(jìn)行比較,選擇其中的匹配項(xiàng),執(zhí)行相應(yīng)部分的語(yǔ)句。這就是多分支語(yǔ)句。,多分支語(yǔ)句switch-case/default,表達(dá)式expression的值類型必須是整型或字符型:char, short, int, long case子句中的值valueI也必須是整型或字符型常量,而且所有case子句中的值應(yīng)是不同的 可以有任意數(shù)目的case條件,但不能有兩個(gè)完全相同的case表達(dá)式
10、,多分支語(yǔ)句switch-case/default,執(zhí)行switch語(yǔ)句時(shí),首先對(duì)表達(dá)式expression求值,然后與每個(gè)case子句中的常量值比較,若找到匹配的常量(相等),程序就執(zhí)行該分支的語(yǔ)句,直到整個(gè)switch語(yǔ)句結(jié)束,或者遇到一個(gè)break語(yǔ)句 如果所有條件都不滿足,且有default語(yǔ)句,則從default語(yǔ)句開(kāi)始執(zhí)行 default語(yǔ)句只能有一個(gè),但不必一定在最后,多分支語(yǔ)句switch-case/default,例 switch (c) case A: capa+; case a: lettera+; default: total+; ,例 switch (i) case
11、-1: n+; break; case 0: z+; break; case 1: p+; break; ,例 case a: case b: case c: case d: case e: case f: x+; 另: if (c=a) ,多分支語(yǔ)句switch-case/default,課堂練習(xí),1以下程序的輸出結(jié)果是( )。 void main() int k1=1,k2=2,k3=3,x=15; if(!k1) x-; else if(k2) if(k3) x=4; else x=3; printf(“x=%dn”,x); A x=4 B x=15 C x=14 D x=3 答案 A,
12、程序設(shè)計(jì)一般過(guò)程,例題 海水以半圓形侵蝕陸地,每年 50平方公里的速度,第一年開(kāi)始 在(0, 0)點(diǎn),問(wèn)給定坐標(biāo)(x, y), 第 幾年該點(diǎn)將被侵蝕,(x, y),程序設(shè)計(jì)一般過(guò)程,問(wèn)題分析 該點(diǎn)在第n年被侵蝕,表示以從原點(diǎn)到該點(diǎn) 間距離為半徑的半圓面積小于n年侵蝕的總 土地面積,而大于n-1年侵蝕的總面積 n=|(x2+ y2)*/2/50| | |表示上取整,程序設(shè)計(jì)一般過(guò)程,程序設(shè)計(jì) 確定程序的輸入輸出:讀入點(diǎn)坐標(biāo)x, y 確定輸入和中間計(jì)算結(jié)果的存儲(chǔ)方式:存儲(chǔ)實(shí)數(shù)變量x, y;計(jì)算出的整數(shù)年份n 確定計(jì)算過(guò)程:n=|(x2+ y2)*/2/50|,程序設(shè)計(jì)一般過(guò)程,程序?qū)崿F(xiàn),#incl
13、ude /將輸入輸出用到的庫(kù)函數(shù)(C語(yǔ)言中的函數(shù))包含進(jìn)來(lái) #include /將計(jì)算用到的庫(kù)函數(shù)包含進(jìn)來(lái) void main() /程序開(kāi)始 float x, y; /用來(lái)存放讀入的坐標(biāo)值 int year; /用于保存計(jì)算出來(lái)的年數(shù) scanf(%f%f, /將算出來(lái)的年數(shù)輸出到屏幕上 /程序結(jié)束 ,程序設(shè)計(jì)一般過(guò)程,程序調(diào)試運(yùn)行 輸入數(shù)據(jù) 驗(yàn)證結(jié)果,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 掌握從分析問(wèn)題到算法設(shè)計(jì)再到程序?qū)崿F(xiàn)的全過(guò)程 多做練習(xí),多讀優(yōu)秀代碼、模仿樣例解決類似問(wèn)題、分析問(wèn)題設(shè)計(jì)算法、總結(jié)經(jīng)驗(yàn),學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序
14、在內(nèi)存中的運(yùn)行過(guò)程 程序的構(gòu)成:語(yǔ)句 程序的執(zhí)行 順序執(zhí)行 分支、循環(huán)、函數(shù)調(diào)用可以改變執(zhí)行順序 程序的生存空間 內(nèi)存:存放程序與運(yùn)算結(jié)果(中間結(jié)果),#include stdafx.h int main() printf(Hello World!n); return 0; ,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 描述計(jì)算過(guò)程 基本語(yǔ)法 變量定義、引用;分支語(yǔ)句;循環(huán)語(yǔ)句;函數(shù)結(jié)構(gòu) 函數(shù)庫(kù) 基本算法,#include stdafx.h int main() int a=1, b=2; printf(%d, a+b); ,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的
15、運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 例 求一組數(shù)中的最大值、最小值: 逐個(gè)比較記住當(dāng)前的最大/最小值 判斷某年是否是閏年 數(shù)制轉(zhuǎn)換 判讀某數(shù)是否是素?cái)?shù) 字符串處理 ,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 掌握從分析問(wèn)題到算法設(shè)計(jì)再到程序?qū)崿F(xiàn)的全過(guò)程 分析問(wèn)題抽象數(shù)學(xué)模型設(shè)計(jì)計(jì)算過(guò)程和數(shù)據(jù)存儲(chǔ)方式代碼調(diào)試,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 掌握從分析問(wèn)題到算法設(shè)計(jì)再到程序?qū)崿F(xiàn)的全過(guò)程 多做練習(xí),多讀優(yōu)秀代碼、模仿樣例解決類似問(wèn)題、分析問(wèn)題設(shè)計(jì)算法、總結(jié)經(jīng)驗(yàn) 避免
16、重復(fù)的語(yǔ)法錯(cuò)誤,程序閱讀理解,輸入輸出 #include /包含輸入輸出函數(shù)的頭文件 int main() /主函數(shù) /主函數(shù)開(kāi)始記號(hào) int baby, mum; /定義兩個(gè)整型變量baby, mum scanf(“%dn”, /程序運(yùn)行結(jié)束返回 /主函數(shù)結(jié)束的記號(hào),程序閱讀理解,表達(dá)式 #include int main() int x, y, z; /定義三個(gè)整數(shù)變量 printf(Li Mings first calculator n); /顯示輸出 printf(Please input the first integer:n); /顯示輸出 scanf(%d, ,程序閱讀理解,分支
17、語(yǔ)句 #include int main() int x, y, z; /定義三個(gè)整數(shù)變量 char q; printf(Li Mings sencond calculator n); /顯示輸出 printf(Please input the operator:n); /顯示輸出 scanf(“%c”, /從鍵盤(pán)輸入一個(gè)整數(shù),switch(q) case +: z = x + y; break; case -: z = x - y; break; case *: z = x * y; break; case /: z = x / y; break; default: z = x; print
18、f(%d%c%d = %dn, x, q, y, z); /顯示輸出 printf(How great it is!n); /顯示輸出 return 0; ,程序閱讀理解,循環(huán)語(yǔ)句 #include int main() int i, b; /定義整數(shù)變量 int sum = 0; /定義整數(shù)變量 int a10; /定義整數(shù)數(shù)組變量,10個(gè)整數(shù)元素 for (i=1; i=10; i+) /循環(huán),從i=1開(kāi)始,i=11時(shí)結(jié)束 scanf(%d, ,程序閱讀理解,判斷語(yǔ)句,#include int main() int n, a, i; scanf (%d, ,程序閱讀理解,隨機(jī)數(shù) #include #i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年昭通市消防救援支隊(duì)招錄第五批政府專職消防員(83人)參考題庫(kù)附答案
- 2026廣西南寧市西鄉(xiāng)塘區(qū)那龍衛(wèi)生院招聘編外工作人員2人筆試備考試題及答案解析
- 2025年下半年宜賓市一中翠屏初級(jí)中學(xué)校公開(kāi)考核招聘合同制教師招聘(公共基礎(chǔ)知識(shí))測(cè)試題附答案
- 2025年甘肅省中材科技(酒泉)風(fēng)電葉片有限公司招聘208人公筆試備考試題附答案
- 2025年浙江溫州醫(yī)科大學(xué)附屬第一醫(yī)院招聘生物樣本庫(kù)實(shí)驗(yàn)員1人備考題庫(kù)附答案
- 2025廣東廣州市花都區(qū)獅嶺鎮(zhèn)聯(lián)合小學(xué)招聘臨聘教師1人備考題庫(kù)附答案
- AI賦能基因組醫(yī)學(xué):從技術(shù)突破到臨床實(shí)踐
- 2026福建省儲(chǔ)備糧管理有限公司莆田直屬庫(kù)招聘1人筆試備考試題及答案解析
- 2026福建漳州市鼓浪嶼故宮文物館招聘6人筆試備考試題及答案解析
- 2026重慶經(jīng)開(kāi)區(qū)物業(yè)管理有限公司招聘筆試參考題庫(kù)及答案解析
- 主管護(hù)師聘任述職報(bào)告
- AI搜索時(shí)代:從GEO到AIBE的品牌新藍(lán)圖
- 云南省2025年高二上學(xué)期普通高中學(xué)業(yè)水平合格性考試《信息技術(shù)》試卷(解析版)
- 產(chǎn)品知識(shí)培訓(xùn)會(huì)議總結(jié)
- 四川省成都市樹(shù)德實(shí)驗(yàn)中學(xué)2026屆九年級(jí)數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 與業(yè)主溝通技巧培訓(xùn)
- 專題11 圓(安徽專用)5年(2021-2025)中考1年模擬《數(shù)學(xué)》真題分類匯編
- 工程春節(jié)停復(fù)工方案(3篇)
- 社區(qū)基金使用管理辦法
- WST856-2025安全注射標(biāo)準(zhǔn)解讀
- 低壓控制基本知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論