閩南師大C語言第3章_第1頁
閩南師大C語言第3章_第2頁
閩南師大C語言第3章_第3頁
閩南師大C語言第3章_第4頁
閩南師大C語言第3章_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

閩南師范大學C語言教學課件講演人:陳穎頻第三章數(shù)據(jù)類型與表達式3.1C語言數(shù)據(jù)類型數(shù)據(jù)類型是程序設計一個很重要的因素類型符號關鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned

int0~65535320~4294967295unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255

不同計算機對各種數(shù)據(jù)所占內存字節(jié)數(shù)有不同規(guī)定,上機時應注意。TurboC3.0的基本數(shù)據(jù)及其存儲類型整形常量重點:補碼存儲難點:n位整形常量變化范圍浮點型常量重難點:浮點數(shù)的計算機存儲形式字符型常量單引號括起來的常量重點:轉義字符(表3-1)字符串常量重點:內存存儲模式易錯點:最后一個字節(jié)存放字符串結束符'\0'符號常量及其定義格式: #define標識符常量符號常量優(yōu)點:程序便于維護;提高程序可讀性3.2節(jié)內容概要3.2常量1.位(bit):是指二進制中的位,它是計算機能

處理的最小單位。2.字節(jié)(byte):是計算機處理的基本單位。計算

機的內存是按字節(jié)進行分配的。一個字

節(jié)有八位二進制數(shù)組成。所以我們在C語

言中數(shù)據(jù)類型都是以字節(jié)為基本單元。

3.補碼:一個正數(shù)的補碼是其本身;一個負數(shù)的

補碼是其絕對值按位取反后加1。計算

機是以補碼的形式存放數(shù)的。

例如:-7的補碼是1111111111111001位相關概念整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0xff整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認為它是longint

型常量n位整型變量的變化范圍(重要考點)n位有符號整型變量變化范圍:n位無符號整型變量變化范圍:正負整數(shù)的內存存儲方式(重要考點)整型變量皆以補碼形式存儲正整數(shù)的補碼就是原碼,負整數(shù)數(shù)的補碼為其絕對值的原碼取反再加1//有符號整型常量越界實驗voidmain(){inta;a=32768printf("%f\n",a);scanf("%f",&a);}//無符號整型常量越界實驗voidmain(){unsignedinta;a=65536printf("%f\n",a);scanf("%f",&a);}運行結果:(屏幕顯示)0運行結果:(屏幕顯示)0實型常量表示形式:小數(shù)形式:(必須有小數(shù)點)如0.123,.123,123.0,0.0,123.指數(shù)形式(重要考點):(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3(表示12.3*10^3),123E2,1.23e4,e-5(錯),1.2E-3.5

(錯)在實型常量后加字母f或F,認為它是float型實數(shù)在機內存儲形式數(shù)符小數(shù)部分指數(shù)符號指數(shù)部分031占的位數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。占的位數(shù)愈多,能表示的數(shù)值范圍愈大。實型常量類型(1)float

(2)double*(3)longdouble

區(qū)別:①每個變量在內存中所占字節(jié)數(shù)

float—4、double—8(重要考點)②所能存放的數(shù)值范圍

float10-38——1038double10-308——10308③有效數(shù)字位數(shù)float—7、double—16float、double型數(shù)據(jù)結構實驗//實驗:實數(shù)有效尾數(shù)實驗voidmain(){doublea;floatb;a=123456.789e5;b=a+20;printf("%f\n",a);printf("%f\n",b);scanf("%f",&a);}大數(shù)加小數(shù)運行結果:12345678900.00000012345678848.000000double有效數(shù)字16

位float有效數(shù)字7位voidmain(){floata;doubleb;a=33333.33333;b=33333.33333333333333;

printf("%f\n%f\n",a,b);}結果:33333.33203133333.333333

a是單精度浮點型,有效位數(shù)七位。整數(shù)已占五位,故小數(shù)二位之后均為無效數(shù)字b是雙精度型,有效位為十六位。但TurboC小數(shù)后最多保留六位,其余部分四舍五入。字符常量定義:用單引號括起來的單個普通字符或轉義字符.

字符常量的值:該字符的ASCII碼值(重要考點)如‘A’——65,‘a’——97,

‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’轉義字符:反斜線后面跟一個字符或一個代碼值表示<轉義字符及其含義:轉義字符含義\n\r\‘\ddd\\\“\xhh轉義字符含義換行(ASCII碼為10)回車單引號3位8進制數(shù)代表的字符反斜線雙引號2位16進制數(shù)代表的字符\a報警響鈴字符數(shù)據(jù)在內存中的存儲形式及使用方法

每個字符變量分配一個字節(jié)的內存空間,因此只能存放一個字符。字符值以ASCII碼的形式存放。如:x的十進制ASCII碼是120

y的十進制ASCII碼是121x:y:

允許對整型變量賦以字符值,或對字符變量賦以整型值。允許把字符變量按整型量輸出,或把整型量按字符量輸出。

整型量為二字節(jié)量,字符量為單字節(jié)量,當整型量按字符型量處理時,只有低八位字節(jié)參與處理。

0111100001111001120的二進制代碼例轉義字符舉例

#include<stdio.h>main(){printf("ab\tcd\n");printf(“12345678\012student\x42\n");}\n\B運行結果:(屏幕顯示)abcd12345678StudentB例:‘A’-------’\101’-------’\x41’--------65練習:轉義字符舉例

#include<stdio.h>main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運行結果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結束標志hello\0例字符串“hello”在內存中aa\0例‘a’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;常量總結一、整型常量:二、實型常量:三、字符常量:四、字符串常量:十進制整數(shù):10八進制整數(shù):012十六制整數(shù):0xa小數(shù)形式:0.123456指數(shù)形式:1.23456e-1ASCII碼十進制:’\n’’A’ASCII碼八進制:’\12’’\101’ASCII碼十六制:’\xa’’\x41’以‘\0’結束。變量的命名重要考點:變量的命名規(guī)則變量的基本數(shù)據(jù)類型重要考點:n位整形變量變化范圍變量的類型定義要點:等價定義變量的初始化要點:哪些變量會自動初始化賦值3.3變量3.3節(jié)內容概要變量、變量名、變量類型、變量值、給變量賦值之間的關系變量——杯變量名——杯子的號碼變量類型——所裝的材料名稱變量值——所裝的東西多少給變量賦值——把某材料倒進杯子水1號杯水2號杯油3號杯若類型不一致、以變量為準inta;a=123.5;則a為123變量的命名變量標識符命名原則可以由字母、數(shù)字、下劃線構成標識符開頭必須是:字母或下劃線,注意數(shù)字不能作為變量開頭不能以系統(tǒng)關鍵字作為變量名區(qū)分大小寫舉例:以下是非法標識符,ye#,x>y,$25,3d,int

課堂練習:《學習指導》P48第一題庫函數(shù)使用方式要點:預處理命令包含頭文件常用數(shù)學函數(shù)要點:exp、pow、rand、srand函數(shù)字符輸入輸出函數(shù)要點:putchar、getchar函數(shù),注意和printf、scanf關系格式化輸入輸出函數(shù)要點:printf、scanf函數(shù)補充:puts函數(shù),gets函數(shù)3.4庫函數(shù)3.4節(jié)內容概要字符輸入出函數(shù)字符輸出函數(shù)putchar原形:intputchar(intc)功能:將想要輸出的字符打印在屏幕上字符輸入函數(shù)getchar原形:intgetchar(void)等同于scanf(“%c”,&ch);功能:從鍵盤讀取一個字符例如:#include<stdio.h>voidmain(){charch;ch=getchar();putchar(ch);}

輸入abcd顯示a格式化輸入函數(shù)printf函數(shù)調用語法:printf(“文字提示+轉義字符+格式控制字符串”,輸出列表)例如:printf(“IntegerNumber=%d”,i)則顯示IntegerNumber=i的十進制值輸出控制格式(重要考點)%d:輸出十進制int型數(shù)據(jù)(%ld表示長整型)%f:float型%c:字符型%s:字符串型%x:十六進制輸出%o:八進制輸出%p:輸出內存地址%ld:長整型%e:標準指數(shù)形式輸出%lf:雙精度double型//例題:輸出結果(05年國考)voidmain(){intx=0210;printf(“%x\n”,x)}運行結果:88逗號不能省略百分號不能省略格式化輸出函數(shù)scanf函數(shù)調用語法:scanf(“格式控制字符串”,&變量1,…,&變量N)例如:scanf(“%d%d”,&i,&j)輸入兩個整型數(shù)作為i和j的值輸入控制格式%d:輸出int型數(shù)據(jù)(%ld表示長整型)%f:float型%lf:double型%c:字符型%s:字符串型格式化輸出函數(shù)scanf函數(shù)的三個常見問題輸入地址列表問題,&地址符號不能漏,否則會發(fā)生意想不到的情況例如:scanf(“%d”,i)用%c輸入字符時,空格符、轉義字符都會作為有效字符輸入標準輸入流的殘留字符問題scanf函數(shù)注意點之二:%c輸入字符輸入的問題易錯:%c輸入字符#include<stdio.h>voidmain(){charc1,c2,c3,c4;scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);printf(“c1=%c,c2=%c”,c3=%c,c4=%c);}

