




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機應用教程內容三C語言基礎知識C語言是單片機程序開發的常用語言。和匯編語言相比具有可閱讀性強,編寫簡單,易掌握等優點。單片機用的C語言采用ANSIC語言標準,同時在此基礎上作了擴充。一C語言基本結構及特點1.C語言的發展過程2.當代最優秀的程序設計語言3.目前最流行的C語言MicrosoftC或稱
MSCBorlandTurboC或稱
TurboCAT&TC4.C語言的特點①
C語言簡潔、緊湊,使用方便、靈活。②運算符豐富。共有34種。③數據結構類型豐富。④具有結構化的控制語句。⑤語法限制不太嚴格,程序設計自由度大。一C語言基本結構及特點4.C語言的特點⑥C語言允許直接訪問物理地址,能進行位(bit)操作,能實現匯編語言的大部分功能,可以直接對硬件進行操作。⑦生成目標代碼質量高,程序執行效率高。⑧與匯編語言相比,用C語言寫的程序可移植性好。
5.簡單的C程序介紹6.C源程序的結構特點①一個C語言源程序可以由一個或多個源文件組成。②每個源文件可由一個或多個函數組成。③一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。一C語言基本結構及特點6.C源程序的結構特點④源程序中可以有預處理命令(include命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。⑤每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括號“}”之后不能加分號。⑥標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。7.書寫程序時應遵循的規則①一個說明或一個語句占一行。②用{}括起來的部分,通常表示了程序的某一層次結構。③低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。一C語言基本結構及特點8.C語言的字符集①字母
小寫字母a~z共26個
大寫字母A~Z共26個②數字
0~9共10個③空白符空格符、制表符、換行符等統稱為空白符。④
標點和特殊字符9.C語言詞匯①標識符在程序中使用的變量名、函數名、標號等統稱為標識符。一C語言基本結構及特點9.C語言詞匯①標識符
C規定,標識符只能是字母(A~Z,a~z)、數字(0~9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。以下標識符是合法的:
a,x,x3,BOOK_1,sum5以下標識符是非法的:
3s以數字開頭
s*T出現非法字符*
-3x以減號開頭bowy-1出現非法字符-(減號)一C語言基本結構及特點9.C語言詞匯②關鍵字
關鍵字是由C語言規定的具有特定意義的字符串,通常也稱為保留字用。C語言的關鍵字分為以下幾類:類型說明類語句定義類預處理命令類③運算符④分隔符⑤常量⑥注釋符二C語言數據及運算1.數據類型①C的數據類型二C語言數據及運算1.數據類型②基本類型的名字和長度下列關鍵字稱為類型區分符:char、
int、
short、
long、
signed、unsigned、float、double2.常量和變量①常量的表示
C的常量有整數常量、浮點常量、字符常量、字符串常量和枚舉常量。整數
整數有三種形式:十進制整數、八進制整數和十六進制整數。浮點數
單精度浮點數、雙精度浮點數、高精度浮點數二C語言數據及運算字符常量
字符常數通常是指一對單引號(單撇號)括起來的一個字符,形式為:‘字符’字符串常量
字符串常數(簡稱字符串)是用一對雙引號括起來的一個字符序列,其字符的個數稱為字符串長度。形式為:“字符序列”符號常量
三種方法定義一個符號常量:一種是利用編譯預處理的宏替換功能#define;另一種是用const類型限定符說明并初始化一個標識符;第三種方法是通過定義枚舉類型來定義符號常量。二C語言數據及運算2.變量說明
C程序中任何變量必須遵循現說明后引用的原則,以便編譯程序為變量分配適當長度的存儲單元以及確定變量所允許的運算。變量說明的形式:類型區分符
變量表。給變量賦初值有兩種方式:一是通過賦值語句置初值(如i=0;);另一個方式是在變量說明時給出初值稱為初始化。格式為:
類型區分符
變量名=表達式,…;如:intage=15,index=1,i=0,j=0;二C語言數據及運算3.運算符與表達式
由運算符通過對運算對象(操作數)進行各種操作,按操作數的數目可將運算符分為:單目(一元),雙目(二元)和三目(三元)運算符;按運算符的功能分類有:算術運算符、關系運算符、邏輯運算符、自增和自減運算符、位運算符、賦值運算符和條件運算符。另外還有數組的下標[]、函數調用()、表順序求值的逗號運算符和類型強制運算符等。
表達式是由運算符、操作符數組成的符合C的語法算式。從本質上說,表達式是對運算規則的描述并按規則執行運算,運算的結果是一個值,稱為表達式的值,其類型稱為表達式的類型。二C語言數據及運算3.運算符與表達式①算術運算
算術運算符包括﹢、﹣、++、--、*、/、%②關系運算關系運算符包括
<(小于)
<=(小于等于)
>(大于)
>=
(大于等于)
==(等于)
!=(不等)③邏輯運算邏輯運算符包括:&&(與)
||(或)
!(非)④自增和自減運算自增和自減運算符包括:++(增1)--(減1)二C語言數據及運算3.運算符與表達式⑤位運算位運算符是指
~(求反)
&(按位與)
|
(按位或) ^(按位加、異或)
>>(右移)
<<(左移)⑥簡單賦值
簡單賦值運算符“=”⑦復合賦值復合賦值運算符包括+=-=*=/=%=&=|=^=<<=和>>=⑧條件運算條件運算符(?:)是一個三元運算符,一般形式為
操作數1?操作數2:操作數3三C語言基本語句1.語句綜述
C語言提供的語句主要有說明語句和執行語句,其中執行語句包括空語句、表達式語句、控制語句、復合語句等,它們構成了程序的三種程序控制結構:順序結構、選擇結構和循環結構。2.順序結構
C語言中的順序結構主要由說明語句、表達式語句、空語句以及復合語句組成。在順序結構程序中,各語句(或命令)是按照位置的先后次序順序執行的,且每個語句都會被執行到。順序結構流程圖:三C語言基本語句main(){inta,b,t;scanf("%d%d",&a,&b);/*提供數據*/t=a;a=b;b=t;/*運算*/printf("%d%d",a,b);/*輸出*/}順序結構結構圖三C語言基本語句3.選擇結構①簡單的if語句if(表達式)語句②if…..else語句if(表達式)
語句1else
語句2三C語言基本語句3.選擇結構③系列if….else語句if(條件1)語句1elseif(條件2)語句2…..elseif(條件n)語句nelse語句n+1三C語言基本語句3.選擇結構(程序示例)
輸入任意一個整數,輸出該整數的絕對值main(){intn;scanf(“%d”,&n);if(n>=0)printf(“%d”,n);elseprintf(“%d”,-n);}
三C語言基本語句3.選擇結構(程序示例)
輸入一個分數,輸出其等級;90分以上,打印A;80~90分,打印B;70~80分,打印C;60~70分,打印D;60分以下,打印E。#include<stdio.h>Voidmain(void){inta;scanf(“%d”,&a);if(a>=90)printf(“ThescoreisA”);elseif(a>=80)printf(“ThescoreisB”);elseif(a>=70)printf(“ThescoreisC”);elseif(a>=60)printf(“ThescoreisD”);elseprintf(“ThescoreisE”);}
三C語言基本語句3.選擇結構④switch語句(不帶break語句)switch(表達式e){case常量表達式e1:語句1case常量表達式e2:語句2……..case常量表達式en:語句ndefault語句n+1}三C語言基本語句3.選擇結構(switch程序示例)
輸入字符,判斷其百分成績范圍#include<stdio.h>Voidmain(void){chargrade;grade=getchar();switch(grade){case‘A’;printf(“90~100\n”):break;case‘B’;printf(“80~89\n”):break;case‘C’;printf(“70~79\n”):break;case‘D’;printf(“60~69\n”):break;case‘E’;printf(<60\n”):break;default}三C語言基本語句4.循環結構
循環結構要解決的問題是在某一條件下,要求程序重復執行某些語句或某一個模塊,這里的“條件”實際上也是一個表達式,根據表達式的兩個狀態(非0或0)決定循環是否繼續。這些被重復執行的語句或模塊,稱為循環體。為了使循環不至于變成無限循環(死循環),在執行循環體的過程中,一定要使循環條件表達式中的變量(循環控制變量)值有所變化。一個合理的循環結構,最終會使循環條件由一個狀態變為另一個狀態,使循環正常終止。循環條件所用的表達式,可以是算術表達式、關系表達式、邏輯表達式或最終能得到非0或0值的其他表達式。三C語言基本語句4.循環結構
在C語言中,主要有以下三種循環結構:while結構do-while結構for結構①while語句while(表達式)
語句
三C語言基本語句4.循環結構②do….while語句用do-while語句寫成的循環結構也被稱作為“直到型”循環。
do
語句while(表達式);
這種結構是先執行循環體,然后再判斷表達式是否成立,若表達式成立,那么繼續執行循環體,接著重新計算循環表達式中的值并判斷真假,直到循環表達式的值為0(假)時終止循環。
三C語言基本語句4.循環結構③for語句
語法格式如下:for(表達式1;表達式2;表達式3)
語句表達式1:初始化表達式。通常用來設定循環變量的初始值或者循環體中任何變量的初始值,可用逗號作分隔符設置多個變量的值;表達式2:循環條件表達式;表達式3:增量表達式。
三C語言基本語句4.循環結構(程序示例)
編程實現依次輸出26個大寫字母#include<stdio.h>main(){charI;for(i=‘A’;i<=‘Z’;i++)printf(“%c”,i);printf(“\n”);}三C語言基本語句5.Break語句
break語句由關鍵字break后加分號“;”組成。前面章節介紹到switch多分支選擇結構時,曾介紹過break語句,它用來跳出switch結構,使程序能夠執行該結構下面的語句。在這里break語句被用在循環結構中作用是跳出它所在的循環體,提前結束循環,使程序的執行流程無條件的轉移到循環結構的下一句繼續執行。
注意:break語句只能用于switch結構和循環結構中。
三C語言基本語句5.Break語句(程序示例)
編寫一個程序,求整數m是否是素數。#include<stdio.h>main(){intm,i;scanf(“%d”,&m);for(i=0;i<m;i++)while(m%i==0)break;if(i==m)printf(“%disaprimenumber.\n”,m);elseprintf(“%disnotaprimenumber.\n”,m);}三C語言基本語句6.continue語句
continue語句由continue后面加分號“;”構成,它的作用是結束本次循環,使程序回到循環條件,判斷是否提前進入下一次循環。
需要注意break語句與continue語句之間的區別,continue語句只結束本次循環,而不是終止整個循環的執行。而break語句則是結束循環。
四C語言數組1.一維數組①一維數組定義
類型說明數組名[常量表達式]例如:floatsheep[10];ints2007[100];一維數組的定義說明:數組名的命名規則同與變量名相同,必須是合法的標識符。即第一個字符應為英文字母或下劃線。用方括號將常量表達式括起來。常量表達式定義了數組元素的個數。即數組的長度。它只能是整型常量或符號常量。數組在定義之后,長度是不能改變的。
四C語言數組一維數組的定義說明:在數組定義時,常量表達式中不允許包含變量,但在操作語句(即數組元素的引用)中,數組常量表達式中允許包含變量。數組下標從0開始。各元素在內存中占據的地址空間是連續的。元素a[0]的地址是整個數組的首地址,緊接著是a[1]的地址,然后是a[2]的地址……依次排列。也可用數組名a表示數組的首地址,即a等價于&a[0];。
四C語言數組1.一維數組②一維數組的引用
數組不能整個引用,只能逐個引用數組元素,其一般格式為:
數組名[下標]
數組的下標可以是整型常量或整型表達式,固定從0開始,最大的下標是數組元素的長度減1。#include<stdio.h>voidmain(){intI,n;intnum[6];for(i=0;i<=5,i++)scanf(“%d”,&num[i]);for(n=5;n>=0;num[n]);printf(“%3d”,num[n]);}
四C語言數組1.一維數組③一維數組的初始化
數組元素的初始化就是對所有元素賦初值。人機交互賦值在數組定義的同時賦初值inta[6]={2,3,4,5,6,7}inta[]={2,3,4,5,6,7}在定義數組以后賦值inta[5];a[0]=2;a[1]=10;a[2]=5;a[3]=7;a[4]=12
四C語言數組2.二維數組①二維數組的定義
類型說明數組名[常量表達式1][常量表達式2]其中類型說明指出該二維數組各元素的數據類型;常量表達式1為行下標,常量表達式2為列下標。
例如:inta[3][4];floatb[5][10]
四C語言數組3.字符數組①字符數組的定義
類型說明數組名[常量表達式]如:chara[3]charb[3][4]②字符數組的初始化逐個字符給字符數組中的元素賦初值如:chara[3]={‘y’,’e’,’s’}用字符串常量為字符數組各元素賦初值如:chara[4]={“yes”}或chara[4]=“yes”
五C語言函數1.函數的概念C程序由一個main和任意個函數組成。函數不可嵌套定義,具有全局性、平行性,函數分為有參與無參函數。程序從main開始執行,最后又回到main函數結束。2.定義函數的一般形式無參函數
類型標識符函數名([void]){
聲明部分
語句}
五C語言函數說明:形參全稱為“形式參數”。形參表是用逗號分隔的一組變量說明(即定義),包括形參的類型和形參標識符,其作用是指出每一個形參的類型和形參的名稱,當調用函數時,接受來自主調函數的數據,確定各參數的值
。
如:
intfunc(intx,inty)
{……}用{}括起來的部分是函數的主體,稱為函數體。
五C語言函數有參數的函數
函數返回值類型函數名(形參表說明){
聲明語句
執行語句}說明:函數的類型,是指函數返回值的類型。當不指明函數類型時,系統默認的是int型。函數名本身也有值,它代表了該函數的入口地址,使用指針調用該函數時,將用到此功能。
五C語言函數3.函數參數和函數的值①形式參數和實際參數形式參數:函數定義時由用戶定義的形式上的變量。實際參數:函數調用時,主調函數為被調函數提供的原始數據。
按值傳遞參數——數值傳遞若實參和形參均為普通變量,則實參向形參傳送數據的方式是"按值傳遞"。等價于:
數據類型形參變量名=實參變量名;形式參數是函數的局部變量,僅在函數內部才有意義,不能用它來傳遞函數的結果。
五C語言函數按值傳遞參數——數值傳遞
例如:調用函數的數據傳遞
#include<stdio.h>intmax(intx,inty)//x和y為形參,接受來自主調函數的原始數據{ intz; z=x>y?x:y; return(z);//將函數的結果返回主調函數
}main(){ inta,b,c; puts("pleaseentertwointegernumbers"); scanf("%d%d",&a,&b); c=max(a,b);//主函數內調用功能函數max,實參為a和b printf("max=%d\n",c); return0;}
五C語言函數按地址傳遞參數——地址傳遞
函數的參數可以是指針類型。它的作用是將一個變量的地址傳送到另一個函數中。
#include<stdio.h>voidswapf(int*p1,int*p2);main(){inta,b;a=5;b=10;//說明兩個變量并賦初值
printf(“beforeswapa=%db=%d\n”,a,b);swapf(&a,&b);printf(“afterswapfa=%db=%d\n”,a,b);return0;}voidswapf(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;printf(“inswapf*p1=%d*p2=%d\n”,*p1,*p2);}
五C語言函數3.函數參數和函數的值②函數的返回值格式:return表達式
或return(表達式)#include<stdio.h>intfunc(intx)main(){inta,c;scanf(“%d”,&a);c=func(a);printf(“%d\n”,c);return0;}
Intfunc(intx){intz;if(x>=0)z=2*x*x*x-x;elsez=2*x*x;returnz;}
五C語言函數3.函數參數和函數的值說明:函數的返回值只能有一個。當函數中不需要指明返回值時,可以寫成:return。若用void聲明函數的返回類型,也可以不寫。一個函數體內可以有多個返回語句,不論執行到哪一個,函數都結束,回到主調函數。當函數沒有指明返回值,即return;或沒有返回語句時,可以定義無類型函數,其形式為:
void函數名(形參表){}函數定義時的類型就是函數返回值的類型
六C語言指針1.什么是指針
指針是一種變量,具有變量的三要素:名字、類型和值。
指針是用來存放某個變量的地址值。
指針的類型是該指針所指向的變量的類型,而不是指針本身值的類型。如:inta=5,*P;P=&a;
六C語言指針1.什么是指針C語言中關于地址值得表示有如下規定:①一般變量的地址值用變量名前加運算符&表示。②數組的地址值可用數組名表示,數組名表示該數組的首元素的地址值。數值中某個元素的地址值用&運算符加上數組元素名。如:inta[10],*p1,*p2;p1=a;p2=&a[5]
六C語言指針2.指針的表示①指向int型變量的指針
如:int*p1,*p2②指向char型變量的指針
如:char*pc1,*pc2③指向float型變量的指針
如:float*pf1,*pf2double*pd1,*pd2④指向數組的指針
如:floatm[3][2],*p1[3],(*p2)[2]
六
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石化管工考試試題及答案
- 新能源汽車項目評估與管理考試題及答案
- 家具行業設計師職業素養與能力模型試題及答案
- 新能源汽車技術的影響因素分析試題及答案
- 答辯能力測試題及答案
- 新能源汽車產業鏈條的完整性研究試題及答案
- 新能源二手車市場2025年評估與流通產業鏈布局研究報告
- 智能化監測技術在2025年環境監測數據質量控制中的應用前景分析報告
- 四川省德陽市重點名校2024-2025學年初三期末試題含解析
- 施工安全隱患整改的有效實施與試題及答案
- 《動畫素描》第一章 動畫素描概述
- 無軌膠輪車運行標準作業流程
- GB/T 12513-2006鑲玻璃構件耐火試驗方法
- 2023年云南省昆明市中考英語模試卷(含答案解析)
- 公路工程施工現場安全檢查手冊
- 部編版小學語文六年級下冊《采薇》課件(完美)
- 幼兒園繪本故事:《十二生肖》 課件
- 馬家河金礦選礦試驗報告
- “新時代好少年”推薦表
- 園林綠化工程監理實施細則(完整版)
- 草坪學實習報告模板-Copy
評論
0/150
提交評論