版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1單元:C語言程序設(shè)計(jì)入門第2單元:利用三種程序結(jié)構(gòu)解決簡單問題第3單元:利用數(shù)組處理同類型的批量數(shù)據(jù)第4單元:利用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)第5單元:靈活使用指針處理問題第6單元:利用復(fù)雜的構(gòu)造類型解決實(shí)際問題第7單元:利用文件進(jìn)行數(shù)據(jù)管理第8單元:應(yīng)用軟件設(shè)計(jì)
教學(xué)內(nèi)容第1單元C語言程序設(shè)計(jì)入門【單元導(dǎo)讀】
產(chǎn)生于20世紀(jì)70年代的C語言是國際上廣泛流行的計(jì)算機(jī)高級編程語言。
C語言既是通用計(jì)算機(jī)軟件設(shè)計(jì)的基礎(chǔ)語言,也是當(dāng)前嵌入式軟件設(shè)計(jì)的主流語言。通過對本書的學(xué)習(xí),既能掌握C語言編程基礎(chǔ),也能掌握模塊化程序設(shè)計(jì)方法及軟件工程文件組織方法,可為后續(xù)的其他軟件語言程序設(shè)計(jì)(如Python、Java等)和嵌入式軟件設(shè)計(jì)奠定良好的基礎(chǔ)。
單元學(xué)習(xí)目標(biāo):首先了解通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)的區(qū)別;然后通過上機(jī)練習(xí),掌握VC++2010軟件開發(fā)C程序的方法和步驟;最后能利用基本的數(shù)據(jù)類型和運(yùn)算符解決簡單的問題。任務(wù)1.1了解通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)的區(qū)別
微型計(jì)算機(jī)具有很大的通用性,所以又稱通用計(jì)算機(jī)。測控領(lǐng)域的計(jì)算機(jī)系統(tǒng)是嵌入到應(yīng)用系統(tǒng)中,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、成本、體積、可靠性、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng),即嵌入式計(jì)算機(jī)系統(tǒng),簡稱嵌入式系統(tǒng)(EmbeddedSystem)。通俗地說,除了通用計(jì)算機(jī)(如臺式計(jì)算機(jī)和筆記本計(jì)算機(jī))外,所有包含CPU的系統(tǒng)都是嵌入式系統(tǒng),其中以微控制器(MicroControllerUnit,MCU,國內(nèi)也稱為單片機(jī))為核心的嵌入式系統(tǒng)應(yīng)用最廣泛。
通用計(jì)算機(jī)和嵌入式計(jì)算機(jī),是計(jì)算機(jī)技術(shù)在發(fā)展過程中形成的兩大分支。任務(wù)1.1了解通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)的區(qū)別
我國在眾多嵌入式應(yīng)用領(lǐng)域,取得了舉世矚目的巨大成就。
例如:航空領(lǐng)域、智能家電、智能電動汽車等等。
請讀者列舉一些典型的嵌入式系統(tǒng)應(yīng)用實(shí)例。
隨著技術(shù)的發(fā)展,嵌入式計(jì)算機(jī)芯片的硬件集成度越來越高,使得嵌入式硬件設(shè)計(jì)難度不斷降低,因此嵌入式軟件設(shè)計(jì)在整個(gè)嵌入式系統(tǒng)開發(fā)中所占的分量越來越大,而當(dāng)前嵌入式軟件設(shè)計(jì)的主流語言是C語言。關(guān)于嵌入式軟件設(shè)計(jì)的具體內(nèi)容,讀者可通過參考文獻(xiàn)2(索明何《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計(jì)》)進(jìn)一步學(xué)習(xí)。C語言程序設(shè)計(jì)一般要經(jīng)過4個(gè)基本步驟(VC++2010開發(fā)環(huán)境的使用方法和步驟請參照教材和微課視頻):(1)編輯源程序(.c文件或
.h文件);(2)對源程序進(jìn)行編譯,生成二進(jìn)制目標(biāo)文件(.obj文件);(3)連接若干個(gè)源文件和庫文件對應(yīng)的多個(gè)目標(biāo)文件,生成可執(zhí)行文件(.exe文件);(4)運(yùn)行程序。1.2.1VC++2010開發(fā)環(huán)境的使用方法和步驟任務(wù)1.2使用VC++2010軟件開發(fā)簡單的C程序
說明:Dev-C++開發(fā)環(huán)境的使用方法和步驟請參照教材附錄E。1.2.2初識簡單的C程序任務(wù)1.2使用VC++2010軟件開發(fā)C程序【例1.1】在PC屏幕上顯示一串字符。/*程序功能:在PC屏幕上顯示一串字符*/#include
<stdio.h>
//(1)預(yù)處理命令:包含輸入輸出頭文件intmain(void)
//(2)主函數(shù){
printf("這是我寫的第1個(gè)C程序\n");
//(3)調(diào)用printf函數(shù),原樣輸出一串字符return0;
//(4)如程序正常結(jié)束,返回函數(shù)值0}可省略不寫【課堂練習(xí)】同步練習(xí)1-1:分行輸出社會主義核心價(jià)值觀。任務(wù)1.3
理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【課堂練習(xí)】同步練習(xí)1-2:寫出C語言的基本數(shù)據(jù)類型及兩種表現(xiàn)形式。
數(shù)據(jù)又有常量與變量兩種表現(xiàn)形式,例如整型數(shù)據(jù)有整型常量和整型變量。1.3.1常量和變量1、常量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量。根據(jù)書寫方式,常量可分為直接常量和符號常量。(1)直接常量:如4、23;1.23;'a'、'b';''CHINA''等(2)符號常量:用#define指令,指定一個(gè)標(biāo)識符代表一個(gè)常量。
例如,#definePI3.1415926//定義符號常量PI(代表常量3.1415926)
關(guān)于#define指令的使用方法,將在任務(wù)2.5中詳細(xì)介紹。
用戶定義的標(biāo)識符不能與系統(tǒng)提供的關(guān)鍵字(參見附錄B)同名。如int、void等都不能作為用戶標(biāo)識符。另外,標(biāo)識符區(qū)分大小寫,如Sum和sum是兩個(gè)不同的標(biāo)識符。1.3.1常量和變量1、常量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
說明:
標(biāo)識符是用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、宏名、文件名的有效字符序列。C語言的標(biāo)識符只能由字母、數(shù)字、下畫線3種字符組成,且第一個(gè)字符必須是字母或下畫線。
【課堂練習(xí)】同步練習(xí)1-3:識別C語言標(biāo)識符。
在程序執(zhí)行過程中,其值可以改變的量稱為變量。變量必須“先定義,后使用”。定義變量后,編譯系統(tǒng)為每個(gè)變量名分配對應(yīng)的內(nèi)存地址,即一個(gè)變量名對應(yīng)一個(gè)存儲單元。1.3.1常量和變量2、變量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
1.3.2整型數(shù)據(jù)1、整型常量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
(3)十六進(jìn)制整數(shù):以0x開頭的數(shù)。如0x123表示十六進(jìn)制數(shù)123,對應(yīng)十進(jìn)制291。在C語言中,整型常量(整型常數(shù))有3種表示形式:(1)十進(jìn)制整數(shù):如123、-456、7。(2)八進(jìn)制整數(shù):以0開頭的數(shù)。如0123表示八進(jìn)制數(shù)123,對應(yīng)十進(jìn)制83。歸納起來,有10種整型變量,在VC++系統(tǒng)中對應(yīng)的數(shù)值范圍如下:(1)整型變量的分類1.3.2整型數(shù)據(jù)2、整型變量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
數(shù)值范圍是怎樣計(jì)算出來的?(2)整型變量在內(nèi)存中的存儲形式(以單字節(jié)整型數(shù)據(jù)為例)1.3.2整型數(shù)據(jù)2、整型變量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
(3)定義整型變量的方法1.3.2整型數(shù)據(jù)2、整型變量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
1)定義一個(gè)變量的格式:類型標(biāo)識符變量名;
例如:inti;//定義有符號基本整型變量i
unsignedintj;//定義無符號基本整型變量j2)同時(shí)定義多個(gè)同類型變量的格式:類型標(biāo)識符
變量名1,變量名2,變量名3,…;
例如:inti,j,k;//同時(shí)定義三個(gè)基本整型變量i、j、k
定義變量后,系統(tǒng)將根據(jù)變量的類型給變量分配對應(yīng)大小的內(nèi)存空間,用于存儲該變量。例如:
shortint
i;//定義短整型變量i
i=10;//給變量i賦值【課堂練習(xí)】同步練習(xí)1-4:定義變量。1.3.2整型數(shù)據(jù)2、整型變量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【例1.2】整型變量的定義、賦值和輸出。#include<stdio.h>//(1)預(yù)處理命令:包含輸入輸出頭文件intmain(void)
//(2)主函數(shù){
inti;
//(3)定義變量
i=1234;
//(4)給變量賦值
printf("這是我寫的第2個(gè)C程序\n");
//(5)原樣輸出一串字符
printf("i=%d\n",i);//(6)輸出變量的值}格式輸出函數(shù)printf的用法一般形式:printf(格式控制字符串,輸出列表)作用:向顯示器輸出若干個(gè)任意類型的數(shù)據(jù)。②原樣輸出的字符,在顯示中起提示作用。(2)輸出列表:是需要輸出的一些數(shù)據(jù),可以是常量、變量或表達(dá)式。
多個(gè)數(shù)據(jù)之間要用逗號隔開。
括號內(nèi)包含兩部分:(1)格式控制字符串:由雙撇號括起來的一個(gè)字符串,它包含兩種信息。
①由%開頭的格式符,用于指定數(shù)據(jù)的輸出格式。
%d:以十進(jìn)制形式輸出帶符號整數(shù);
%%:輸出%%x:以十六進(jìn)制形式輸出無符號整數(shù);
%c:輸出單個(gè)字符;
%s:輸出字符串;%f:以小數(shù)形式輸出實(shí)數(shù)(默認(rèn)輸出6位小數(shù));%e:以指數(shù)形式輸出實(shí)數(shù);%u:以十進(jìn)制形式輸出無符號整數(shù);
使用printf函數(shù)時(shí),要求格式控制字符串中必須含有與輸出項(xiàng)一一對應(yīng)的格式符,并且類型要匹配。printf函數(shù)也可以沒有輸出項(xiàng)。printf("這是我寫的第2個(gè)C程序\n");
//原樣輸出一串字符,并換行printf("i=%d\n",i);//原樣輸出i=,然后以%d形式輸出變量i的值,并換行1.3.2整型數(shù)據(jù)任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【例1.3】整型變量的定義、賦值和輸出。#include<stdio.h>intmain(void){
unsignedchara;
//定義無符號單字節(jié)整型變量charb,c;
//定義有符號單字節(jié)整型變量
unsignedshortintd;
//定義無符號短整型變量
shortinte,f;
//定義有符號短整型變量a=0xff;
b=0xff;
c=-1;
//單字節(jié)整型變量賦值
d=0xffff;e=0xffff;f=-1;
//短整型變量賦值
printf("%d%d%d\n",a,
b,
c);//以十進(jìn)制形式輸出變量的值
printf("%d%d%d\n",d,
e,
f);//以十進(jìn)制形式輸出變量的值
}【課后作業(yè)】思考與實(shí)踐:分析并運(yùn)行程序,理解整型數(shù)據(jù)在內(nèi)存中的存儲形式。1.3.3字符型數(shù)據(jù)1、字符常量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
用一對單撇號括起來的一個(gè)字符,稱為字符常量,例如:'A','6','+'
等。
C語言還有一種以
\開頭的字符序列,稱為轉(zhuǎn)義字符(將\后面的字符轉(zhuǎn)換成為另外的含義)。
請參考附錄A,熟悉字符0~9、大寫字母A~Z、小寫字母a~z對應(yīng)的ASCII碼值。1.3.3
字符型數(shù)據(jù)任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
字符變量用來存放字符,并且只能存放1個(gè)字符。其類型標(biāo)識符是char。
例如:charc1,c2;//定義字符變量c1、c2c1='a';c2='b';//給變量c1賦值'a',變量c2賦值'b'3、字符型數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法
一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。字符型數(shù)據(jù)在內(nèi)存中存儲的是該字符對應(yīng)的ASCII碼。
字符型數(shù)據(jù)的存儲形式與單字節(jié)整型數(shù)據(jù)相同。因此,字符型可以當(dāng)作單字節(jié)整型。
2、字符變量
【課堂練習(xí)】同步練習(xí)1-5:字符型數(shù)據(jù)在內(nèi)存中的存儲形式、常用字符的ASCII碼值。#include<stdio.h>intmain(void){
charc1;
//定義字符變量
c1=97;
//給變量c1賦整數(shù)(將ASCII碼值97賦給變量c1)
printf("%c\n",c1);//以字符形式輸出變量c1的值(ASCII碼值對應(yīng)的字符)
printf("%d\n",c1);//以整數(shù)形式輸出變量c1的值(字符對應(yīng)的ASCII碼)}1.3.3字符型數(shù)據(jù)【例1.4】向字符變量賦整數(shù)。任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【思考與實(shí)踐】分析并運(yùn)行程序,體會字符型數(shù)據(jù)在內(nèi)存中的存儲形式。1.3.3字符型數(shù)據(jù)【例1.5】字符型數(shù)據(jù)與整型數(shù)據(jù)混合運(yùn)算。任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【思考與實(shí)踐】編寫、運(yùn)行程序,分析程序功能。#include<stdio.h>intmain(void){charc1,c2;//定義字符變量
c1='a';c2='b';
//給字符變量賦字符常量
c1=c1-32;c2=c2-32;
//將字符變量對應(yīng)的ASCII碼值更新
printf("%c,%c\n",c1,
c2);//以字符形式輸出變量c1和c2的值
}
字符串常量是由一對雙撇號括起來的字符序列。例如:"CHINA"
,"Cprogram"
,"a","$12.5"
字符常量和字符串常量的區(qū)別:因此字符串常量"CHINA"在內(nèi)存中占用6個(gè)字節(jié)?!舅伎肌孔址A?a'和字符串常量"a"有何區(qū)別?4、字符串常量
1.3.3字符型數(shù)據(jù)任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【課后作業(yè)】同步練習(xí)1-6:用sizeof運(yùn)算符計(jì)算并輸出字符串常量占用內(nèi)存字節(jié)數(shù)。1.3.4實(shí)型數(shù)據(jù)1、實(shí)型常量
(2)指數(shù)形式。如123e3或123E3都代表123×103。要注意字母e(或E)之前必須要有數(shù)字,且e后面的指數(shù)必須為整數(shù),如e2、4e2.5、.e3、e都不是合法的指數(shù)形式。
實(shí)型常量也稱實(shí)數(shù),在C語言中,實(shí)數(shù)有兩種表示形式:
(1)十進(jìn)制小數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成(注意,必須要有小數(shù)點(diǎn))。如:0.123、123.、123.0、0.0。
一個(gè)實(shí)數(shù)可以有多種指數(shù)表示形式。在程序中以指數(shù)形式輸出一個(gè)實(shí)數(shù)時(shí),會以規(guī)范化的指數(shù)形式輸出。
例如123.456的規(guī)范化指數(shù)形式是1.23456e2。2、實(shí)型變量
根據(jù)數(shù)據(jù)的數(shù)值范圍和精度,實(shí)型變量的類型主要有單精度(float)型和雙精度(double)型。需要注意:實(shí)型數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲精度有限,不可能得到完全精確的數(shù)值。任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
#include<stdio.h>intmain(void){
floatx;//定義實(shí)型變量xx=12.3;//將實(shí)型常數(shù)12.3賦給變量xprintf("%f\n",x);//以小數(shù)形式輸出變量x的數(shù)值printf("%e\n",x);//以指數(shù)形式輸出變量x的數(shù)值}1.3.4實(shí)型數(shù)據(jù)【例1.6】實(shí)型變量的定義、賦值和輸出。任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
【課后作業(yè)】同步練習(xí)1-7:用sizeof運(yùn)算符測試系統(tǒng)中數(shù)據(jù)類型的存儲字節(jié)數(shù)。1.3.5變量的初始化C語言允許在定義變量的同時(shí),對變量賦初值,即變量的初始化。任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
例如:
inta=3;
//定義整型變量a,并賦初值3
當(dāng)一次定義同類型的多個(gè)變量時(shí),可以給全部變量或部分變量賦初值。inta,b,c=5;
//定義a、b、c三個(gè)整型變量,只給c賦初值5注意,對3個(gè)變量賦相同的初值3時(shí),不能寫成:inta=b=c=3;inta=1,b=2,c=3;
//定義a、b、c三個(gè)整型變量,并賦不同的初值inta=3,b=3,c=3;
//定義a、b、c三個(gè)整型變量,并賦相同的初值3【課后作業(yè)】【例1.7】變量的初始化和輸出。charc='a';
//定義字符變量c,并賦初值'a'floatb=1.23;//定義實(shí)型變量b,并賦初值1.23
在定義變量并對變量初始化時(shí),如果加上關(guān)鍵字const,則變量的值在程序運(yùn)行期間不再改變,這種變量稱為常變量(constantvariable),也稱為只讀變量。例如:constinta=5;
//用const聲明整型變量a為常變量,其值始終是5*1.3.6常變量任務(wù)1.3理解數(shù)據(jù)的基本類型及其表現(xiàn)形式
1.4.1算術(shù)運(yùn)算符及其表達(dá)式1.4.2強(qiáng)制類型轉(zhuǎn)換運(yùn)算符及其表達(dá)式1.4.3賦值運(yùn)算符及其表達(dá)式1.4.4關(guān)系運(yùn)算符及其表達(dá)式1.4.5邏輯運(yùn)算符及其表達(dá)式1.4.6位運(yùn)算符及其表達(dá)式1.4.7
逗號運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
附錄C列出了C語言的各種運(yùn)算符。1.4.1算術(shù)運(yùn)算符及其表達(dá)式1、基本的算術(shù)運(yùn)算符(2)-
減法運(yùn)算符,或負(fù)值運(yùn)算符,如7-2、-4
(1)+
加法運(yùn)算符,或正值運(yùn)算符,如2+3、+5
(4)/
除法運(yùn)算符,如5/2、5.0/2
(3)*乘法運(yùn)算符,如2*3
(5)%模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如5%2的值為1
說明:
任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
【課堂練習(xí)】同步練習(xí)1-8:理解算術(shù)運(yùn)算符的運(yùn)算規(guī)則。1.4.1算術(shù)運(yùn)算符及其表達(dá)式1、基本的算術(shù)運(yùn)算符任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
【例1.8】將兩位十進(jìn)制整數(shù)的十位數(shù)和個(gè)位數(shù)分離。#include
<stdio.h>intmain(void){inta=23,b,
c;
//定義a、b、c三個(gè)變量
b
=
a%10;
//求變量a的個(gè)位數(shù)
c
=
a/10;
//求變量a的十位數(shù)(/10相當(dāng)于右移1位)printf("a=%d\n",
a);
//輸出變量a的值printf("十位=%d\n",
c);//輸出變量a對應(yīng)的十位數(shù)printf("個(gè)位=%d\n",
b);//輸出變量a對應(yīng)的個(gè)位數(shù)
}1.4.1算術(shù)運(yùn)算符及其表達(dá)式1、基本的算術(shù)運(yùn)算符任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
(1)【例1.9】將一個(gè)正整數(shù)倒序輸出。(2)同步練習(xí)1-9:
用/和%運(yùn)算符將一個(gè)3位和一個(gè)4位十進(jìn)制整數(shù)的各位數(shù)字分離。
(3)【思考與實(shí)踐】
分析并運(yùn)行例1.10程序,體會不同類型數(shù)據(jù)之間的混合運(yùn)算規(guī)則?!菊n后作業(yè)】1.4.1算術(shù)運(yùn)算符及其表達(dá)式2、自增、自減運(yùn)算符任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
自增運(yùn)算符++:使變量的值自增1,相當(dāng)于i=i+1。自減運(yùn)算符--:使變量的值自減1,相當(dāng)于i=i-1。
i++
表達(dá)式先用i的值,然后對i的值加1
(先用后加)
++i
先對i的值加1,然后表達(dá)式用i加1的值(先加后用)--i
先對i的值減1,然后表達(dá)式用i減1的值(先減后用)
i--
表達(dá)式先用i的值,然后對i的值減1
(先用后減)有以下4種形式的表達(dá)式:
可見,由自增(自減)運(yùn)算符構(gòu)成不同形式的表達(dá)式時(shí),對變量而言,自增1(自減1)都具有相同的效果,但對表達(dá)式而言卻有著不同的值。1.4.1算術(shù)運(yùn)算符及其表達(dá)式2、自增、自減運(yùn)算符#include<stdio.h>intmain(void){int
i=3,j=3,k=3,x=3;
printf("%d\t",i++);printf("i=%d\n",i);
printf("%d\t",++j);printf("j=%d\n",j);
printf("%d\t",k--);printf("k=%d\n",k);
printf("%d\t",--x);printf("x=%d\n",x);}說明:
(1)自增、自減運(yùn)算符只能用于變量,不能用于常量或表達(dá)式。如5++或(a+b)++都是不合法的。(2)自增、自減運(yùn)算符常用在循環(huán)語句中,使循環(huán)變量自動加1、減1,這將在后續(xù)單元中學(xué)習(xí)。任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
【例1.11】自增、自減運(yùn)算符的應(yīng)用。1.4.1算術(shù)運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
3、算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性
算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號將運(yùn)算對象(常量、變量或表達(dá)式)連接起來的、符合C語法規(guī)則的式子。例如:a+b*c-5/2+'a'。C語言規(guī)定了運(yùn)算符的優(yōu)先級。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級高低次序執(zhí)行,例如:x-y*z相當(dāng)于x-(y*z)。
算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笙蛴遥ㄗ蠼Y(jié)合性)”,即先左后右。因此a+b-c相當(dāng)于
(a+b)-c。附錄C給出了C語言運(yùn)算符的優(yōu)先級和結(jié)合性,在分析表達(dá)式時(shí)查詢參考。
如果在一個(gè)運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級相同,則按照規(guī)定的“結(jié)合方向(結(jié)合性)”處理。
問題:a+b-c,b先與a相加,還是先與c相減?1.4.2強(qiáng)制類型轉(zhuǎn)換運(yùn)算符及其表達(dá)式強(qiáng)制類型轉(zhuǎn)換表達(dá)式的一般形式:(類型標(biāo)識符)(表達(dá)式)例如:
(int)i
將i轉(zhuǎn)換為整型(int)x+y
將x轉(zhuǎn)換成整型后,再與y相加(“(int)”的優(yōu)先級高于“+”)
(float)(x+y)
將x+y的結(jié)果轉(zhuǎn)換為float型#include<stdio.h>intmain(void){
inti;//定義整型變量i
floatx=2.4F;//定義實(shí)型變量x,并賦初值
i=
(int)x;//將實(shí)型變量x強(qiáng)制轉(zhuǎn)換為int型
printf("x=%f,i=%d\n",x,i);
//輸出變量
x
和
i的值}【例1.12】將實(shí)型數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為整型。任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
1.4.2強(qiáng)制類型轉(zhuǎn)換運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
【思考與總結(jié)】數(shù)值類型轉(zhuǎn)換有幾種方式?
(1)系統(tǒng)自動進(jìn)行的類型轉(zhuǎn)換。如2+3.5,系統(tǒng)自動將整數(shù)2轉(zhuǎn)換為實(shí)型。
(2)強(qiáng)制類型轉(zhuǎn)換。若i為float型,則i%3不合法,必須用(int)i%3。(1)【思考與實(shí)踐】
1)分析并運(yùn)行例1.13程序,體會強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的作用。
2)編程輸出表達(dá)式的值。(2)同步練習(xí)1-10:
輸出課程的優(yōu)秀率(用百分比表示)。
【課后作業(yè)】1、簡單賦值運(yùn)算符“=”及其表達(dá)式1.4.3賦值運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
簡單賦值表達(dá)式的形式:變量=
表達(dá)式
賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式。根據(jù)附錄C,賦值運(yùn)算符是按照“自右向左”的結(jié)合順序。
根據(jù)附錄C,賦值運(yùn)算符的優(yōu)先級僅高于逗號運(yùn)算符,而低于其他運(yùn)算符。因此賦值表達(dá)式a=3*5等價(jià)于a=(3*5),i=a+b等價(jià)于i=(a+b)。
一個(gè)表達(dá)式應(yīng)該有一個(gè)值,例如賦值表達(dá)式“
a=5”的值是5。執(zhí)行運(yùn)算后,變量a的值也是5。
同步練習(xí)1-11:分析下面各賦值表達(dá)式中變量a的值。a=5+(c=7)a=b=c=33a=(b=6)/(c=2)a=(b=2)+(c=5)1273
因此
a=b=5與
a=(b=5)等價(jià)。2、復(fù)合的賦值運(yùn)算符及其表達(dá)式1.4.3賦值運(yùn)算符及其表達(dá)式
在簡單賦值運(yùn)算符“=”之前加上其他運(yùn)算符,可構(gòu)成復(fù)合的賦值運(yùn)算符。a*=3等價(jià)于a=a*3a-=3等價(jià)于a=a-3a*=b+2等價(jià)于a=a*(b+2)a+=3等價(jià)于a=a+3a/=3等價(jià)于a=a/3a%=3等價(jià)于a=a%3任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
【課后作業(yè)】【思考與實(shí)踐】
(1)分析并運(yùn)行例1.14程序,體會復(fù)合賦值運(yùn)算符的運(yùn)算規(guī)則。
(2)編程輸出變量的值。①a*=b+2
②a*=
(b+2)
(
)
(對表達(dá)式
b+2
外加括號,因?yàn)椤?”的優(yōu)先級高于“*=”)③
=
(在“=”左側(cè)補(bǔ)上變量名a)
(將“a*”移到“=”右側(cè))
aa*(b+2)
3、類型轉(zhuǎn)換1.4.3賦值運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
注意:在賦值運(yùn)算中,需要根據(jù)數(shù)據(jù)的類型和數(shù)值的范圍為變量指定合適的類型,必要時(shí)還需要借助強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,以防出錯(cuò)。
【思考與實(shí)踐】
如果賦值運(yùn)算符“=”兩側(cè)的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時(shí),系統(tǒng)會自動進(jìn)行類型轉(zhuǎn)換。
課后上機(jī)編程,輸出教材中所列的幾種情況下變量的值,并思考其原因。1.4.4關(guān)系運(yùn)算符及其表達(dá)式1、關(guān)系運(yùn)算符及其優(yōu)先級次序
優(yōu)先級相同(高)優(yōu)先級相同(低)③>
大于①<
小于②<=
小于或等于⑥!=
不等于④>=
大于或等于⑤==
等于任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
根據(jù)附錄C,關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。a=b>c等價(jià)于
a=(b>c)例如:
c>a+b等價(jià)于
c>(a+b)a==b<c等價(jià)于
a==(b<c)a>b==c等價(jià)于
(a>b)==c2、關(guān)系表達(dá)式1.4.4關(guān)系運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子,稱為關(guān)系表達(dá)式。a+b>c+d(a=3)>(b=5)'a'<'b'a==3例如:a>ba!=3
關(guān)系表達(dá)式的值是一個(gè)邏輯值:“真”或“假”。例如關(guān)系表達(dá)式“5==3”的值為“假”,“5>=0”的值為“真”。
關(guān)系運(yùn)算結(jié)果,以“1”代表“真”,以“0”代表“假”。關(guān)系表達(dá)式邏輯值(真、假)關(guān)系表達(dá)式的值(1、0)a>ba>b+ca!=b+ca>b>c若a=3,b=2,c=1,則:真假假假1000【課堂練習(xí)】【例1.15】考察關(guān)系表達(dá)式的值。假1.4.5邏輯運(yùn)算符及其表達(dá)式1、邏輯運(yùn)算符及其優(yōu)先級次序
③!邏輯非①&&邏輯與②||邏輯或
邏輯運(yùn)算的真值表aba&&ba||b!a真真真假假真假假真真假真假真假假真!a==b||c<d等價(jià)于a>b&&c>d等價(jià)于a+b>c&&x+y<d等價(jià)于根據(jù)附錄C,幾種運(yùn)算符的優(yōu)先級次序:
!(非)
高算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和||賦值運(yùn)算符低(a+b)(>c)(x+y)(<d)&&(a>b)(c>d)&&(!a)(==b)||(c<d)任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
2、邏輯表達(dá)式的值
1.4.5邏輯運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
C語言規(guī)定,參與邏輯運(yùn)算的操作數(shù)以非0代表“真”,以0代表“假”。邏輯表達(dá)式的值,即邏輯運(yùn)算結(jié)果,以數(shù)值1代表“真”,以0代表“假”。例如:(1)若a=3,則!a的值:(4)'a'&&'b'的值:(2)若a=3,b=4,則a&&b的值:(3)3&&0||-4的值:0111在邏輯表達(dá)式的求解過程中,有時(shí)并非所有的運(yùn)算都被執(zhí)行。
例如:
(1)a&&b:只有當(dāng)a為真(非0)時(shí),才需要判斷b的值。只要a為假,就不必判斷b的值,此時(shí)整個(gè)表達(dá)式已確定為假。(2)a||b:只要a為真(非0),就不必判斷b的值。只有a為假,才判斷b的值。1.4.5邏輯運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
【課堂練習(xí)】(1)同步練習(xí)1-12:關(guān)系運(yùn)算符和邏輯運(yùn)算符的綜合運(yùn)用。(2)【思考與實(shí)踐】分析并運(yùn)行例1.16程序,考察邏輯表達(dá)式的值。位運(yùn)算符含義&按位與|按位或^按位異或~按位取反<<左移>>右移說明:1)位運(yùn)算符中除“~”以外,均為二目運(yùn)算符,即要求兩側(cè)各有一個(gè)運(yùn)算量。
2)運(yùn)算量只能是整型或字符型數(shù)據(jù),不能是實(shí)型數(shù)據(jù)。1.4.6位運(yùn)算符及其表達(dá)式
在嵌入式軟件設(shè)計(jì)中,經(jīng)常用到位運(yùn)算符:對二進(jìn)制位進(jìn)行運(yùn)算。任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
例如,0x23與0x45按位與:00100011(0x23)
&)01000101(0x45)
特殊用途:“與0清零、與1保留”——可對數(shù)據(jù)的某些位清零,某些位保留不變。0&0=0,0&1=0,1&0=0,1&1=100000001(0x01)1.4.6位運(yùn)算符及其表達(dá)式任務(wù)1.4
利用基本的運(yùn)算符解決簡單問題
1、“按位與”運(yùn)算符(&)
例如,將0x23的高4位清零,低4位保留不變。00100011
(0x23)
&)00001111(0x0F)0000
0011
(0x03)例如,0x23與0x45按位或:00100011(0x23)
|)01000101(0x45)
特殊用途:“或1置1、或0保留”——可對數(shù)據(jù)的某些位置1,某些位保留不變。0|0=0,0|1=1,1|0=1,1
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)公司辦公費(fèi)用控制
- 機(jī)電工程人工費(fèi)施工合同
- 中心站服務(wù)改進(jìn)戰(zhàn)略
- 工程公司職工胸牌管理辦法
- 網(wǎng)絡(luò)安全招投標(biāo)小組職責(zé)探討
- 農(nóng)場獸醫(yī)服務(wù)合同范本
- 《Excel數(shù)據(jù)獲取與處理實(shí)戰(zhàn)》 課件 第7章 函數(shù)的應(yīng)用-1
- 2022年大學(xué)生物工程專業(yè)大學(xué)物理下冊月考試題A卷-含答案
- 防盜門鎖系統(tǒng)
- 2022年大學(xué)能源動力專業(yè)大學(xué)物理下冊開學(xué)考試試題-含答案
- 事業(yè)單位人事管理?xiàng)l例完整版x課件
- 《我是運(yùn)動小健將》課件
- 河北省衡水市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 教師對幼兒園管理工作的滿意度調(diào)查問卷
- 接地網(wǎng)安裝(隱蔽)檢驗(yàn)批質(zhì)量檢驗(yàn)記錄
- 【蘇教版】一年級數(shù)學(xué)下冊《期末試卷》
- 幼兒園小班區(qū)域標(biāo)識圖
- 印刷品供貨技術(shù)方案
- 動脈硬化幻燈課件
- 阿里城市大腦解決方案
- 思想政治教育學(xué)原理整套課件完整版電子教案課件匯總(最新)
評論
0/150
提交評論