輸入a

輸入bcd(字符間有空格)運行結果:(屏幕顯示)c1=a,c2=,c3=b,c4=易錯:標準輸入的殘留字符#include<stdio.h>#include<stdlib.h>voidmain(){inti=0;charc=0;scanf("%d",&i);scanf("%c",&c);printf("i=%d,c=%d",i,c);scanf("%d",&c);clrscr();}運行結果:(屏幕顯示)i=100,c=48‘0’的字符的ASCII碼就是48

輸入100然后Enter

輸入0,然后Enterscanf函數(shù)注意點之三:標準輸入流的殘留字符解決殘留字符方案一:在第二個scanf格式控制符前加一個空格#include<stdio.h>#include<stdlib.h>voidmain(){inti=0;charc=0;scanf("%d",&i);scanf("%c",&c);printf("i=%d,c=%d",i,c);scanf("%d",&c);clrscr();}運行結果:(屏幕顯示)i=100,c=48‘0’的字符的ASCII碼就是48

輸入100然后Enter

輸入0,然后Enter解決殘留字符方案一:在第二個scanf格式控制符前加一個空格#include<stdio.h>#include<stdlib.h>voidmain(){inti=0;charc=0;scanf("%d",&i);fflush(stdin);printf("i=%d,c=%d",i,c);scanf("%d",&c);clrscr();}運行結果:(屏幕顯示)i=100,c=48‘0’的字符的ASCII碼就是48

輸入100然后Enter

輸入0,然后EnterC運算符的種類、優(yōu)先級、結合性算術運算符和算術表達式賦值運算符和賦值表達式增量運算符和增量表達式關系運算符和關系表達式邏輯運算符和邏輯表達式條件運算符和條件表達式逗號運算符和逗號表達式位運算符求字節(jié)數(shù)運算符3.5運算符和表達式3.5節(jié)內容概要

(1)算術運算符:用于各類數(shù)值運算:加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)(重要考點)共七種。(2)關系運算符:用于比較運算:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。(3)邏輯運算符:用于邏輯運算:與(&&)、或(||)、非(!)三種。C語言的運算符種類(4)位操作運算符:參與運算的量,按二進制位進行運算:位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。(5)賦值運算符:用于賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。(6)條件運算符:這是一個三目運算符,用于條件求值(?:)。(7)逗號運算符:用于把若干表達式組合成一個表達式(,)。(8)指針運算符:用于取內容(*)和取地址(&)二種運算。(9)成員運算符:如.,->,用于訪問成員(10)自增1,自減1運算符:++,--(11)強制類型運算符:(類型)(12)下標運算符:[](13)求字節(jié)運算符:sizeof()(14)負號運算符:-(15)括號運算符:()初等運算符單目運算符算術運算符關系運算符邏輯運算符(不包括非運算!)賦值運算符逗號運算符邏輯非!低高運算符的優(yōu)先級l運算符的優(yōu)先級:P42,優(yōu)先級較高的先于優(yōu)先級較低的。一個運算量兩側的運算符優(yōu)先級相同時,則按運算符的結合性所規(guī)定的結合方向處理。l運算符的結合性:分為左結合性(自左至右)和右結合性(自右至左)。

x-y+z(左結合性):

x=y=z(右結合性):與“-”號結合執(zhí)行x-y執(zhí)行+z執(zhí)行y=z執(zhí)行x=(y=z)各類型數(shù)值數(shù)據(jù)的混合運算intchar,shortdoublelongunsignedfloat低高例:設已定義floata=14.7;longc=5;計算13/5*a+(’a’+’b’)/c的步驟及轉換類型13/5*a+(’a’+’b’)/c12int2.0double14.7double229.4double97

int98

