版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機與C語言編程實用技術
單片機與C語言編程實用技術
浙江省機電高級技工學校
上海歐蘭智能科技發(fā)展有限公司
第1頁第1頁
單片機與C語言編程實用技術
前S
近年來,隨著大規(guī)模集成電路的發(fā)展,單片機的發(fā)展異常迅猛。單片機芯片
的產量以每年27%以上的速度遞增。實際證明單片機技術已經成為90年后最活
躍的新一代電子應用技術。在隨著我國關于產業(yè)結構調整政策的出臺,傳統(tǒng)工業(yè)
向自動化、智能化、網絡化方向發(fā)展成為必然趨勢。在這種情況下很多學校在本
科生、大專生、中等專業(yè)、職業(yè)高中等不同層次上開設了單片機課程,在職技術
人員也由于工作需要,迫切希望掌握單片機的開發(fā)和應用技術。為此浙江省機電
高級技工學校相關老師根據(jù)多年的教學經驗,開發(fā)引進了這套Arduino單片機實
驗開發(fā)系統(tǒng),重點面向教學,集實驗和開發(fā)于一體,為提高單片機原理、C語言
編程課程的教學質量,提供一種經濟、實用、方便的解決方案。
本書將藍牙小車作為教學組織引領,開展各章節(jié)、模塊的教學,在教學的過
程中把C語言編程、VC++軟件操作、單片機外圍電路搭建與調試、CAD機械制圖、
激光切割零件制作等知識、技能點串成知識、技能鏈,并以此涵蓋產品的設計、
安裝、調試,突出''產品引領法”的基本特征:產品引領、知識系統(tǒng)、激發(fā)興趣、
內容實用、突出能力、邊學邊用。
需要說明的是在Arduino單片機教學平臺開發(fā)過程中,得到了學校、學院領
導的大力支持以及課題組相關老師的大力幫助,在此,謹對他們致以衷心的感謝!
由于編者水平有限,錯誤和疏忽之處在所難免,敬請讀者批評指正。
第2頁第2頁
單片機與C語言編程實用技術
目錄
第一章標準C語言程序與VC6.0
1.1VC6.0軟件基本操作
第二章標準C語言程序入門
2.1標準C語言程序基本框架和語法
2.2庫函數(shù)調用
2.3基本數(shù)據(jù)類型
2.4常量與變量
2.4.1常量
2.4.2變量
2.5主函數(shù)main()
2.6順序結構及其應用
2.6.1格式輸出函數(shù)
2.6.2格式輸入函數(shù)
2.7運算符和表達式
2.7.1表達式
2.7.2賦值運算符及賦值表達式
2.7.3算術運算符及算術表達式
2.7.4關系運算符及關系表達式
2.7.5邏輯運算符及邏輯表達式
2.7.6自增自減運算符
2.7.7符號優(yōu)先級
2.8分支結構及其應用
2.8.1if語句
2.8.2switch語句
2.8.3分支結構應用實例
2.9循環(huán)結構及其應用
2.9.1for語句
第3頁第3頁
單片機與C語言編程實用技術
2.9.2while語句
2.9.3do?while語句
2.9.4循環(huán)結構及其應用實例
2.10數(shù)組及其應用
2.10.1一維數(shù)組
2.10.2字符串數(shù)組及其處理
2.10.3數(shù)組應用實例
2.11子函數(shù)及其應用
2.11.1函數(shù)的定義
2.11.2函數(shù)的調用
第三章Arduino單片機開發(fā)套件簡介
3.1Arduino單片機開發(fā)板硬件說明
3.2Sensorshield擴展板硬件說明
3.3數(shù)字量與模擬量
3.4ArduinoIDE編程軟件使用說明
第四章ArduinoC語言程序應用
4.1ArduinoC語言程序基本框架介紹
4.2ArduinoC語言程序與標準C語言程序的異同
4.3單片機外圍電路及其元器件
4.4常用庫函數(shù)介紹
4.5數(shù)字量輸出函數(shù)digitalWrite()
實驗一:LED閃爍實驗
實驗二:流水燈實驗
4.7數(shù)字量輸入函數(shù)digitalRead()
實驗三:開關控制實驗
4.7模擬量輸出函數(shù)analogWrite()
實驗四:呼吸燈實驗
第4頁第4頁
單片機與C語言編程實用技術
4.8模擬量輸入函數(shù)analogRead()
實驗五:環(huán)境光檢測實驗
實驗六:電位器調光實驗
4.9舵機驅動庫函數(shù)
實驗七:舵機驅動實驗
第五章機械設計與機械制圖基礎
5.1AutoCAD軟件基本操作
5.1.1AutoCAD的界面
5.1.2AutoCAD的文件操作
5.1.3AutoCAD的繪圖說明與設置
5.2機械設計中常見幾何特征的繪制
5.2.1繪制直線
5.2.2繪制矩形、正多邊形
5.2.3繪制圓、圓弧、橢圓、橢圓弧
5.2.4繪制圓角、倒角
5.2.5圖形操作
5.2.6繪制齒輪
5.3常用標準件簡介
5.4機器人常用結構設計方案
第六章激光切割機使用說明
6.1激光切割機軟件操作說明
6.2亞克力材料的切割
6.3亞克力材料的雕刻
第七章機器人綜合實驗一一藍牙小車
7.1藍牙小車結構設計及制作
7.2藍牙小車硬件搭建方案
第5頁第5頁
單片機與C語言編程實用技術
7.3藍牙通訊程序流程分析
7.4藍牙小車整體軟件編寫
第6頁第6頁
單片機與C語言編程實用技術
第一章標準C語言程序與VC6.0
c語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編
語言的特點。它由美國貝爾實驗室的DennisM.Ritchie于1972年推出,1978
年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統(tǒng)設計
語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬
件的應用程序。它的應用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件
開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形
和動畫,具體應用比如單片機以及嵌入式系統(tǒng)開發(fā)。
自C語言誕生以來,從大型主機到小型微機,C語言被廣泛應用于系統(tǒng)軟件
和應用軟件的開發(fā),隨之也衍生了很多個版本。1989年,美國國家標準局第一
次為C語言制定標準,被稱為ANSIX3.159T989aProgrammingLanguageCv,
俗稱ANSIC或C89標準。1990年后,國際標準化組織(簡稱ISO)為C語言多
次修訂標準,并于2011年12月8日最新修訂并公布的C語言標準時ISO/IEC
9899:2011,俗稱C11標準。本課程上機使用的MicrosoftVisualC++6.0正是
基于C11標準的C語言開發(fā)環(huán)境,因此本書將符合C11標準的C語言稱為“標準
C語言”,用于與Arduin。IDE開發(fā)環(huán)境下的C語言做區(qū)分。
1.1VC6.0軟件基本操作
1.打開VC6.0軟件。
打開"MicrosoftVisualC++6.0”,將出現(xiàn)如下窗口。
2.新建Win32控制臺工程
點擊一級菜單“文件”—“新建”一選擇彈出框的“工程”選項卡一
第7頁第7頁
單片機與C語言編程實用技術
選擇“Win32ConsoleApplication”一在“工程名稱”對話框內輸入工程名稱。
選擇“一個空工程”一點擊“完成”一點擊“確定”。
工程創(chuàng)建成功,如下圖。
3.新建C程序文件:
點擊一級菜單“文件”一“新建”一選擇彈出框的“文件”選項卡一選擇“C++
SourceFile"一在“文件名稱”對話框內輸入文件名稱。
第8頁第8頁
單片機與C語言編程實用技術
自rCK可3M
C程序文件創(chuàng)建成功,之后可以編寫程序。
J.d
?r住區(qū),”j:i工&-
-S>IIlles
-<j|Sourc?FU??
hellnwwld.q^i
"jl<e?4e>FBes
口Re?28Hie(
?:CI”oW?J|j)HleVlew「|iT
?r
recfcoi!??■???
4.在程序編輯框內輸入如下程序。
€iftK'toir:ifw
voidMin<)
-Mes
-_jSourceFilesprlntf("hello.worldf\n-);
,1beRowtMld.cpp
口HeaderRies
口Reewfcem??
?1ClwVlewlHfBeVlew)I1A1:
而SitXWiKXSXffi^M^XSXff?___…/
tt6.fi2
#include<stdio.h>
voidmain()
第9頁第9頁
單片機與C語言編程實用技術
printf("hello,world!\n");
5.編譯、生成、運行程序。
編譯程序Compil叵:點擊之后,生成.obj文件,一般用于檢查程序中是否
存在語法錯誤。
*11
」HelloWorld.obj-0error(s),0warning(s)
FK組建乂調試4在文件1中查找,在文件<1I
生成程序Bui點擊之后,生成.exe文件。
2d|
test_1.exe-0error(s),0uarning(s)
DD卜組建(調試X在文件1中查找;在文件《I
運行程序BuildExecuteE用于查看程序運行結果。
■-"C:\Users\acer\Dov/nloads\VClv\MyPrqjects\test_l\Debug\test_l.exe1
hello,world?
Pressanykeytocontinue.
6.保存程序
選擇“文件”菜單中的“保存”命令,將源程序保存到制定的文件夾中。
7.調試程序
調試程序是程序設計中一個很重要的環(huán)節(jié)。程序中的錯誤一般分為程序語法
錯誤和程序設計上的邏輯錯誤,VC6.0編譯器只能找出語法錯誤,而邏輯錯誤
則需要程序員手動查找。
如果程序中存在語法錯誤,那么編譯時會在輸出窗口中給出錯誤提示,如下
圖所示:
vch.cpp
C:\Users\9tzqa\Ootmloads\VClv\NyPro]ects\asdqw\vch.cpp(S):errorC21A3:syntaxerror:nissingbefore'>,
執(zhí)行cl.exe時出楮?
vch.obj-1?rror(s).0?Mrning(s)|
于上勒度k帆\春文件1中黛找\在文件2中去找、培聚7
行7.列班讀取
錯誤提示主要包括錯誤和警告及其個數(shù)、錯誤出現(xiàn)的行號及其原因。在輸出窗口
第10頁第10頁
單片機與C語言編程實用技術
中雙擊錯誤提示信息或按F4鍵,會出現(xiàn)一條醒目的藍色條帶突出提示信息,同
時通過一個箭頭符號定位產生錯誤的語句,如下圖所示。
|(Gli>b33|司(Allglob”member,.main弋.?盟,1
xljjBincliKle<stdio.h>
?國』罰痣一;old句似)
printf(-h?llo.Mrldt\n")〃打印修出?Fen。srl,牛杵
?:Cl”8V...[IinieVlew|,.j_____,
提示:程序中的一處錯誤往往會引出若干條錯誤提示信息,因此修改一個錯誤后最
好馬上編譯程序。通過反復的編譯,可使程序中的錯誤越來越少,指導所有的語法錯誤
都被修正。
第11頁第11頁
單片機與C語言編程實用技術
第二章標準C語言程序基礎
2.1C語言基本框架。
VC6.0中的C程序是標準C語言程序,基本包括三個部分:
1)庫函數(shù)頭文件包含部分;
2)常量、變量定義部分;
3)主函數(shù)main();
^include<stdio.h>/嚏食桅!輸公纏中生X件*/
^include<nath.h>/咆含數(shù)學函數(shù)年頭文件*/
^definePI3.14/*定義常量PI,它的值是3.14*/
inta,b;嬉襄蠢嚏需熠非露基形外接圓周長*/
Floatc,circun;
uoidnain()八王函數(shù)關/
<度賦
a=2;
度*/H
b=3;賦
線
墓
算
長
c=sqrt((a*a+b*b));京*/
圓
算
周
circun=PI*c;*/
printf("矩形酉角線長度懸%/端出處角線長度*/
printf("直徑是交消長是名f\n”,c,circum);/茄出外接圓直徑和周長*/
>
2.2庫函數(shù)頭文件調用。
C語言中有許多已經編寫好的函數(shù),可以直接調用,極大的減輕了程序員的
工作量,我們編程時應該利用這部分資源來簡化程序。
常用的庫函數(shù)頭文件有:
stido.h:標準輸入輸出函數(shù)庫。其中包含我們常用的scanf()輸入函數(shù),
printf()輸出函數(shù)。
math,h:數(shù)學計算函數(shù)庫。其中包含有三角函數(shù)、反三角函數(shù)、指數(shù)與對
數(shù)、取絕對值等數(shù)學運算函數(shù)。
string,h:字符串處理函數(shù)庫。其中包括字符串復制函數(shù)、拼接函數(shù)、查
找函數(shù)、比較函數(shù)等,詳情見《C語言入門》附錄。
2.3基本數(shù)據(jù)類型
數(shù)據(jù)類型是對數(shù)據(jù)的一種抽象描述,目的是告訴計算機需要為這部分數(shù)據(jù)開
辟多少存儲空間。在定義變量時必須定義數(shù)據(jù)類型。常見的數(shù)據(jù)類型有:
第12頁第12頁
單片機與C語言編程實用技術
數(shù)據(jù)類型類型標識符占有字節(jié)數(shù)據(jù)范圍
整型int2-32768—32767
長整型long4-231—231-1
浮點型float43.4X1038—3.4X1038
雙精度浮點型double81.7X10-i8—1.7X1038
字符型char1-128—127
字符串型string根據(jù)字符串長度
*以上數(shù)據(jù)類型的占有字節(jié)和數(shù)據(jù)范圍會隨計算機硬件的不同而有所變化。
1.整數(shù)類型
整數(shù)是諸如:-2、-1、0、1、2...的無小數(shù)部分的數(shù)。C語言提供了多種整
數(shù)類型數(shù)據(jù),以適應不同場合的需求,其中經常用到的是整型(int)和長整型
(long)這兩種數(shù)據(jù)類型。
整型int在計算機內存中占據(jù)2字節(jié)的存儲空間,用16位二進制數(shù)表示,
數(shù)值范圍為-2'一2'5-1(-32768—32767)。
長整型long在計算機內存中占據(jù)4字節(jié)的存儲空間,用32位二進制數(shù)表示,
數(shù)值范圍為-2"-2"-1(-2147483648—2147483647)。
Z\
提示:當整型int或長整型long定義的數(shù)據(jù)超出允許數(shù)值范圍,會發(fā)生溢出錯誤。
同時:溢出錯誤不是語法錯誤,不會被編譯器指出,所以程序員在運算時應注意數(shù)據(jù)
的數(shù)值范圍,特別是在乘法運算和指數(shù)運算時。
\____________________________________________________________________________________________________/
2.實數(shù)類型
實型也叫浮點型,指有小數(shù)部分的非整數(shù)數(shù)值,比如像123.45和1.2X10%
它們在計算機內部也是以二進制的形式存儲和表示的。C語言提供了兩種表示實
數(shù)的類型:單精度型和雙精度型。
單精度型float在計算機內存中占據(jù)4字節(jié),有效位為7位。
雙精度型double在計算機內存中占據(jù)8字節(jié),有效位為16位。
3.字符類型
字符型數(shù)據(jù)包括兩種:單個字符和字符串,如:'A,是字符,“hello”是字
符串。
單個字符用char定義,在計算機中字符是以ASCH碼的形式存儲的,一個
第13頁第13頁
單片機與C語言編程實用技術
字符占用1字節(jié)的存儲空間。
字符串用String定義,在計算機中可以看做是以字符數(shù)組的形式存儲的,
其存儲空間依據(jù)字符串長度而定。
提示:字符與ASCII碼的對應關系可查閱附錄1
三4常量與變量
2.4.1常量
常量是不隨時間和程序變化而變化的值,如上述程序中PI,它的值是3.14,
程序中所有出現(xiàn)PI的地方,都相當于3.14,在這種情況下PI不能被賦值,即
不能出現(xiàn)"PI=...”這樣的賦值語句。
常量的定義有兩種方式:
1)^define〈常量名〉〈學量值》,如上述程序中的"#definePI3.14”,這
種定義方法,PI沒有數(shù)據(jù)類型,也不占有存儲單元,只是在編譯時,所有的字
符串PI都會被置換為3.15o語句結尾不需要加分號“;
2)const〈常量數(shù)據(jù)類型>〈常量名>=〈常量值>,如"constfloatPI=3.14;”,
這種定義方法與變量定義類似,有數(shù)據(jù)類型,也占有存儲單元,在語句開頭加上
“const”字樣來表示常量定義。語句結尾必須加分號
定義常量時,必須給常量賦值,如:
#definePI3.14
constfloatPI=3.14;
1.整型常量
整型常量即整數(shù)。雖然C語言允許整數(shù)采用十進制、八進制和十六進制書寫。
但一般還是采用比較熟悉的十進制形式。注意,C語言不支持二進制形式。
2.實型常量
實型常量即實數(shù)。實數(shù)可以使用兩種方式書寫:一種是小數(shù)形式,例如:
123.45,-2.0,0.5;另一種是指數(shù)形式,其中用字母e或者E表示10的事次,
例如:1.2345E2和1.2E-9分別表示123.45和1.2X10%
提示:實型數(shù)據(jù)用指數(shù)形式表示時,E前必須要用
3.字符常量
字符常量即單個字符,書寫時要用單引號將這個字符括起來,例如:'A'、
'2'、等,它們屬于常規(guī)字符。另外,還有一些字符比較特殊,不可視或無
法通過鍵盤輸入,例如換行符、回車符,C語言的解決方法是用轉義字符表示它
第14頁第14頁
單片機與C語言編程實用技術
們。
轉義字符由一個反斜杠'\'后跟規(guī)定字符構成。常用轉義字符的定義如下:
轉義字符含義
\n換行符
\t橫向跳格符
\0空字符
\\反斜杠
單引號
雙引號
提示:轉義字符從書寫上看是一個字符序列,實際上是作為1個字符對
待的,存儲時只占1字節(jié)。
由于字符在計算機內是以ASCII碼的形式存儲的,實際上ASCII碼值是一個
0~127之間的整數(shù),因此字符常量也是可以參加運算,例如:
'a'+1字符'a'的ASCH碼值加1
'a'+32字符'a'的ASCH碼值減32,可用于大小寫字母的轉換
‘a'<'b'實際是比較兩個字符的ASCH碼值
4.字符串常量
字符串常量簡稱字符串,是用雙引號括起來的一串字符。例如:“china”、
“x”等。這里的雙引號只起定界的作用,它不屬于字符串中的字符,因此雙引
號之間的字符個數(shù)才是字符串的長度。但是,字符串在內存中占用的存儲字節(jié)數(shù)
要比字符串長度多1,因為C語言總是自動地在字符串尾部加上一個轉義字符
'\0'(空字符)
2.4.2變量
變量是程序設計語言的一個重要概念,它是指程序運行期間值可以發(fā)生變化
的量。
可以認為,變量是一個存儲數(shù)據(jù)的容器,機存儲單元,它的功能就是用來存
放程序中需要處理的數(shù)據(jù),這些數(shù)據(jù)可以是原始數(shù)據(jù)、中間結果或最終結果。
變量具有保持值的性質,但是當給變量賦值時,新值會取代舊值,這就是變
量的值發(fā)生變化的原因。
變量定義時,可以在定義數(shù)據(jù)類型時,同時賦值,也可以只定義數(shù)據(jù)類型,
在后續(xù)的程序中賦值,如果不賦值,默認為變量值為0。如下述兩種方式都是正
確的:
第15頁第15頁
單片機與C語言編程實用技術
1)inti;
i=3;
2)inti=3;
出于對程序穩(wěn)定性的考慮,不推薦使用默認值0來進行運算操作。如:
錯誤寫法:
inta,b;
b=a+l;
正確寫法:
inta=0;
intb=0;
b=a+l;
關鍵字:指C語言中已有明確含義的詞匯,如main,int,void等。在常量
名和變量名的選取時,不能使用這些詞匯。
2.5主函數(shù)main()
一個程序,無論復雜或簡單,總體上都是一個“函數(shù)”,這個函數(shù)就是主函
數(shù)main。,它是程序的運行的入口,一個C程序中有且只能有一個main函數(shù)。
程序的數(shù)據(jù)處理全部都在main函數(shù)中進行。
2.6順序結構及其應用
順序結構程序的執(zhí)行邏輯是按照先后順序,是三種基本結構中最簡單的一
種。
組成順序結構程序的語句,可以是表達式也可以是函數(shù),這里將標準C語言
中最常用的輸入輸出函數(shù)做個介紹。
2.6.1格式輸出函數(shù)
printf()是標準C語言中的格式輸出函數(shù),其功能是把計算機中的數(shù)據(jù)輸
出到顯示屏上,并且可以指定數(shù)據(jù)的格式。在使用前必須調用庫函數(shù)“stdio.h”,
示例程序如下:
ttinclude"stdio.h"
(
printf("Hello!\n");
第16頁第16頁
單片機與C語言編程實用技術
}
printfO函數(shù)調用的格式為:
printf(格式控制字符串,輸出項表);
例如:printf("a=%d,b=%d\n”,a,b);
函數(shù)說明:
(1)格式控制字符串可以包含三類字符:
格式字符:由先打頭后跟格式符。其中格式符有C語言約定,作用是指定數(shù)
據(jù)輸出時的格式。在打印結果中“%格式符”會被輸出項表的值替換。格式符及
其功能說明如下:
常用格式符
格式符printf()scanf()
d輸出一個十進制整數(shù)(int型)輸入一個十進制整數(shù)(int型)
f輸出一個單精度實數(shù)(float型)輸入一個單精度實數(shù)(float型)
c輸出一個字符(char型)輸入一個字符(char型)
s輸出字符串輸入字符串
Id輸出一個十進制整數(shù)(long型)輸入一個十進制整數(shù)(long型)
If輸出一個雙精度實數(shù)(double型)輸入一個雙精度實數(shù)(double型)
轉義字符:'\n'是輸出函數(shù)中做常用的轉義字符,起回車換行的作用。轉
義字符含義詳見“字符常量”一節(jié)。
普通字符:格式控制字符串中除了格式字符和轉義字符以外,其余都是普通
字符,普通字符將原樣輸出。
(2)輸出項表
輸出項表列出要輸出的數(shù)據(jù)項,數(shù)據(jù)項可以是常量、變量或表達式,各輸出
項之間用逗號分隔。
通過以下5個程序段,觀察printf()的輸出效果。
①printf("Goodmorning!");
輸出結果為:
Goodmorning!Pressanykeytocontinue
說明:該語句中僅包括普通字符組成的字符串,所以Goodmorning!原樣輸出。
第17頁第17頁
單片機與C語言編程實用技術
VC6.0在打印結果后自動添加“Pressanykeytocontinue",意為“按任意鍵繼續(xù)”。
②printf("Goodmorning!\nv);
輸出結果為:
Goodmorning?
Pressanykeytocontinue
說明:語句②與語句①不同的地方是在Goodmorning!后接了一個轉義字符\n,
所以在打印完“Goodmorning!”之后輸出了換行符,“Pressanykeytocontinue”則在
第二行打印。
③printf("Good\nmorning!w);
輸出結果為:
Good
tnorning*Pressanykeytocontinue
說明:有些同學會出現(xiàn)思維慣性,認為換行符只能出現(xiàn)在字符串結尾處。轉義字
符能出現(xiàn)字符串的任意位置。
④inta=2,b=5;
printf("%d,%d\n”,a,b);
printf(“a=%d,b=%d\nM,a,b);
printf(“小明有%d個蘋果,小紅有%d個蘋果”,a,b);
輸出結果為:
5,8
a=5,b=8
b=5,a=8
小明有5個蘋果,小紅有8個蘋果
Pressanykeytocontinue
說明:格式字符在打印時,其替換順序與輸出項表中的參數(shù)的順序一一對應,與字
符串中普通字符無關,第n個格式字符替換為輸出項表中的第n個參數(shù)。
⑤inta=65;
charch='C;
printf(〃%d,%c\n〃,a,ch);
printf(〃%c,%d\n〃,a,ch);
第18頁第18頁
單片機與C語言編程實用技術
輸出結果為:
65,C
A.67
Pressanykeytocontinue
說明:格式字符在打印時,輸出項表的參數(shù)輸出時,其格式由對應的格式字符而
定,與定義時的數(shù)據(jù)類型無關。
提示:ASCII表中字符'A'對應的是65,字符'C'對應的是67。
2.6.2格式輸入函數(shù)
scanf()是標準C語言中的格式輸入函數(shù),其功能是按指定格式輸入各種
類型的數(shù)據(jù),輸入的數(shù)據(jù)將存放在指定的變量中,在使用前必須調用庫函數(shù)
“stdio.h"。
scanf()函數(shù)調用格式為:
scanf(格式控制字符串,輸入降表);
例如:scanf("%d,%d”,&a,&b);
函數(shù)說明:
(1)輸入項必須是變量的地址。在C語言中用“&變量名”表示變量的地址,
比如:&a表示變量a的地址。所以在調用scanf函數(shù)之前,輸入項表中的參數(shù)
必須在事先進行定義。
(2)格式控制字符串中僅允許輸入格式字符,并用逗號隔開,不允許輸入
普通字符和轉義字符。格式字符的用法見
舉例:scanf("%d,%d",&a,&b);
給變量a賦值12,給變量b賦值36,則正確的輸入操作為:
數(shù)字1-〉數(shù)字2->逗號“,”-》數(shù)字3->數(shù)字6->回車鍵"Enter”
2.7符號與表達式
2.7.1表達式
表達式是C程序中不可缺少的一部分。表達式是由運算符、操作數(shù)(變量、
常量或函數(shù)等)和標點符號,按照一定規(guī)則組成的一個有意義的語句。例如:
a=b;\\賦值表達式
c=a+b;\\算術表達式
i<100&&i>0;\\邏輯表達式
第19頁第19頁
單片機與C語言編程實用技術
C語言中的符號主要分為賦值運算符、算術運算符、邏輯運算符、關系運算
符、條件運算符和特殊運算符六個大類。
2.7.2賦值運算符及賦值表達式
賦值運算符是用于為變量或常量指定數(shù)值的運算體符。其操作符號為“=
示例代碼如:a=b;該表達式的意義是,把b的值賦值給a。其中,b可以是一個
單純的變量,也可以是一個表達式。
思考題:運行如下語句之后,a和b的值各是多少?
①inta=l;
intb=3;
a=b;
②inta=l;
intb=3
b=a;
2.7.3算術運算符及算術表達式
算術運算符是用于進行數(shù)學運算的運算符。例如,力口、減、乘、除等就是算
術運算符。操作完成后,返回一個數(shù)字型的值。算術運算符包括加法運算符(+)、
減法運算符(-)、乘法運算符(*)、除法運算符(/)、模運算符(%)。
上述算術運算符都是二元運算符,該運算符兩端的數(shù)據(jù)必須是數(shù)字。
2.7.4關系運算符及關系表達式
關系運算符,即用于比較兩個數(shù)據(jù)關系大小的運算符,并根據(jù)比較的結果返
回一個邏輯值。關系運算符包括大于運算符(>)、大于等于運算符(>=)、小于
運算符(<)、小于等于運算符(<=)、等于運算符(==)以及不等于運算符(!=)。
2.7.5邏輯運算符及邏輯表達式
邏輯運算符,即用于處理邏輯值的運算符。邏輯運算符通常用在條件判斷語
句或循環(huán)語句中,如if、while語句等。C++中的邏輯運算符包括邏輯與運算符
(&&)、邏輯或運算符(||)、邏輯非運算符(!)。由邏輯運算符構成的表達式,
稱為邏輯表達式。邏輯表達式的返回值為邏輯值(true或false),一般情況下,
1代表true,0代表false。
邏輯運算符的運算規(guī)則如下:
第20頁第20頁
單片機與C語言編程實用技術
邏輯與(參數(shù)1&&參數(shù)2)運算真值表
參數(shù)1參數(shù)2結果
000
100
010
111
邏輯或(參數(shù)1II參數(shù)2)運算真值表
參數(shù)1參數(shù)2結果
000
101
011
111
邏輯非(!參數(shù))運算真值表
參數(shù)結果
01
10
2.7.6自增自減運算符
C語言中還提供了一些特殊的運算符,如++、一、+=、-=等。
特殊運算符及其說明
特殊運算符說明示例
++自加運算符i++等價于i=i+l
一自減運算符i一等價于i=i-l
+=加賦值運算符i+=j等價于i=i+j
-=減賦值運算符i-=j等價于i=i-j
*二乘賦值運算符i*=j等價于i=i*j
/=除賦值運算符I/=j等價于i=i/j
2.7.7符號優(yōu)先級
第21頁第21頁
單片機與C語言編程實用技術
C程序中的符號同時出現(xiàn)在一個表達式時是有優(yōu)先順序的,如數(shù)學中的四則
運算乘除優(yōu)先于加減。常用符號的優(yōu)先級如下:
優(yōu)先級運算符名稱或含義使用形式結合方向說明
[]數(shù)組下標數(shù)組名[常量表達式]
1左到右
0圓括號(表達式)/函數(shù)名(形參表)
-負號運算符一表達式單目
(類型)強制類型轉換(數(shù)據(jù)類型)表達式
2++自增運算符++變量名/變量名++右到左單目
一一自減運算符一變量名/變量名一單目
!邏輯非運算符!表達式單目
/除表達式/表達式雙目
3*乘表達式*表達式左到右雙目
%取余整型表達式%整型表達式雙目
+加表達式+表達式雙目
4左到右
-減表達式-表達式雙目
>大于表達式〉表達式雙目
左到右
>=大于等于表達式>=表達式雙目
5
<小于表達式〈表達式雙目
左到右
<=小于等于表達式<=表達式雙目
==等「表達式==表達式雙目
6左到右
!=不等于表達式!=表達式雙目
7&&邏輯與表達式&&表達式左到右雙目
8II邏輯或表達式II表達式左到右?11
9?=條件運算符表達式1?=表達式2:表達式3右到左三目
=賦值運算符變量=表達式
/=除后賦值變量/=表達式
10*二乘后賦值變量*=表達式右到左
%=余后賦值變量臟表達式
+=加后賦值變量+=表達式
第22頁第22頁
單片機與C語言編程實用技術
-=減后賦值變量-=表達式
11>逗號運算符表達式,表達式,...左到右
讀者在使用符號時,大可不必強行記住所有符號的優(yōu)先級,因為正常的程序
在使用容易混淆優(yōu)先級的符號時,一般都會用優(yōu)先級最高的圓括號()來清晰的
劃分運算優(yōu)先順序。如:x=a+b&&c+d;一般會寫成x=(a+b)&&(c+d);
總結一下,按運算符優(yōu)先級從高到低的順序是:
圓括號》單目運算符〉雙目運算符》三目運算符》賦值運算符》逗號運算符
第23頁第23頁
單片機與C語言編程實用技術
2.8分值結構及其應用
C語言中的控制語句主要用于完成分支結構程序和循環(huán)結構程序的控制。其
主要包括以下9個控制語句:if語句、switch語句、for語句、while語句、do~
while語句、continue語句、break語句和return語句。其中使用if語句和switch
語句實現(xiàn)分支結構程序。
2.8.1if語句
if語句有三種結構:
1)if...
2)if...else...
3)if...elseif...(else)…
第一種if...基本結構的語法如下:
if(表達式)
語句1:
}
執(zhí)行該if語句時,首先判斷表達式是否正確。如果正確,則執(zhí)行程序內容。
如果不正確,則不執(zhí)行任何操作,執(zhí)行if語句后的其他語句。該語句流程如下
圖所示:
if...語句流程
提示:if...語句的語言邏輯是:如果…那么…
第24頁第24頁
單片機與C語言編程實用技術
第二種if...else...基本結構的語法如下:
if(表達式)
(
程序內容1;
)
else
(
程序內容2;
)
執(zhí)行該if語句時,首先判斷表達式結果是否為真。如果判斷結果為真,則
執(zhí)行語句1。如果判斷結果為假,則執(zhí)行語句2。該語句流程如下圖所示:
if...else...語句流程
提示:if…else…語句的語言邏輯是:如果...那么…一>否則那么...
第三種if...elseif...基本結構的語法如下:
if(表達式1)
(
程序內容1:
}
elseif(表達式2)
(
程序內容2;
第25頁第25頁
單片機與C語言編程實用技術
執(zhí)行該if語句時,首先對表達式1進行判斷。如果判斷結果為真,則執(zhí)行
程序內容1。如果判斷結果為假,則對表達式2進行判斷。如果表達式2的判斷
結果為真,則執(zhí)行程序內容2。該語句的流程圖如下圖所示。
if...elseif...語句流程
提示:if...elseif…語句的語言邏輯是:如果…那么…->否貝I如果…那
么…
if...elseif...結構可以進行多次選擇,即:
if(表達式1)
(
程序內容1:
}
elseif(表達式2)
(
程序內容2;
}
elseif(表達式n)
(
程序內容n;
}
此時流程圖如下:
第26頁第26頁
單片機與C語言編程實用技術
總結:
1)選擇語句是以if開頭的,else結尾,elseif在中間的語句結構;
2)省略elseif和else,則為if...語句結構;
3)省略elseif,則為if...else...語句結構;
4)省略esle,則為if...elseif...語句結構。
具體選用何種語句結構根據(jù)需求而定。試思考以下應用,各應該使用何種選
擇語句結構?并編寫出C語言程序。
1)如果a>b,則c=l。
2)如果a>b,則c=l,否則c=-lo
3)如果a>b,則c=L如果a=b,則c=0,如果a〈b,則c=T。
4)如果a=l,則c=3,如果a=2,則c=5,如果a=3,則c=ll,如果a=4,則
c=17o
第27頁第27頁
單片機與C語言編程實用技術
2.8.2switch語句結構
C語言中的另外一種選擇
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托水稻收購協(xié)議
- 2025年江蘇南京溧水商貿旅游集團招聘筆試參考題庫含答案解析
- 2025版學生入學協(xié)議書(含國際化教育與合作交流)3篇
- 2025版旅游商品銷售合同模板(含行程安排)
- 2025-2030全球空調箔行業(yè)調研及趨勢分析報告
- 2025-2030全球數(shù)字按鍵鍵盤行業(yè)調研及趨勢分析報告
- 2025年度裝修工程合同糾紛處理范本4篇
- 2024年平安、自護、維權知識競賽試題及答案
- 2024年教師資格之中學教育知識與能力題庫綜合試卷A卷(附答案) (二)
- 維修門樓的簡單合同書
- 《健康體檢知識》課件
- 《大模型原理與技術》全套教學課件
- 2023年護理人員分層培訓、考核計劃表
- 生產計劃主管述職報告
- GB/T 44769-2024能源互聯(lián)網數(shù)據(jù)平臺技術規(guī)范
- 2025年四川省新高考八省適應性聯(lián)考模擬演練(二)地理試卷(含答案詳解)
- 【經典文獻】《矛盾論》全文
- 部編版語文五年級下冊 第一單元 專項訓練課外閱讀(含答案)
- 2024年寧夏回族自治區(qū)中考英語試題含解析
- 光伏發(fā)電項目試驗檢測計劃
- 《老山界》第1第2課時示范公開課教學PPT課件【統(tǒng)編人教版七年級語文下冊】
評論
0/150
提交評論