歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

AVR單片機(jī)C語(yǔ)言編程--課件

  • 資源ID:253398715       資源大小:1.05MB        全文頁(yè)數(shù):99頁(yè)
  • 資源格式: PPT        下載積分:20積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

AVR單片機(jī)C語(yǔ)言編程--課件

,,,,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),ppt課件,*,單擊此處編輯母版標(biāo)題樣式,*,,,,,,,,,,,,,,,,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,ppt課件,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,機(jī)電系統(tǒng)控制電路設(shè)計(jì),*,,,,,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,機(jī)電系統(tǒng)控制電路設(shè)計(jì),*,機(jī)電系統(tǒng)控制電路設(shè)計(jì),張志安,南京理工大學(xué),1,ppt課件,機(jī)電系統(tǒng)控制電路設(shè)計(jì)張志安南京理工大學(xué)1ppt課件,1 C,語(yǔ)言基礎(chǔ),2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,3,程序控制語(yǔ)句,4,函數(shù)及其調(diào)用,5,編譯預(yù)處理,6,數(shù)組及指針,AVR,單片機(jī),C,語(yǔ)言編程基礎(chǔ),2,ppt課件,1 C語(yǔ)言基礎(chǔ)AVR單片機(jī)C語(yǔ)言編程基礎(chǔ)2ppt課件,1 C,語(yǔ)言基礎(chǔ),例子,1,,3,ppt課件,1 C語(yǔ)言基礎(chǔ)例子 1 3ppt課件,例子,2,1 C,語(yǔ)言基礎(chǔ),4,ppt課件,例子 2 1 C語(yǔ)言基礎(chǔ)4ppt課件,1 C,語(yǔ)言基礎(chǔ),例子,3,,5,ppt課件,1 C語(yǔ)言基礎(chǔ)例子 3 5ppt課件,1 C,語(yǔ)言基礎(chǔ),/*,給定半徑,求圓的面積*,/,#define PI 3.14159 /*,編譯預(yù)處理,——,宏替換*,/,#include <stdio,.,h> /*,編譯預(yù)處理,——,文件包含*,/,#include <math,.,h> /*,編譯預(yù)處理,——,文件包含*,/,main( ) /*,主函數(shù)*,/,{,float r,s; /*,定義變量,r,、,s,類型為單精度實(shí)型*,/,,r =1.0; /*,變量,r,賦初值*,/,s=PI * pow(r,2); /*,計(jì)算圓面積,s*/,printf (",半徑,R=%f,時(shí),面積,S=%f \n",r,s); /*,輸出結(jié)果*,/,},例,4,求圓面積程序,,area.c,6,ppt課件,1 C語(yǔ)言基礎(chǔ)/*給定半徑,求圓的面積*/例 4 求圓面積,關(guān)于編譯預(yù)處理(宏定義),1 C,語(yǔ)言基礎(chǔ),#define PI 3.14159 ---,不帶參數(shù),#define S(a,b) a*b---,帶參數(shù),,#define —,宏定義命令,,PI —,符號(hào)常量(宏名,最好用大寫,以區(qū)別一般變量),,3.14159 —,宏體(可以是一個(gè)表達(dá)式,如,3+4,),作用:用簡(jiǎn)單符號(hào)代表宏體部份內(nèi)容(編譯時(shí)會(huì)先自動(dòng)替換),意義:直觀,/,多次使用,/,便于修改,注意:,#define,可出現(xiàn)在程序的任一位置,(作用范圍:由此行到程序末尾),宏定義不是,C,語(yǔ)句,不必在行未加分號(hào),否則會(huì)連分號(hào)一起置換。,,7,ppt課件,關(guān)于編譯預(yù)處理(宏定義)1 C語(yǔ)言基礎(chǔ)#define PI,1 C,語(yǔ)言基礎(chǔ),#include ,stdio.h——“,頭文件”(標(biāo)準(zhǔn)前導(dǎo)文件),C,語(yǔ)言是一種“裝配式”語(yǔ)言,許多常規(guī)的工作如輸入、輸出、數(shù)學(xué)函數(shù)等,往往事先由人做成各種“程序模塊”,(,庫(kù)函數(shù),),,存放在各種所謂“頭文件”(,.h,)中。使用時(shí)只需進(jìn)行以下處理,—,#include “,頭文件名” 或,#include <,頭文件名,>,在程序的執(zhí)行部分調(diào)用該庫(kù)函數(shù):函數(shù)名(參數(shù)),文件包含的作用,就是根據(jù)需要把相應(yīng)的某個(gè)“頭文件”的內(nèi)容在編譯時(shí)先整體嵌入所編的程序中。,用戶也可以將自己設(shè)計(jì)的程序模塊等做成“頭文件”,供其他程序“包含”。,關(guān)于編譯預(yù)處理(文件包含),8,ppt課件,1 C語(yǔ)言基礎(chǔ)#include 關(guān)于編譯,1 C,語(yǔ)言基礎(chǔ),標(biāo)識(shí)符被,#define,命令定義過,#ifdef,標(biāo)識(shí)符,,程序段,1,#else,,程序段,2,#endif,,關(guān)于編譯預(yù)處理(條件編譯),標(biāo)識(shí)符未被,#define,命令定義過,#ifndef,標(biāo)識(shí)符,,程序段,1,#else,,程序段,2,#endif,,#if,表達(dá)式,----,表達(dá)式真執(zhí)行程序段,1,,假執(zhí)行程序段,2,,程序段,1,#else,,程序段,2,#endif,,9,ppt課件,1 C語(yǔ)言基礎(chǔ)標(biāo)識(shí)符被#define 命令定義過關(guān)于編譯預(yù)處,1 C,語(yǔ)言基礎(chǔ),,關(guān)于主函數(shù),,,main( ) {……},C,語(yǔ)言是一種函數(shù)式語(yǔ)言,它的一個(gè)函數(shù)實(shí)際上就是一個(gè)功能模塊,——C,程序的基本組成是函數(shù)。,一個(gè),C,程序是由一個(gè)固定名稱為,main,的主函數(shù)和若干個(gè)其他函數(shù)(可沒有)組成。,一個(gè),C,程序必須有一個(gè)、也只能有一個(gè)主函數(shù)。,主函數(shù)在程序中的位置可以任意,但程序執(zhí)行時(shí)總是從主函數(shù)開始,在主函數(shù)內(nèi)結(jié)束。,主函數(shù)可以調(diào)用其他各種函數(shù)(包括用戶自己編寫的),但其他函數(shù)不能調(diào)用主函數(shù)。,10,ppt課件,1 C語(yǔ)言基礎(chǔ) 關(guān)于主函數(shù) mai,主函數(shù)的一般形式:,main( ) {,,說明部分程序段(定義數(shù)據(jù)類型),執(zhí)行部分程序段(給出操作指令),},說明部分(簡(jiǎn)單程序可能沒有此部分),:,,float r,s;,/*,定義變量,r,、,s,類型為單精度實(shí)型*,/,int a,b;,/*,定義變量,a,、,b,類型為整型*,/,執(zhí)行部份:輸入、賦值、計(jì)算、控制、輸出等,:,,r=1.0;,/*,變量,r,賦初值*,/,s=PI,*,pow(r,2);,/*,計(jì)算圓面積,s*/,printf(",半徑,R=%f,時(shí),面積,S=%f \n",r,s);,/*,輸出結(jié)果*,/,1 C,語(yǔ)言基礎(chǔ),11,ppt課件,主函數(shù)的一般形式:main( ) {說明部分(簡(jiǎn)單程序可能沒,其他函數(shù),標(biāo)準(zhǔn)庫(kù)函數(shù),——,只能調(diào)用 。使用方法:,⒈先“包含”,即將該函數(shù)所在頭文件包含在程序中。,⒉后調(diào)用。調(diào)用方式:函數(shù)名(參數(shù)),例:,#include ,#include ,main( ),,{,,……,,s=PI,*,pow(r,2);,,……,,,printf(“,半徑,R=%f,時(shí),面積,S=%f\n”,r,s);,},說明:,pow(x,y),求,x,y,,(,math.h,中的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)),,printf(……); (stdio.h,中的標(biāo)準(zhǔn)輸出函數(shù),),,,1 C,語(yǔ)言基礎(chǔ),12,ppt課件,其他函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)——只能調(diào)用 。使用方法: 例: #in,其他函數(shù),自編(定義)函數(shù):,⒈ 先定義(規(guī)定函數(shù)類型、函數(shù)名和函數(shù)功能),⒉ 后調(diào)用(使用所定義的函數(shù)實(shí)現(xiàn)其功能),,定義函數(shù):,函數(shù)類型 函數(shù)名(形式參數(shù)),,{,(函數(shù)體),},,調(diào)用函數(shù):,函數(shù)名(參數(shù)),求三個(gè)數(shù)的平均值,float average ( float x, float y, float z) /*,定義函數(shù),average( )*/,{,float aver;,aver=(x+y+z)/3;,return(aver);,},main( ) /*,主函數(shù)*,/,{ float a,b,c,ave;,a=3.5;b =4.6;c =7.9;,ave=average(a,b,c); /*,調(diào)用自定義函數(shù),average( )*/ printf(,",average=%f,",,ave);,},1 C,語(yǔ)言基礎(chǔ),13,ppt課件,其他函數(shù)自編(定義)函數(shù): 求三個(gè)數(shù)的平均值1 C語(yǔ)言基礎(chǔ)1,關(guān)于語(yǔ)句:,,①數(shù)據(jù)類型定義語(yǔ)句,語(yǔ)句形式,,變量類型關(guān)鍵字,,變量名;,,float,,r,s;,,定義,r,、,s,為單精度實(shí)型變量,,,int,,r,s;,,定義,r,、,s,為整型變量,【,注意,】,在,C,語(yǔ)言程序中,,,所有變量都要先定義后使用,否則就會(huì)出現(xiàn)編譯錯(cuò)誤提示,如:,Error:,,Undefined symbol ‘ a’ in function main,,Let’s try,…,變量類型關(guān)鍵字,字符型(描述文字性的數(shù)據(jù)),char,,數(shù)值型,:,,■,整型(在機(jī)內(nèi)是準(zhǔn)確表示的,),,,int,,■,實(shí)型(在機(jī)內(nèi)一般是近似表示的,),,float,(,有效數(shù)字,6,位),,double,(,有效數(shù)字,16,位,),變量名,,C,語(yǔ)言,標(biāo)識(shí)符,(變量名、符號(hào)常量名、函數(shù)名等)命名:,■組成:字母、數(shù)字、下劃線,■開頭:字母、下劃線,■長(zhǎng)度:≤,32,字符,【,注意,】,大小寫為不同字符(變量名一般小寫,符號(hào)常,量 名一般大寫),還要注意不得與,關(guān)鍵字,同名。,1 C,語(yǔ)言基礎(chǔ),14,ppt課件,關(guān)于語(yǔ)句: ①數(shù)據(jù)類型定義語(yǔ)句語(yǔ)句形式 變量類型,關(guān)于語(yǔ)句:,②賦值語(yǔ)句,作用:使變量獲得具體的運(yùn)算值。,語(yǔ)句形式,,變量名,=,表達(dá)式,(常量、變量、函數(shù)、算式及其混合);,,r,=,1.0,;,,/*,變量,r,賦初值*,/,,s,=,PI*pow(r,2),;,,/*,計(jì)算圓面積,s*/,變量賦初值亦可在數(shù)據(jù)類型定義時(shí)進(jìn)行:,,float r =1.0, s;,,把變量聲明語(yǔ)句與賦值結(jié)合在一起的語(yǔ)句,術(shù)語(yǔ)上稱為 “初始化語(yǔ)句”。,1 C,語(yǔ)言基礎(chǔ),15,ppt課件,關(guān)于語(yǔ)句: ②賦值語(yǔ)句作用:使變量獲得具體的運(yùn)算值。1 C,關(guān)于語(yǔ)句:,,③輸出語(yǔ)句,作用:將運(yùn)算結(jié)果送到顯示器屏幕顯示出來,語(yǔ)句形式,printf,(,……,),;,,printf,(,",半徑,R=%f,時(shí),面積,S=%f\n",r,s,);,,printf,(,“Hello,everyone!”,);,【,注意,】C,語(yǔ)言本身沒有輸入、輸出語(yǔ)句,其功能要借用有關(guān)函數(shù)來實(shí)現(xiàn)。,,%f —,格式字符串,,\n —,控制字符(轉(zhuǎn)義字符),\n,表示回車換行,,引號(hào)中的其他部分照原樣輸出,1 C,語(yǔ)言基礎(chǔ),16,ppt課件,關(guān)于語(yǔ)句: ③輸出語(yǔ)句作用:將運(yùn)算結(jié)果送到顯示器屏幕顯示出,關(guān)于格式字符串,表示該處將用,printf,語(yǔ)句引號(hào)外對(duì)應(yīng)表達(dá)式的值替換后輸出,例:若,r =1,s=3.14,,printf,(“,半徑,R=%f,時(shí),面積,S=%f\n”,r,s);,,輸出結(jié)果:,半徑,R=1,時(shí),面積,S=3.140000,常用格式字符串:,字符型:,%c,,單字符,,%s,,字符串,數(shù)值型:,%d,,整數(shù)(十進(jìn)制),,%f,,實(shí)數(shù)(小數(shù)形式,默認(rèn)為,6,位小數(shù)),例一,,int x = 5;,f loat y =3;,printf ("a=%d,b=%f,c=%s",x,y, "abcdefg");,輸出結(jié)果:,,a=5,b=3.000000,c=abcdefg,例二,,int x = 5;,f loat y =3;,printf ("a=%d,b=%f,c=%s",x+2,y*3, "123defg");,輸出結(jié)果:,,a=7,b=9.000000,c=123defg,1 C,語(yǔ)言基礎(chǔ),17,ppt課件,關(guān)于格式字符串表示該處將用printf語(yǔ)句引號(hào)外對(duì)應(yīng)表達(dá)式的,C,語(yǔ)言程序的基本結(jié)構(gòu),一個(gè),C,程序是由一個(gè)固定名稱為,main,的主函數(shù)和若干個(gè)其他函數(shù)(可缺省)組成。,,其,基本結(jié)構(gòu),一般形式如右圖所示。,編譯預(yù)處理部分,(,可選,),main( ),{,說明部分,/*,變量定義等*,/,執(zhí)行部分,/*,輸入,/,輸出,/,計(jì)算*,/,,},,其他函數(shù),(,可選,位置任意,),1 C,語(yǔ)言基礎(chǔ),返回,18,ppt課件,C語(yǔ)言程序的基本結(jié)構(gòu) 一個(gè)C程序是由一個(gè)固定名稱為main的,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,19,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式19ppt課件,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,20,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式20ppt課件,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,,可知對(duì)不同數(shù)據(jù)類型占用的存儲(chǔ)空間,:,,char<short<=int<long <=float<double,如求某一類型數(shù)據(jù)所占存儲(chǔ)字節(jié)數(shù),可用運(yùn)算符:,sizeof,(,類型關(guān)鍵字,),Example:,main( ),{,printf(“char:%d,字節(jié),\n”,,,sizeof,(,char,));,printf(“float:%d,字節(jié),\n”,,,sizeof,(,float,));,},結(jié)果顯示:,,char:1,字節(jié),float:4,字節(jié),21,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 可知對(duì)不同數(shù)據(jù)類型占用的存儲(chǔ),2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,常量,整型常量,十進(jìn)制數(shù),12 -123,,八進(jìn)制數(shù),012 -012,十六進(jìn)制數(shù),0x12 -0x12,實(shí)型常量,,,十進(jìn)制形式,123.45 2.0 123. (,必有小數(shù)點(diǎn),),,指數(shù)形式,2.45e-4 1.13E3 (e,或,E,前為數(shù),,,后為整數(shù),),,實(shí)型常量本身無(wú)單或雙精度,,,其機(jī)內(nèi)精度取決于賦給那類變量,字符常量,/,字符串常量,22,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式常量整型常量 22ppt課件,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,變量,注意:,變量必須,先定義,后使用,變量名必須符合,標(biāo)識(shí)符,命名規(guī)則,例:,b=(a=3+5) a=b=c=d=3+5 (,結(jié)果均為,8,),例:,int a=b=c=d=3+5,(語(yǔ)法錯(cuò)誤,除非,b,c,d,定義過),正確:,int a, b=a=3+5;,,例:,c=3+(a=5)*6,,結(jié)果:,c=33,a=5,(一個(gè)語(yǔ)句可以有幾個(gè)賦值運(yùn)算),23,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式變量注意: 例: b=(a=3+,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符,①算術(shù)運(yùn)算符,+,- *,/ %,(取余數(shù)-模),+ + – –,,++,(,自加運(yùn)算符,),--,(,自減運(yùn)算符,),用法,: +1 -1,運(yùn)算,a,、前綴形式,,int i=5; x = ++ i ; y= i ;,(x=6, i =6, y=6),,int i =5; ++ i ; y= i ;,( i =6, y=6),b,、后綴形式,,int i =5; x = i ++; y= i ;,(x=5, i =6, y=6),,int i =5; i ++; y= i ;,( i =6, y=6),,24,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符①算術(shù)運(yùn)算符 +,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符,②自反算術(shù)賦值運(yùn)算符,(,復(fù)合的賦值運(yùn)算符,),,,+= -= *= /=,解法,:,將,b*=…,看作,b=b*(…),,其余類推,例:,c=b*=a+3,,相當(dāng)于,(1)a+3 (2)b=b*(a+3) (3)c=b,,例:若,i,、,j,的初值分別為,3,和,4,,則執(zhí)行,,j+=i- =1,,后,i,、,j,的值為多少,?,解題步驟:,,i=i-1=3-1=2,j=j+i=4+2=6,結(jié)果:,i=2, j=6,25,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符②自反算術(shù)賦值運(yùn)算符(復(fù)合,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符,③關(guān)系運(yùn)算(比較運(yùn)算),> = <= == !=,關(guān)系表達(dá)式: 含有關(guān)系運(yùn)算符的表達(dá)式,特別注意,,a≤X≤b,之類算式的正確寫法 :,,a<=x && x<=b,(錯(cuò)誤寫法:,a<=X<=b,),【,例一,】,main( ),{,int m=5;,if (m++>5),printf(“m>5”);,else,{,printf(“m=%d,”,,m--);,printf(“m=%d”,m--);,},},運(yùn)算結(jié)果,:,,m=6,m=5,【,例二,】,main( ),{,int m=5;,if (++m>5),printf(“m>5”);,else,{,printf(“m=%d,”,,m--);,printf(“m=%d”,m--);,},},運(yùn)算結(jié)果,:,,m,>,5,26,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符③關(guān)系運(yùn)算(比較運(yùn)算),2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符,④邏輯運(yùn)算,,&&,(與運(yùn)算符) 運(yùn)算符兩邊均為真時(shí),結(jié)果為真,,||,(或運(yùn)算符) 運(yùn)算符兩邊均為假時(shí),結(jié)果為假,?。ǚ沁\(yùn)算符) 將運(yùn)算符右邊真假倒置,邏輯運(yùn)算符的任一端如果為非,0,數(shù),則視為“真”,為,0,則視為假。,,【,例,】 printf(“%d”, !3+5),結(jié)果為,5,printf(“%d”, !0+5),結(jié)果為,6,注意:,!,優(yōu)先于關(guān)系運(yùn)算符,與,++,、,--,同級(jí)。,【,例一,】,,main( ),{,int a=1,b=2,m=2,n=2;,(m=a>b),printf("%d\n",n);,},運(yùn)行結(jié)果:,n=2,【,例二,】,main( ),{,int a=1,b=2,m=2,n=2;,(m=b>a),printf("%d\n",n);,},運(yùn)行結(jié)果:,n=3,原因:,在,&&,和,||,的左邊如果能判斷出結(jié)果,則右邊不再作運(yùn)算。,結(jié)論:,在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都會(huì)被執(zhí)行。只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。,27,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符④邏輯運(yùn)算 【例一】運(yùn)行結(jié),2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符,⑤條件運(yùn)算,,,…,?,… : …,,(三元運(yùn)算符,即需連接三個(gè)運(yùn)算量),一般形式:,,,e1,?,e2:e3,,(,e1,為條件表達(dá)式,,e2,e3,為任意類型表達(dá)式),功能:,如果,e1≠0,(為真),運(yùn)算結(jié)果為,e2,的值。,如果,e1=0,(為假),則取,e3,的值。,【,例,】,分別令,x=3,x=0,x= -5,,求運(yùn)行結(jié)果。,main( ),{ int x,y;,printf(“Input x=”);,scanf(“%d”,,y=x>0?1:x<0?-1:0;,/*,結(jié)合方向:由右向左*,/,printf(“x=%d,y=%d\n”,x,y);,},結(jié)果:,x=3,y=1,x=0,y=0,x=-5,y=-1,,1,(x>0),,y= 0,(x=0),,-1,(x<0),,28,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符⑤條件運(yùn)算 【例】分別令,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符,⑥位操作運(yùn)算符,,,&,(,與,AND),|,(或,OR,),^,(異或,XOR,),,~,(非,NOT,),,,<<,(左移),>>,(右移),29,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符⑥位操作運(yùn)算符 29pp,2,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,運(yùn)算符的優(yōu)先級(jí),返回,30,ppt課件,2 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式運(yùn)算符的優(yōu)先級(jí)返回30ppt課件,3,程序控制語(yǔ)句,條件控制語(yǔ)句,if,語(yǔ)句,1,、簡(jiǎn)單,if,語(yǔ)句,if,(,表達(dá)式,),{,程序段,},下面程序的功能是:,如果輸入的數(shù)據(jù)大于等于,60,,則輸出,You are passed!,:,scanf(“%d”,,if,(,x>=60,),{,,printf(“You are passed!\n”);,},31,ppt課件,3 程序控制語(yǔ)句條件控制語(yǔ)句if語(yǔ)句1、簡(jiǎn)單if語(yǔ)句 31p,3,程序控制語(yǔ)句,條件控制語(yǔ)句,2,、,if-else,語(yǔ)句,if(,表達(dá)式,),{,,程序段,,},else,{,,程序段,},如果輸入的數(shù)據(jù)大于等于,60,,則輸出,You are passed!,否則輸出,You failed!,scanf(,“,%d,”,,,if(x>=60),{,,printf(,“,You are passed!\n,”,);,},else,{,printf(,“,You failed!\n,”,);,},if,語(yǔ)句,32,ppt課件,3 程序控制語(yǔ)句條件控制語(yǔ)句2、if-else語(yǔ)句如果輸入的,3,程序控制語(yǔ)句,條件控制語(yǔ)句,#include ,main(),{,int x,y=100,z=0;,x=180;,if(x<y),//,交換,x,和,y,,{,z=x;,x=y;,y=z;,},rintf("x=%d,y=%d\n",x,y);,},#include ,main(),{,int x,y=100,z=0;,,x=180;,if(x<y),z=x;,x=y;,y=z;,rintf("x=%d,y=%d\n",x,y);,},運(yùn)行結(jié)果:,x=180,y=100,運(yùn)行結(jié)果:,x=100,y=0,if,語(yǔ)句,33,ppt課件,3 程序控制語(yǔ)句條件控制語(yǔ)句#include <stdio.,3,程序控制語(yǔ)句,條件控制語(yǔ)句,第,3,種,if,語(yǔ)句,if,(表達(dá)式,1,),{,語(yǔ)句,1,;,},,else if,(表達(dá)式,2,),{,語(yǔ)句,2,;,,,……,},else if,(表達(dá)式,n,),{,語(yǔ)句,n,;,},,else,{,語(yǔ)句,n+1,;,},if(x>0&&x<=10),{,printf(“[0..10]\n");,},else,if(x>10&&x<=20),{,printf(“,[,,10..20]\n");,},else,{,printf("error\n");,},if,語(yǔ)句,34,ppt課件,3 程序控制語(yǔ)句條件控制語(yǔ)句第3種if語(yǔ)句if(x>0&&x,3,程序控制語(yǔ)句,條件控制語(yǔ)句,switch,語(yǔ)句,switch(,變量或表達(dá)式,P,),{,case,常量表達(dá)式,C1,:程序段,S1,,break;,case,常量表達(dá)式,C2,:程序段,S2,,break;,…….,case,常量表達(dá)式,Cn,:程序段,Sn,,break;,default,: 程序段,Sn+1,,break;,},35,ppt課件,3 程序控制語(yǔ)句條件控制語(yǔ)句switch語(yǔ)句switch(變,#include ,main(),{,char ch;,printf("input the mark(A,B,C,D,E or F)");,scanf("%c",,switch(,ch,),{,case ',A,':printf("100\n"); break;,case ',B,':printf("90\n"); break;,case ',C,':printf("80\n"); break;,case ',D,':printf("70\n"); break;,case ',E,':printf("60\n"); break;,case ',F,':printf("50\n"); break;,default:printf("input error!\n");,},},3,程序控制語(yǔ)句,條件控制語(yǔ)句,switch,語(yǔ)句,運(yùn)行結(jié)果,:,input the mark(A,B,C,D,E or F),D,70,36,ppt課件,#include 3 程序控制語(yǔ)句條件控,,break,子句可以省略,但是否省略,break,子句,要根據(jù)算法的邏輯而定。因?yàn)闆]有了,break,語(yǔ)句,,switch,語(yǔ)句會(huì)被執(zhí)行到語(yǔ)句結(jié)束。,3,程序控制語(yǔ)句,條件控制語(yǔ)句,switch,語(yǔ)句,char ch=‘N’;,switch(ch),{,case 'Y':printf("Yes\n");,break;,case 'N':printf("No\n");,,,break;,case 'A':printf("All\n");,break;,},char ch=‘N’;,switch(ch),{,case 'Y':printf("Yes\n");,break;,case 'N':printf("No\n");,,case 'A':printf("All\n");,break;,},輸出:,No,輸出:,No,All,37,ppt課件,break子句可以省略,但是否省略break子句,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,while,語(yǔ)句,while,語(yǔ)句的形式:,while,(,表達(dá)式,P,),{,程序段,S,},,int a;,long sum;//sum should be long type,sum=0;,a=1;,while(a<=100),{,sum+=a;,a++;,},printf("1+2+...+%d=%ld\n",100,sum);,while,語(yǔ)句的例子:計(jì)算,1+2+3+,…,+100,的值,,通常情況下,程序中會(huì)利用,一個(gè),變量,來,控制,while,語(yǔ)句的表,達(dá)式,P,的值,這個(gè)變量被稱為,循,環(huán)控制變量,。在執(zhí)行,while,語(yǔ)句,之前,循環(huán)控制變量,必須初始化,,否則執(zhí)行的結(jié)果將是不可預(yù)知的。,上面的程序重新編寫,其運(yùn)行結(jié)果將是不可預(yù)知的,因?yàn)?a,未初始化:,,int a;,long sum;//sum should be long type,sum=0;,,//a should be initialized here,,,while(a<=100),{,sum+=a;,a++;,},printf("1+2+...+%d=%ld\n",100,sum);,38,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句while語(yǔ)句while語(yǔ)句的形,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,while,語(yǔ)句,有關(guān),while,語(yǔ)句的幾點(diǎn)說明,1,、要在,while,語(yǔ)句的某處(表達(dá)式,P,或循環(huán)體內(nèi))改變循環(huán)控制變量的值,否則極易構(gòu)成,死循環(huán),。下面的,while,語(yǔ)句便是死循環(huán):,x=2;,while(x<10),{//,死循環(huán),因?yàn)?x,的值沒有變化,永遠(yuǎn)小于,10,sum+=x;,},printf(“%ld”,sum);,39,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句while語(yǔ)句有關(guān)while語(yǔ)句,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,while,語(yǔ)句,有關(guān),while,語(yǔ)句的幾點(diǎn)說明,2,、如果在執(zhí)行循環(huán)體過程中,遇到了,break,子句,則跳出,while,循環(huán)。比如,上面求,1+2+…+100,的程序可以這樣設(shè)計(jì):,a=1;,sum=0;,while(1),{,if(a>100)break;,sum+=a;,a++;,},40,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句while語(yǔ)句有關(guān)while語(yǔ)句,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,while,語(yǔ)句,有關(guān),while,語(yǔ)句的幾點(diǎn)說明,3,、如果在執(zhí)行循環(huán)體過程中,遇到了,continue,語(yǔ)句,則循環(huán)體中,continue,語(yǔ)句后面的其他語(yǔ)句將被跳過,而直接進(jìn)入下一輪循環(huán)。,a=1;,while(a<=10),{,printf("%d",a);,a++;,if(a%5==1),continue;,printf("*");,},運(yùn)行結(jié)果:,12,*3*4*5*,67,*8*9*10,41,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句while語(yǔ)句有關(guān)while語(yǔ)句,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,do-while,語(yǔ)句,do-while,語(yǔ)句的形式:,do,{,,程序段,S,},while(,表達(dá)式,P);,do-while,語(yǔ)句的例子:計(jì)算,1+2+3+,…,+100,的值,,int a;,long sum;,sum=0;,a=1;,,do,{,,,sum+=a;,a++;,,},while(a<=100);,,printf("1+2+...+%d=%ld\n",100,sum);,,,do-while,語(yǔ)句與,while,語(yǔ)句大體相同,但要特別注意,,while( ),后面的分號(hào)不要漏掉。此外,,while,語(yǔ)句的循環(huán)體可能永遠(yuǎn)不被執(zhí)行,但,do-while,語(yǔ)句的循環(huán)體至少被執(zhí)行一次。,42,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句do-while語(yǔ)句do-whi,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,for,語(yǔ)句,for,語(yǔ)句的形式:,必須是分號(hào) 必須是分號(hào),↓ ↓,for,(,表達(dá)式,1,,;,,表達(dá)式,2,,;,,表達(dá)式,3,),{,,程序段,S,},,43,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句for語(yǔ)句for語(yǔ)句的形式: 4,3,程序控制語(yǔ)句,循環(huán)控制語(yǔ)句,for,語(yǔ)句,,int a;,long sum;,sum=0;,,for,(,a=1,;,a<=100,;,a++,),{,,sum+=a;,},printf("1+2+...+%d=%ld\n",100,sum);,for,語(yǔ)句的例子:用,for,語(yǔ)句實(shí)現(xiàn),1+2+…+100,求和,44,ppt課件,3 程序控制語(yǔ)句循環(huán)控制語(yǔ)句for語(yǔ)句 int a; for,3,程序控制語(yǔ)句,三種循環(huán)控制語(yǔ)句的比較,在使用,while,和,do-while,語(yǔ)句時(shí),循環(huán)控制變量的變化必須放在循環(huán)體內(nèi)。而,for,語(yǔ)句卻可以利用表達(dá)式,3,來改變循環(huán)控制變量的值。,在使用,while,和,do-while,語(yǔ)句時(shí),必須在,while,或,do-while,語(yǔ)句前初始化循環(huán)控制變量。但,for,語(yǔ)句卻可以利用表達(dá)式,1,來初始化循環(huán)控制變量。,do-while,語(yǔ)句的循環(huán)體至少被執(zhí)行一次,但,while,語(yǔ)句和,for,語(yǔ)句的循環(huán)體可能一次也執(zhí)行不到。,while,語(yǔ)句和,do-while,語(yǔ)句中不能省略循環(huán)條件(即表達(dá)式,P,),但,for,語(yǔ)句卻可以省略循環(huán)條件(即表達(dá)式,2,)。,break,語(yǔ)句和,continue,語(yǔ)句在這,3,種循環(huán)語(yǔ)句中的作用是相同的。,凡是用,while,語(yǔ)句能實(shí)現(xiàn)的循環(huán),必然能用,for,語(yǔ)句實(shí)現(xiàn),反過來也一樣。,45,ppt課件,3 程序控制語(yǔ)句三種循環(huán)控制語(yǔ)句的比較在使用while和do,3,程序控制語(yǔ)句,三種循環(huán)控制語(yǔ)句的選用及循環(huán)嵌套,返回,46,ppt課件,3 程序控制語(yǔ)句三種循環(huán)控制語(yǔ)句的選用及循環(huán)嵌套返回46pp,4,函數(shù)及其調(diào)用,C,語(yǔ)言的函數(shù)是,子程序,的總稱,,包括函數(shù)和過程。(,有返回值,、,無(wú)返回值,,,有參函數(shù),,,無(wú)參函數(shù),)。,C,語(yǔ)言函數(shù)可以分為,庫(kù)函數(shù),、用戶,自定義函數(shù),。庫(kù)函數(shù)由系統(tǒng)提供,程序員只需要使用(,調(diào)用,),用戶自定義函數(shù)需要程序員,自己編制,。,C,語(yǔ)言的程序由,函數(shù),組成,函數(shù)是,C,語(yǔ)言程序的,基本單位。,47,ppt課件,4 函數(shù)及其調(diào)用C語(yǔ)言的函數(shù)是子程序的總稱,包括函數(shù)和過程。,4,函數(shù)及其調(diào)用,C,語(yǔ)言程序的,結(jié)構(gòu)如圖,所示。在每個(gè)程序中,,主函數(shù),main,是必須的,它是所有程序的,執(zhí)行起點(diǎn),,,main,函數(shù),只調(diào)用,其它函數(shù),不能為其它函數(shù)調(diào)用。其它函數(shù),沒有,主從關(guān)系,可以,相互調(diào)用,。所有函數(shù)都可以調(diào)用,庫(kù)函數(shù),。程序的總體功能通過,函數(shù)的調(diào)用,來實(shí)現(xiàn)。,f11( ),{…},f11( ),{…},f31( ),{…},f1( ),{…,f11( );,…},f2( ),{…,f11( );,f22( );,…},main( ),{…,f1( );,…,f2( );,…},48,ppt課件,4 函數(shù)及其調(diào)用C語(yǔ)言程序的結(jié)構(gòu)如圖所示。在每個(gè)程序中,主函,4,函數(shù)及其調(diào)用,函數(shù)應(yīng)當(dāng),先定義,,,后調(diào)用,,函數(shù)定義的一般形式,函數(shù)返回值的數(shù)據(jù)類型,,函數(shù)名,(,類型名 變量名,1,,,,類型名 變量名,2,,,……,),,{,聲明部分,//,定義本函數(shù)所使用的變量和進(jìn)行有關(guān)聲明(,如函數(shù)聲明,),處理語(yǔ)句,//,程序段,由若干條語(yǔ)句組成(可以在其中,調(diào)用其它函數(shù),),,},【,注意,】,無(wú)形參表的即無(wú)參函數(shù)。無(wú)函數(shù)體的為“空函數(shù)”。,如果函數(shù)返回值的數(shù)據(jù)類型為,int,,可以省略之。,如果不返回值,定義為,void,類型。,49,ppt課件,4 函數(shù)及其調(diào)用函數(shù)應(yīng)當(dāng)先定義,后調(diào)用 49ppt課件,4,函數(shù)及其調(diào)用,函數(shù)定義舉例:,main(),{ int n1,n2,n3,nmax;,scanf(“%d%d%d”,,if(n1>n2),nmax=n1;,else nmax=n2;,if(n3>nmax),nmax=n3;,printf(“max=%d\n”,,,nmax);,},,輸入三個(gè)整數(shù),求三個(gè)整數(shù)中的最大值,不使用函數(shù),(,除,main,外,),int max(int,int,int);,main(),{ int n1,n2,n3,nmax;,scanf(“%d%d%d”,,nmax=max(n1,n2,n3);,printf(“max=%d\n “,nmax);,},int max(int x,int y,int z),{ int m;,if(x>y),m=x;,else,m=y;,if(z>m)m=z;,return m;,},輸入三個(gè)整數(shù),求三個(gè)整數(shù)中的最大值,使用函數(shù),子函數(shù)定義,50,ppt課件,4 函數(shù)及其調(diào)用函數(shù)定義舉例:輸入三個(gè)整數(shù),求三個(gè)整數(shù)中的最,形式參數(shù)與實(shí)際參數(shù),,1,、,形式參數(shù),(形參):函數(shù)定義時(shí)設(shè)定的參數(shù)。,前例中,函數(shù)頭,int max(int x,int y,int z),中,x,y,z,就是形參,它們的類型都是整型。,2,、,實(shí)際參數(shù),(實(shí)參):調(diào)用函數(shù)時(shí)所使用的實(shí)際的參數(shù)。,前例中,主函數(shù)中調(diào)用,max,函數(shù)的語(yǔ)句是:,nmax=max(n1,n2,n3);,其中,n1,n2,n3,就是實(shí)參,它們的類型都是整型。,關(guān)于形參和實(shí)參的說明:,a,、形參只有當(dāng)調(diào)用時(shí)才臨時(shí)分配存儲(chǔ)單元。,b,、實(shí)參一定要有確定的值,可以是表達(dá)式。,c,、實(shí)參和形參的類型應(yīng)相同或賦值相容。,4,函數(shù)及其調(diào)用,51,ppt課件,形式參數(shù)與實(shí)際參數(shù) 4 函數(shù)及其調(diào)用51ppt課件,4,函數(shù)及其調(diào)用,形式參數(shù)與實(shí)際參數(shù),,52,ppt課件,4 函數(shù)及其調(diào)用形式參數(shù)與實(shí)際參數(shù) 52ppt課件,4,函數(shù)及其調(diào)用,函數(shù)的返回值,C,語(yǔ)言可以從函數(shù)(被調(diào)用函數(shù))返回值給調(diào)用函數(shù)(這與數(shù)學(xué)函數(shù)相當(dāng)類似)。在函數(shù)內(nèi)是通過,return,語(yǔ)句返回值的。函數(shù)可以使用一個(gè)或者多個(gè),return,語(yǔ)句返回值也可以不返回值(此時(shí)函數(shù)類型是,void,)。,return,語(yǔ)句的格式:,,return,[,表達(dá)式,],;或,return,,(表達(dá)式),;,說明:,函數(shù)的類型就是返回值的類型,,return,語(yǔ)句中表達(dá)式的類型應(yīng)該與函數(shù)類型一致。如果不一致,以,函數(shù)類型,為準(zhǔn)(賦值轉(zhuǎn)化)。,53,ppt課件,4 函數(shù)及其調(diào)用函數(shù)的返回值C語(yǔ)言可以從函數(shù)(被調(diào)用函數(shù))返,4,函數(shù)及其調(diào)用,局部變量,,概念:,是指在一定范圍內(nèi)有效的變量。,C,語(yǔ)言中,在以下各位置定義的變量均屬于局部變量。,,在函數(shù)體內(nèi)定義的變量:,在本函數(shù)范圍內(nèi)有效,作用域局限于函數(shù)體內(nèi)。,,在復(fù)合語(yǔ)句內(nèi)定義的變量:,在本復(fù)合語(yǔ)句范圍內(nèi)有效,作用域局限于復(fù)合語(yǔ)句內(nèi)。,,有參函數(shù)的形式參數(shù)也是局部變量:,只在其所在的函數(shù)范圍內(nèi)有效。,,54,ppt課件,4 函數(shù)及其調(diào)用 局部變量54ppt課件,4,函數(shù)及其調(diào)用,全局變量,,全局變量:,在函數(shù)之外定義的變量。(所有函數(shù)前,各個(gè)函數(shù)之間,所有函數(shù)后),,全局變量作用域:,從定義全局變量的位置起到本源程序結(jié)束為止。,在引用全局變量時(shí)如果使用,“,extern,”,聲明全局變量,可以擴(kuò)大全局變量的作用域。例如,擴(kuò)大到整個(gè)源文件(模塊),對(duì)于多源文件(模塊)可以擴(kuò)大到其它源文件(模塊)。,,全局變量和局部變量同名的,“,屏蔽,”,。,55,ppt課件,4 函數(shù)及其調(diào)用 全局變量55ppt課件,4,函數(shù)及其調(diào)用,全局變量和局部變量的應(yīng)用,局部變量,輸出結(jié)果,。。。。。。。。。。,count is 100,56,ppt課件,4 函數(shù)及其調(diào)用全局變量和局部變量的應(yīng)用局部變量輸出結(jié)果56,4,函數(shù)及其調(diào)用,變量,(局部,/,全局)兩大屬性:,·,數(shù)據(jù)類型,,·,存儲(chǔ)類別,1,、,數(shù)據(jù)類型(復(fù)習(xí)),通過變量說明(定義)來規(guī)定其數(shù)據(jù)類型:,,格式,數(shù)據(jù)類型關(guān)鍵字 變量名,如,char a;,int b,c ;,float x,y;,,為什么使用變量前要先對(duì)其數(shù)據(jù)類型進(jìn)行“說明”,——,好比看電影前先買票訂座,,◆,預(yù)留存儲(chǔ)空間(如,char,型為,1,個(gè)字節(jié),,int,型為,2,個(gè)字節(jié),…,),,◆,確定存儲(chǔ)方式(如,char,型存放,ASCII,值,,int,型存放補(bǔ)碼值,…,),57,ppt課件,4 函數(shù)及其調(diào)用變量(局部/全局)兩大屬性: ·數(shù)據(jù)類型,變量,(局部,/,全局)兩大屬性:,·,數(shù)據(jù)類型,,·,存儲(chǔ)類別,4,函數(shù)及其調(diào)用,2,、存儲(chǔ)類別,規(guī)定了變量在計(jì)算機(jī)內(nèi)部的存放位置→決定變量的“壽命”(何時(shí)“生”,何時(shí)“滅”),一個(gè)完整的變量說明格式如下:,,存儲(chǔ)類別 數(shù)據(jù)類型 變量名,如,static int x , y ;,C,程序的存儲(chǔ)類別有:,,■,register,型,(寄存器型),■,auto,型,(自動(dòng)變量型),■,static,型,(靜態(tài)變量型),■,extern,型,(外部變量型),58,ppt課件,變量(局部/全局)兩大屬性: ·數(shù)據(jù)類型 ·存儲(chǔ)類別4,C,程序的變量存儲(chǔ)位置,4,函數(shù)及其調(diào)用,變量的生存期,,靜態(tài)存儲(chǔ)區(qū)中的變量:,與程序,“,共存亡,”,動(dòng)態(tài)存儲(chǔ)區(qū)中的變量:,與函數(shù),“,共存亡,”,寄存器中的變量:,同靜態(tài)存儲(chǔ)區(qū),59,ppt課件,C程序的變量存儲(chǔ)位置4 函數(shù)及其調(diào)用變量的生存期59ppt課,4,函數(shù)及其調(diào)用,C,程序的變量存儲(chǔ)類別,■,register,型(寄存器型),變量值存放在運(yùn)算器的,寄存器,中,——,存取速度快,一般只允許存,2,~,3,個(gè)變量,且限于,char,型和,int,型,通常用于循環(huán)變量。,■,auto,型(自動(dòng)變量型),變量值存放在主存儲(chǔ)器的,動(dòng)態(tài)存儲(chǔ)區(qū),(堆棧方式);,優(yōu)點(diǎn),——,同一內(nèi)存區(qū)可被不同變量反復(fù)使用。,以上兩種變量均屬于“,動(dòng)態(tài)存儲(chǔ)型,”,即調(diào)用函數(shù)時(shí)才為這些變量分配單元,函數(shù)調(diào)用結(jié)束其值自動(dòng)消失。,60,ppt課件,4 函數(shù)及其調(diào)用C程序的變量存儲(chǔ)類別■ register型(,4,函數(shù)及其調(diào)用,C,程序的變量存儲(chǔ)類別,■,static,型(靜態(tài)變量型),變量值存放在主存儲(chǔ)器的,靜態(tài)存儲(chǔ)區(qū),程序執(zhí)行開始至結(jié)束,始終占用該存儲(chǔ)空間,■,extern,型(外部變量型),同上,其值可供其他源文件使用,以上兩種均屬于“,靜態(tài)存儲(chǔ),”性質(zhì),即從變量定義處開始,在整個(gè)程序執(zhí)行期間其值都存在,(≠都可用,!!,),61,ppt課件,4 函數(shù)及其調(diào)用C程序的變量存儲(chǔ)類別■ static型(靜態(tài),4,函數(shù)及其調(diào)用,,auto,(默認(rèn)) 所在函數(shù)調(diào)用結(jié)束時(shí),其值自動(dòng)消失,局部變量,,,register,,如不賦初值,取不確定值為初值,,static,,所有函數(shù)調(diào)用結(jié)束,其值仍保留,如不賦初值,取初值為,0,(數(shù)值型)或空字符,’,\0’,(字符型),,,extern,(默認(rèn))允許本源文件中其他函數(shù)及其他,全局變量,源文件使用,,static,,只限本源文件中使用,,62,ppt課件,4 函數(shù)及其調(diào)用,4,函數(shù)及其調(diào)用,求程序運(yùn)行結(jié)果,main(),{,int a=2,i;,,clrscr( );//,清楚屏幕,內(nèi)部函數(shù),for (i=0;i<3;i++),printf("%4d",f(a));,},f(int a),{,int b=0;,static int c=3;,b++;c++;,return a+b+c;,},變量跟蹤,,main,( ),f,函數(shù),,a i,b,,c,f(a),2 0 0→1 4 7,1 0→1 5 8,2 0→1 6 9,,【,結(jié)果,】 7 8 9,如果去掉,static,呢?,【,結(jié)果,】 7 7 7,63,ppt課件,4 函數(shù)及其調(diào)用求程序運(yùn)行結(jié)果main()變量跟蹤如果去掉s,4,函數(shù)及其調(diào)用,求程序運(yùn)行結(jié)果,main(),{,int k=4,m=1,p;,clrscr();,p=func(k,m);,printf("%d,",p);,p=func(k,m);,printf("%d",p);,},func(int a,int b),{ static int m=0,i=2;,i+=m+1;,m=i+a+b;,return m;,},變量跟蹤,,main,( ),func,函數(shù),,k m,,a b m i,4 1 4 1 0→8 2→3,4 1 4 1 8→17 3→12,,【,結(jié)果,】 8, 17,如果去掉,static,呢?,【,結(jié)果,】 8, 8,64,ppt課件,4 函數(shù)及其調(diào)用求程序運(yùn)行結(jié)果main()變量跟蹤如果去掉s,4,函數(shù)及其調(diào)用,求程序運(yùn)行結(jié)果,#include ,main(),{,int a=3, b=2, c=1; //,注意應(yīng)用范圍,{,int b=5, c=12;//,注意應(yīng)用范圍,c-=b*2;,printf("a=%d,b=%d,c=%d\n", a, b, c);,a+=c;,},printf("a=%d,b=%d,c=%d\n", a, b, c);,},【,結(jié)果,】,a=3,b=5,c=2,a=5,b=2,c=1,65,ppt課件,4 函數(shù)及其調(diào)用求程序運(yùn)行結(jié)果#include <stdio,4,函數(shù)及其調(diào)用,int a=3,b=5;,max(int a,int b),{,int c;,c=a>b?a:b;,return c;,},,main(),{,int a=8;,printf("%d\n",max(a,b));,},求程序運(yùn)行結(jié)果,【,結(jié)果,】 8,如果主函數(shù)中沒有,int a=8,,,結(jié)果?,,【,結(jié)果,】 5,如果讓主函數(shù)中,int a=4,或,a=-1,,結(jié)果?,【,結(jié)果,】,均為,,5,66,ppt課件,4 函數(shù)及其調(diào)用int a=3,b=5;求程序運(yùn)行結(jié)果【結(jié)果,4,函數(shù)及其調(diào)用,求程序運(yùn)行結(jié)果,void num(),{ extern int x,y;,int a=15,b=10;,x=a-b;,y=a+b;,},int x,y;,main(),{ int a=7,b=5;,x=a+b;,y=a-b;,num();,printf("%d,%d\n",x,y);,},【,結(jié)果,】 5,,,25,如果第二行不加上,extern,呢?,【,結(jié)果,】 12,,,2,67,ppt課件,4 函數(shù)及其調(diào)用求程序運(yùn)行結(jié)果void num()【結(jié)果】,4,函數(shù)及其調(diào)用,求程序運(yùn)行結(jié)果,int a=0;,,fun(int i),{,a+=2,*,i;,return a;,},,main(),{,int a=10;,clrscr( );,printf("%d,%d\n",fun(a),a);,},【,結(jié)果,】 20,,,10,返回,68,ppt課件,4 函數(shù)及其調(diào)用求程序運(yùn)行結(jié)果int a=0;【結(jié)果】 20,5,編譯預(yù)處理,預(yù)處理,在編譯之前對(duì)源程序進(jìn)行“預(yù)處理”,預(yù)處理命令不是,C,語(yǔ)句,末尾沒有分號(hào),預(yù)處理命令不在可執(zhí)行文件中執(zhí)行,預(yù)處理命令都以,#,開始,包括,宏定義,、,文件包含,、,條件編譯,等,舉例,#define MAX 1000,#include ,69,ppt課件,5 編譯預(yù)處理預(yù)處理69ppt課件,宏,(Macro),定義,5,編譯預(yù)處理,無(wú)參數(shù)的宏定義,,帶參數(shù)的宏定義,70,ppt課件,宏(Macro)定義5 編譯預(yù)處理無(wú)參數(shù)的宏定義70ppt課,5,編譯預(yù)處理,無(wú)參數(shù)的宏定義,一般形式,#define,,標(biāo)識(shí)符,,字符串,說明,把源程序中相應(yīng)標(biāo)識(shí)符予以替換,僅是簡(jiǎn)單的字符串替換,沒有任何語(yǔ)法正確性檢查,有效范圍從定義處開始,到文件結(jié)束,或者由,#undef,命令終止作用域,行末沒有分號(hào),如有分號(hào)將會(huì)被一起替換,#define R 3.0,#define PI 3.1415926,#define L 2*PI*R,#define begin {,#define end },#define forever for(;;),int main(),begin /* { */,printf("L=%f", L);,#undef PI /*,取消對(duì),PI,的宏定義,*,/,forever; /* for(;;);,無(wú)限循環(huán),*,/,end /* } */,71,ppt課件,5 編譯預(yù)處理無(wú)參數(shù)的宏定義一般形式#define R 3,5,編譯預(yù)處理,帶參數(shù)的宏定義,一般形式,#define,,宏名,(,參數(shù)表,),,字符串,說明,宏定義僅是把參數(shù)作為字符串做簡(jiǎn)單替換,而不做任何運(yùn)算求值和語(yǔ)法檢查,宏名與參數(shù)表的括號(hào)之間不應(yīng)有空格,應(yīng)注意參數(shù)替換后可能出現(xiàn)的語(yǔ)法錯(cuò)誤和意料之外的運(yùn)算,應(yīng)在宏定義內(nèi)容及其中參數(shù)兩邊加上括號(hào),#define S1(a,b) a*b,#define S2(a,b) ((a)*(b)),#define max(a,b) ((a)>(b)?(a),:(b)),int main(),{,int x=3, y=4, i=5, j=6, s, z;,s=S1(x+y, x-y);,/* s=x+y*x-y; s==11 */,s=S2(x+y, x-y);,/* s=((x+y)*(x-y)); s==-7 */,z=max(i++, j++);,,/* z=((i++)>(j++)?(i++),:(j++));,*/,,/* z==7, i==6, j==8 */,},,,72,ppt課件,5 編譯預(yù)處理帶參數(shù)的宏定義一般形式#define S1(a,5,編譯預(yù)處理,文件包含,一般形式,#include "filename",#include ,說明,把另一個(gè)源文件的全部?jī)?nèi)容包含進(jìn)來,預(yù)編譯后,它們已成為一個(gè)文件,頭文件的擴(kuò)展名一般用,.h,,但并非規(guī)定,調(diào)用庫(kù)函數(shù)一般使用,,,也可以使用,"",調(diào)用用戶編寫的頭文件應(yīng)使用,"",73,ppt課件,5 編譯預(yù)處理文件包含一般形式73ppt課件,條件編譯,5,編譯預(yù)處理,條件編譯,對(duì)某些部分的源程序指定編譯的條件,可以減少被編譯的語(yǔ)句,減少目標(biāo)程序的長(zhǎng)度,減少運(yùn)行時(shí)間,有利于移植程序,增加程序的靈活性,命令形式,#ifdef...#else...#endif,#ifndef...#else...#endif,#if...#else...#endif,74,ppt課件,條件編譯5 編譯預(yù)處理?xiàng)l件編譯74ppt課件,① 如果標(biāo)識(shí)符被定義過*,,如果標(biāo)識(shí)符未被定義過,,#ifdef,標(biāo)識(shí)符,#ifndef,標(biāo)識(shí)符,程序段,1,程序段,1,/*,編譯此程序段*,/,#else #else,,/*#else,部分可省略*,/,,程序段,2,程序段,2,/*,反之,編譯此程序段*,/,#endif #endif,,*,此處指標(biāo)識(shí)符用,#define,等命令定義過,。,條件編譯,5,編譯預(yù)處理,②,#i

注意事項(xiàng)

本文(AVR單片機(jī)C語(yǔ)言編程--課件)為本站會(huì)員(7****)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