




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1C語言發(fā)展C程序形式和程序執(zhí)行過程C程序的結構
回顧上節(jié)課內容2什么是C語言:人和計算機交換信息所用的語言,稱為計算機語言。用計算機語言編寫的代碼稱為程序;用高級語言編寫的程序稱為源程序;且源程序必須通過編譯和連接后,才能被計算機執(zhí)行。
機器語言;0,1代碼編程匯編語言;助記符編程高級語言;自然語言編程,如C語言等3C程序的編輯、編譯、連接和運行過程:編輯
編譯
連接
運行注:C程序源文件的擴展名是.cabc.objabc.cabc.exe輸出結果4程序的結構C程序由函數構成。一個函數由兩個部分組成:函數首部(說明部分)函數名、類型、參數及類型說明
函數體
{……}變量的定義及執(zhí)行部分書寫格式自由:一般用小寫字母,語句以分號結束,分號是語句的必要組成部分,一行上可以寫幾條語句,一條語句也可以寫在幾行上。5程序的結構(續(xù))C程序總是從main函數開始執(zhí)行,并且一定有且僅有一個主函數,主函數名必須是main。
C語言本身不帶輸入輸出語句,必須通過調用庫函數來實現輸入輸出。以/*……*/之間的內容是注釋,不影響程序的執(zhí)行,可增加程序的可讀性。6
本講內容1.各種數據類型的常量與變量2.運算符和表達式7C語言里常用的數據類型有整型、實型、字符型、數組、結構體類型、指針類型等。數據類型豐富是C語言的特點之一。如:3.1數據類型int整型 char字符型float浮點型
8例1:編程:輸出5和6的和與平均值(保留兩位小數)。
#include<stdio.h>main(){inta,b,sum;/*定義變量a,b,sum為整形*/floatav;/*定義變量av為實型*/a=5;b=6;sum=a+b;/*計算a+b的值,并賦值給sum*/av=sum/2;/*計算平均值*/printf(“sum=%d,av=%.2f\n”,sum,av);/*輸出*/}結果:sum=11,av=5.00注意:在處理數據和輸出數據時,一定要選用合適的數據類型和正確的輸出格式說明。93.1.1
常量與變量例2:編寫輸出1000和100的和與差的程序。
#include<stdio.h>#defineABC1000/*定義符號常量*/main(){ints;/*定義變量s為整形*/s=ABC+100;/*相當于s=1000+100*/printf(“sum=%d”,s);/*輸出和*/
s=ABC-100;printf(“差=%d\n”,s);/*輸出差*/}10常量與變量概念常量:在程序運行過程中其值不能變的量。包括直接常量和符號常量。
符號常量的定義:
#define標識符常量變量:程序運行過程中其值可以改變的量,系統為程序中的每一個變量開辟一個存儲單元,如:例2中的s
11變量名字母開頭,后跟字母、數字和下劃線組成。C語言中的關鍵字不能作為變量名。說明變量必須先定義后使用;變量中存放的只能是數據,而且只能是一個數據,往變量中存放數據的操作稱為賦值;12變量的“名”和變量的“值”不同,變量的“名”是該變量所代表的存儲單元的標志,而變量的“值”是指存儲單元中的內容。如:inta;執(zhí)行a=5;執(zhí)行a=10;
定義a第一次賦值第二次賦值a的值不定
5
1013整型常量
基本型–32768---32767
有符號型短整型-32768----32676整型常量長整型-231-----231-1
無符號基本型0--65535
無符號型無符號短整型0—65535
無符號長整型0---232-114三種形式表示:十進制:如123600八進制:以0開始,如0123十六進制:以0x開始,如0x123整型常量15定義格式:int變量名1[=常量1],變量名2[=常量2],…;long變量名1[=常量1],變量名2[=常量2],…;如:inta,b=9;longs=1;整型變量16實型常量表示形式:小數形式
1.01.+12.0-12.00.0指數形式
1e31.8e-3-123E-6-.1E-3指數只能是整數,而尾數則可以是整數也可以是小數,無論指數或尾數均不能省略例如:1e、E.5、E-3
非法實型常量的類型:默認為double型,后面加F(或f),則強調表示該數是float類型例如:3.5f、1e2F
實型數據類型17實型變量1)實型數據在內存中的存放形式:一個實型數據一般在內存中占4個字節(jié)(32位)。
2)實型變量的分類實型變量分為:單精度(float)、雙精度(double)。18實型變量定義:
類型說明符變量名標識符,變量名標識符,...例如:floatx,y;(x,y為單精度實型量)
doublea,b,c;(a,b,c為雙精度實型量)
說明
(1).實型常數不分單、雙精度,都按雙精度double型處理。
(2).實型常量可以賦值給一個float、double、longdouble型變量。根據變量的類型截取實型常量中相應的有效數字。
決定分配字節(jié)數和數的表示范圍合法標識符19字符型數據類型
字符常量單引號括起來的單個可視字符例如:'a'、'A'、'+'、'3'、''等轉義字符常量單引號括起來的\與可視字符組合,例如:20字符常量還有另外一種形式
——轉義字符形式。
轉義字符功能ASCII記號轉義字符
功
能ASCII記號
\a 響鈴
BEL\\反斜杠字?\ \b 退格
BS\‘
單引號字符
'\f走紙換頁
FF\“
雙引號字符
"\n 換行
NL\? 問號
? \r 回車
CR\ooo 1~3位8進制數
ooo\t橫向跳格
HT\xhh 1~2位16進制數
hh\v縱向跳格
VT21雙引號括起來的字符序列。如"Howareyou","0"等字符串在存儲時末尾被自動加上字符‘\0’字符常量與只包含一個字符的字符串常量的區(qū)別字符串常量
22字符串的存儲C語言規(guī)定:在存儲字符串常量時,由系統在字符串的末尾自動加一個‘\0’作為字符串的結束標志。注意:在源程序中書寫字符串常量時,不必加結束字符‘\0’,否則畫蛇添足。
如果有一個字符串為“CHINA”,則它在內存中的實際存儲如下所示:最后一個字符'\0'是系統自動加上的,它占用6字節(jié)而非5字節(jié)內存空間。CHINA\023綜上所述,字符常量'A'與字符串常量"A"是兩回事:(1)定界符不同:字符常量使用單引號,而字符串常量使用雙引號;
(2)字符常量只能是單個字符,字符串常量則可以含一個或多個字符。(3)可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。(4)字符常量占一個字節(jié)的內存空間。字符串常量占的內存字節(jié)數等于字符串中字符數加1。增加的一個字節(jié)存放字符‘\0’(ASCII值為0),這是字符串的結束標志。24字符型變量中存放ASCII字符集中的任何一個字符,字符變量在內存中占一個字節(jié)。定義格式:
char變量名1,變量名2,…;
如:
chara,b;a=97-32;b=a+2;
字符型變量
252)特性字符數據在內存中存儲的是字符的ASCII碼──一個無符號整數,其形式與整數的存儲形式一樣,所以C語言允許字符型數據與整型數據之間通用。(1)一個字符型數據,既可以字符形式輸出,也可以整數形式輸出。
/*程序功能:用字符形式和整數形式輸出字符變量*/
main()
{charch1,ch2;
ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);
printf(“ch1=%d,ch2=%d\n”,ch1,ch2);
}
程序運行結果:
ch1=a,ch2=b
ch1=97,ch2=9826基本數據類型(TurboC編譯系統)類型符號關鍵字數的表示范圍所占位數整型字符型實型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-21億~21億16unsigned
int0~65535320~42億unsigned
longunsigned
short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255說明:數據類型所占字節(jié)數隨機器硬件不同而不同,上表以IBMPC機為例:27變量的初始化:
允許在說明變量的時候對變量賦初值。例如:inta=5,b=10+2;doublex=23.568,y;charch1='a',ch2=66,ch3='\142';表示定義變量并對變量存儲單元賦值。錯誤的初始化:
inta=3+b,b=5;
floatm=n=23.16;28
圖中橫向向左的箭頭表示必定的轉換(不必考慮其它運算對象)。如字符數據參與運算必定轉化為整數,float型數據在運算時一律先轉換為雙精度型,以提高運算精度(即使是兩個float型數據相加,也先都轉換為double型,然后再相加)。(4)賦值運算,如果賦值號“=”兩邊的數據類型不同,賦值號右邊的類型轉換為左邊的類型。這種轉換是截斷型的轉換,不會四舍五入。各類數值型數據間的混合運算:29強制轉換強制轉換是通過類型轉換運算符來實現。一般形式:(類型說明符)表達式功能:把表達式的結果強制轉換為類型說明符所表示的類型。(int)a將a的結果強制轉換為整型量。(int)(x+y)將x+y的結果強制轉換為整型量。(float)a+b將a的內容強制轉換為浮點數,再與b相加說明:(1)類型說明和表達式都需要加括號(單個變量可以不加括號)(2)無論隱式轉換,強制轉換都是臨時轉換,不改變數據本身的類型和值。30強制類型轉換main(){floatf=5.75;printf("(int)f=%d\n",(int)f);/*將f的結果強制轉換為整型,輸出*/printf("f=%f\n",f);/*輸出f的值*/}結果:(int)f=5f=5.750000311.算術運算符和算術表達式2.賦值運算符和賦值表達式3.關系運算符和關系表達式4.邏輯運算符和邏輯表達式5.條件運算符和條件表達式6.逗號運算符和逗號表達式7.不同類型數據的混合運算運算符和表達式32第一節(jié)算術運算符和算術表達式基本的算術運算符自增和自減運算符33算術運算符和算術表達式C語言提供了算術運算符+(加法運算或正號運算符)-(減法運算或負號運算符)*(乘法運算符)/(除法運算符)%(求余運算符,或稱模運算符)34算術運算符和算術表達式說明:兩個整數相除結果為整數,如8/5的結果為1,舍去小數部分。如果參加運算的兩個數中有一個數為實數,則結果是double型。求余運算要求%兩側都是整型數據。35算術運算符和算術表達式算術表達式用算術運算符和括號將運算量連接起來的式子稱為算術表達式。如:-2+19.0/2*5%8運算符有優(yōu)先級和結合性,在求表達式的值時,要按照優(yōu)先級的高低依次計算,如果運算符兩側優(yōu)先級相同,則按規(guī)定的結合方向進行。結合性從左到右36算術運算符和算術表達式優(yōu)先級-(負號運算符)*/%
+-(加減運算符)
我最高!
我最低!37自增和自減運算符++運算符的作用是使變量的值增1。--運算符的作用是使變量的值減1。常見的用法有:++i,--i在使用i前,先使i的值加1i++,i--在使用i后,先使i的值加138例題已知i=5j=i++;j=?i=?j=++i;j=?i=?566639自增和自減運算符注意:
1自增和自減運算符只能用于變量,表達式(x+y)++是不合法的。2自增和自減運算符的結合方向是“自右向左”。如表達式-i++等價于-(i++)。具有一定的二義性,使用時請慎重!如:設i原值是3,則(i++)+(i++)+(i++)的值可能是9,也可能是1240
回顧上節(jié)課內容各種數據類型的常量與變量運算符和表達式41例inti;i=2.56;結果i=2例
floatf;inti;i=10;f=i;f=10.0計算a=(b=10)/(c=2)值表達式值5,a=5,b=10,c=242算術運算符和表達式基本算術運算符:+-*/%結合方向:從左向右優(yōu)先級:->*/%>+-
說明:“-”可為單目運算符時,右結合性兩整數相除,結果為整數%要求兩側均為整型數據例5/2=2-5/2.0=-2.5例5%2=1
-5%2=-11%10=
1
5%1=
05.5%2
()43自增、自減運算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;
說明:++--不能用于常量和表達式,如5++,(a+b)++++--結合方向:自右向左優(yōu)先級:-++-------->*/%----->+-
例-i++-(i++)i=3;printf(“%d”,-i++);-3441.算術運算符和算術表達式2.賦值運算符和賦值表達式3.關系運算符和關系表達式4.邏輯運算符和邏輯表達式5.條件運算符和條件表達式6.逗號運算符和逗號表達式運算符和表達式45第二節(jié)賦值運算符和賦值表達式賦值運算符賦值表達式賦值運算符的結合性46賦值運算符簡單的賦值運算符復合的賦值運算符=+=-=*=%=/=47賦值運算符簡單的賦值就是把一個表達式的值賦給一個變量。例如:
i=5;
i=j+1;48
i+=2等價于i=i+2a*=b+5等價于a=a*(b+5)x%=3等價于x=x%3賦值運算符在賦值符“=”之前加上其它運算符,可以構成復合的運算符。例如:C語言采用這種復合運算符,一是為了簡化程序,使程序精煉;二是為了提高編譯效率。49賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。形式:
〈變量〉〈賦值運算符〉〈表達式〉
例如:x=3;y=x+3。對賦值表達式求解的過程是:將賦值運算符右側的表達式的值賦給左側的變量。賦值表達式的值就是被賦值的變量的值。50結合性
例如:
a=(b=8)
賦值運算符的結合性從右向左51下面程序段的輸出結果是:inta=5,b=5;a%=b+=a+=(a+b);printf(“a=%d,b=%d”,a,b);
練習1:a=15,b=2052下面程序段的輸出結果是:inta=10,b=10;a+=b-=a*=b/=3;printf(“a=%d,b=%d”,a,b);
練習2:a=3,b=-2753第三節(jié)關系運算符和關系表達式關系運算符優(yōu)先級
<<=>>=
==!=高低54關系運算符算術運算符關系運算符賦值運算符高低55關系表達式概念用關系運算符將兩個表達式(可以是算術表達式、關系表達式、賦值表達式或邏輯表達式)連接起來的式子,稱為關系表達式。關系表達式的值為邏輯值“真”或“假”,以1代表“真”,以0代表“假”。例如關系表達式“8==4”的值為“假”,表達式的值為0。關系表達式“5>0”的值為“真”,表達式的值為1。56關系運算符的結合性結合性從左向右57第四節(jié)邏輯運算符和邏輯表達式邏輯運算符優(yōu)先級
!(邏輯非)
&&(邏輯與)
||(邏輯或)
58邏輯運算的真值表
ab !a !b a&&b a||b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假
59
?。ǚ牵└咚阈g運算符關系運算符
&&||
賦值運算符低邏輯運算符例如:x<y&&m<n
a==b||c==d
!a&&b>c
等效于(x<y)&&(m<n)等效于(a==b)||(c==d)等效于(!a)&&(b>c)60邏輯表達式邏輯表達式的值是一個邏輯量“真”或“假”。C語言編譯系統在給出邏輯結果時,以數值1代表“真”,以0代表“假”;但是在判斷一個量是否為“真”時,以非0代表“真”,以0代表“假”。例如:
若x=10,則!x的值為
若a=3,b=2,則a&&b的值為
5&&0||8的值為01161邏輯運算符的結合性結合性從左向右例如:
5>3&&4||8<4的結果為
162邏輯運算符的特點特點在邏輯表達式的求解中并不是所有的運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行下一個運算符。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年國家開放大學(電大)《交通運輸管理》期末考試備考試題及答案解析
- 建筑工程項目安全標準作業(yè)程序
- 2025年國家開放大學(電大)《物理學基礎》期末考試備考試題及答案解析
- 2025年國家開放大學《網絡營銷策略與實踐》期末考試備考試題及答案解析
- 2025年國家開放大學(電大)《社會學研究方法》期末考試備考試題及答案解析
- 桶裝水生產質量記錄表標準模板
- 2025年國家開放大學(電大)《人文科學導論》期末考試備考試題及答案解析
- 2025至2030花園烤箱行業(yè)產業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 三年級英語口語課堂教案設計
- 2025年國家開放大學(電大)《數據分析》期末考試備考試題及答案解析
- 法院反詐騙法律知識培訓課件
- 2025年執(zhí)業(yè)藥師考試題庫大全-附答案
- 2024年下半年黑龍江省嫩江鐵路有限責任公司校招筆試題帶答案
- 2025年兩類人員安全考試題及答案
- 偉星PPR培訓課件
- 小學語文高段課標解讀
- 客戶限額管理辦法
- 排污許可證審核及環(huán)境應急管理服務方案投標文件(技術方案)
- 藝術展演活動策劃公司簡介范文
- 2025陜西氫能產業(yè)發(fā)展有限公司所屬單位招聘(101人)筆試參考題庫附帶答案詳解
- 脾破裂的個案護理
評論
0/150
提交評論