int3195int195long5long439long39double568.4double賦值運算符和賦值表達式簡單賦值語法格式變量名=表達式區(qū)分等于:變量名1==變量名2復合賦值運算重要考點:賦值運算符結合性是從右往左例題:求a+=a-=b+3的等價表達強制類型轉換格式:(數(shù)據(jù)類型)數(shù)據(jù)變量,例如:(double)i易錯點:把浮點型變量四舍五入注意:浮點型轉換為整型,直接將小數(shù)部分舍略注意:在定義中不允許連續(xù)賦值inta=b=c=5是不合法的而inta,b,c;a=b=c=5則是合法的課堂練習:《學習指導》P49第6題增量運算符前綴運算先使得運算對象的值增1,然后使用運算對象后綴運算先使用運算對象,然后再使得對象值增1使用要點++和--運算符只能用于變量,不能用于常量或表達式++和--運算符的結合方向是“先右后左”不要在一個表達式中多次使用用++和--運算符i+++j的解讀,采取最大化結合原則簡單原則關系運算符和關系表達式優(yōu)先級別:低于算術運算符,高于邏輯運算符、賦值運算符關系運算符都是雙目運算符,是左結合性關系表達式的值是一個邏輯值,只有0、1兩種結果判斷兩個浮點數(shù)是否相等時,由于計算機存儲有誤差,同樣可能出現(xiàn)錯誤結果邏輯運算符C語言有三個邏輯運算符&&(邏輯與)||(邏輯或)!(邏輯非)邏輯運算符的優(yōu)先級!高于&&,&&高于||邏輯表達式的“不完全計算法”&&左端如果為假,表達式直接取0||左端為真,則不在計算另一端,表達式直接取1例題:3.12條件運算符、位運算符、sizeof運算符,逗號運算符條件運算符?:三目運算符格式:<表達式1>?<表達式2>:<表達式3>位運算符按位取反:~左移:<<右移:>>,格式:>>+移動的位數(shù)

按位與:&按位或:|按位異或:^位運算賦值運算符,格式:>>=移動的位數(shù)sizeof運算符,格式:sizeof(變量、數(shù)據(jù)類型、表達式)逗號表達式取最后一個變量的值為最終值作業(yè)《學習指導》P48基礎練習3.1、3.2、3.3、3.5、3.6、3.7課堂練習1、語句x=(y=3,b=++y),運行后x,y,b的值是多少?4442、inti=3,求k=(i--)+(i--)63、定義x=3,y=4,z=5,求:!((x<y)&&!z||1)04、《指導》P17選擇第18題5、x=2,y=5,求(x=2,y=5,x*2,y++,x+y)6、《指導》選擇第11題、28題7、已知doublea=5.2,則語句a+=a-=(a=4)*(a=3)的值是多少?-18.0第三章數(shù)據(jù)類型與表達式習題課//1、求輸出結果(05年國考)voidmain(){chara,b;a=‘A’+’5’-’3’;b=a+’6’-’2’;printf(“%d%c”,a,b)}運行結果:(屏幕顯示)67G//2、求輸出結果(05年國考)voidmain(){chara=‘1’,b=‘2’;printf(“%c,”,b++);printf(“%d\n”,b-a);}運行結果:(屏幕顯示)2,2/*3、程序填空題(04年國考)要求輸出格式為:n1=10,n2=20*/voidmain(){intn1=10,n2=20;printf(“”,n1,n2);}答案:n1=%d,n2=%d/*4、程序填空題(變式題)要求輸出格式為:n1=10n2=20*/voidmain(){intn1=10,n2=20;printf(“”,n1,n2);}答案:n1=%d\n,n2=%d\n5、定義語句:intb;charc[10];則正確的輸入語句是?(05國考)Ascanf(“%d%s”,&b,&c)Bscanf(“%d%s”,&b,c)6、定義語句:intb;charc;則正確的輸入語句是?(變式題)Ascanf(“%d%s”,&b,&c)Bscanf(“%d%s”,&b,c)答案:B數(shù)組名可作為地址答案:A地址列表必須是地址變量7、下列運算符中,優(yōu)先級最低的是()A||B!=C<=D+答案:A初等>單目>算術>關系>邏輯(不含!)>條件運算符>賦值>逗號8、a=-2L,printf(“%d\n”,a);求a-29、long型在TurboC編譯器中默認占幾個字節(jié)?占幾位?4字節(jié),32位10、short型在TurboC編譯器中默認占幾個字節(jié)?占幾位?2字節(jié),16位11

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論