C語言第二章數(shù)據(jù)的存儲與運算課件_第1頁
C語言第二章數(shù)據(jù)的存儲與運算課件_第2頁
C語言第二章數(shù)據(jù)的存儲與運算課件_第3頁
C語言第二章數(shù)據(jù)的存儲與運算課件_第4頁
C語言第二章數(shù)據(jù)的存儲與運算課件_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、什么是程序?2、人怎么和計算機溝通?為什么要和計算機溝通?3、簡單的C語言程序由哪些部分構(gòu)成?4、什么是C語言的函數(shù)?5、C程序的編譯和運行過程?6、C語言常用的注釋方式有哪些?課程回顧11、什么是程序?課程回顧1第二章數(shù)據(jù)的存儲與運算第二章數(shù)據(jù)的存儲與運算目標熟悉C語言中常用的數(shù)據(jù)類型理解變量和常量的含義,了解符號常量掌握各種基本數(shù)據(jù)類型相關(guān)內(nèi)容:變量的聲明和初始化,存儲特點,其他特點使用算術(shù)運算符理解類型轉(zhuǎn)換3目標熟悉C語言中常用的數(shù)據(jù)類型3數(shù)據(jù)在計算機中的存儲計算機程序處理的是什么?計算機處理的數(shù)據(jù)有哪些?(數(shù)值,字符,圖片,音頻,視頻)數(shù)據(jù)在計算機中怎么存儲的?(以二進制形式存儲)關(guān)于幾個數(shù)據(jù)存儲的概念—位,字節(jié)和地址位(bit),又稱比特,存儲信息的最小單位。值為0或1字節(jié)(byte),又稱拜特,存儲器容量大,直接用bit來表示和管理不方便,1byte=8bit,byte是最常用的存儲單位,常用來表示一個存儲單元。后來又出現(xiàn)了kb,mb,gb,tb等(以1024/1000倍增)。地址,存儲器包含許多存儲單元,使用的時候通過地址進行查找,這里的地址是指存儲單元在存儲器里的編號數(shù)據(jù)4數(shù)據(jù)在計算機中的存儲計算機程序處理的是什么?數(shù)據(jù)4基本數(shù)據(jù)類型數(shù)據(jù)屬于不同類別AfricaThequickbrownfoxTRUE數(shù)據(jù)

非數(shù)值數(shù)值整型非整型9002.129999/12/20032.175123JackieChanchar數(shù)據(jù)類型非數(shù)值數(shù)值整型intshortintlongintdoublefloat非整型5基本數(shù)據(jù)類型數(shù)據(jù)屬于不同類別AfricaThequick數(shù)據(jù)的表現(xiàn)方式

常量和變量常量是指在程序運行過程中,其值不能被改變的量例如16,18.789都屬于常量,不會改變變量是指在程序運行過程中其值可以改變的量6數(shù)據(jù)的表現(xiàn)方式

常量和變量6變量程序內(nèi)存編寫程序時,常常需要將數(shù)據(jù)存儲在內(nèi)存中,方便后面使用這個數(shù)據(jù)或者修改這個數(shù)據(jù)的值。通常使用變量來存儲數(shù)據(jù)。使用變量可以引用存儲在內(nèi)存中的數(shù)據(jù),并隨時根據(jù)需要顯示數(shù)據(jù)或執(zhí)行數(shù)據(jù)操縱。存儲aa*5%將值存儲為ba–b100.5將值存儲為Result9.57變量程序內(nèi)存編寫程序時,常常需要將數(shù)據(jù)存儲在內(nèi)存中,方便后面變量引入的意義為什么要引入變量?程序中很多數(shù)據(jù)是在程序運行過程中通過運算獲得的通用功能函數(shù)的需要。如求兩個數(shù)中最大者max很多數(shù)據(jù)在程序運行過程中不斷變化變量相當于一個賓館,為程序中使用的數(shù)據(jù)提供臨時的存儲單元(房間),需要用的時候就進行賦值(checkin),不用的時候就釋放空間(checkout)8變量引入的意義為什么要引入變量?8聲明和使用變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),也就是變量的值,在程序運行期間,這些值是可以改變的。變量必須先定義后使用。聲明變量:Datatypevariablename;定義時初始化變量:Datatypevariablename=value;定義后初始化變量:variablename=value;類型名:系統(tǒng)提供的標準數(shù)據(jù)類型的名稱或者自定義的數(shù)據(jù)類型的名稱(如整型在計算機里用(int)變量名:代表計算機內(nèi)存中一個變量地址(隱含);通過變量名可以找到相應(yīng)的存儲單元,進行按名存取。變量值:變量名代表的存儲單元中存儲的數(shù)據(jù)例如:聲明一個整型變量a,并為其賦值為5inta=5;9聲明和使用變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用變量命名在C語言中,變量命名需要遵循一定的規(guī)則變量的命名規(guī)則:變量名可以由字母、數(shù)字和_(下劃線)組合而成變量名不能包含除_以外的任何特殊字符,如:%、#、逗號、空格等變量名必須以字母或_(下劃線)開頭變量名不能包含空白字符(換行符、空格和制表符稱為空白字符)C語言中的某些詞(例如int和float等)稱為保留字,具有特殊意義,不能用作變量名C語言區(qū)分大小寫,因此變量price與變量PRICE是兩個不同的變量變量名的長度不是無限的。不同的編譯系統(tǒng)有自己的規(guī)定變量名盡可能簡單易記,見名之意;即選有含意的英文單詞(或其縮寫)作變量名。10變量命名在C語言中,變量命名需要遵循一定的規(guī)則變量的命名有效名稱principalcost_pricemarks_3lastnamecity無效名稱123ratecurrency$discount%zipcode變量命名11有效名稱principalcost_pricemarks_3整型數(shù)據(jù)--分類名稱全稱類型說明符縮寫類型說明符整型intint無符號整型unsignedintunsigned短整型shortintshort無符號短整型unsignedshortintunsignedshort長整型longintlong無符號長整型unsignedlongintunsignedlong整型常量即整常數(shù)。12整型數(shù)據(jù)--分類名稱全稱類型說明符縮寫類型說明符整型整型數(shù)據(jù)--存儲Int型:根據(jù)編譯器不同占用的存儲單元數(shù)量有所不同,VC用4個字節(jié)表示一個int型整數(shù)例如整數(shù)10,存儲在計算機中就是00001010負數(shù)怎么存儲?最高位是符號位,1表示負,0為正;采用補碼方式存儲。原碼取反加14個字節(jié)中未使用的高位怎么辦?用0補齊Shortint:一般占2個字節(jié)Longint:一般占4個字節(jié),在vc環(huán)境下longint和int通用,有些早期的編譯器里int占2個字節(jié),longint占4個字節(jié)。13整型數(shù)據(jù)--存儲Int型:根據(jù)編譯器不同占用的存儲單整型數(shù)據(jù)--使用整型變量聲明:intpage_number;longintpopulation;unsignedintage;可按如下方式初始化:page_number=0;intmax_marks=100;在同一語句中可以聲明多個類型相同的變量:intpage_number,copies,paper_width;14整型數(shù)據(jù)--使用整型變量聲明:在同一語句中可以聲明多整型數(shù)據(jù)--實例整型數(shù)據(jù)運算程序的舉例和分析例2.1雞兔同籠,雞和兔的頭總數(shù)是16,腳總數(shù)是40,計算雞和兔各有多少只?X+y=h2x+4y=fY=(f-2h)/2X=h–y#include<stdio.h>Voidmain(){inth,f,x,y;//聲明整型變量h=16;f=40;//對整型變量進行賦值y=(f-2*h)/2;//使用變量計算,結(jié)果賦給yx=h-y;//將h-y的結(jié)果賦給xprintf(“%d,%d\n”,x,y);//輸出變量

}15整型數(shù)據(jù)--實例整型數(shù)據(jù)運算程序的舉例和分析X+y整型數(shù)據(jù)--實例用計算機解題,必須由人們事先分析題目要求,找出解決問題的思路和具體步驟,然后指定計算機一步步去做。計算機完全是根據(jù)人們事先規(guī)定的指令進行工作的。程序是告訴計算機要做什么,先做什么,后做什么。計算機不是萬能的,不存在把方程式輸入給計算機,計算機就會自動解出方程,得出結(jié)果的事情。16整型數(shù)據(jù)--實例用計算機解題,必須由人們事先分析題目類型位數(shù)數(shù)的范圍有效數(shù)字float3210-38~10387位double型6410-308~1030816位longdouble12810-4932~10493218~19位實型數(shù)據(jù)--分類實型數(shù)據(jù)在計算機語言中常稱為浮點數(shù)。1)浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。17類型位數(shù)數(shù)的范圍實型數(shù)據(jù)--存儲實數(shù):采用指數(shù)形式存儲,通常占4個字節(jié),計算機將實數(shù)分為前后兩部分存儲,前面是數(shù)值(前3個字節(jié)),后面是指數(shù)(后1個字節(jié))。例如123.456表示為0.123456×103,則在計算機中存儲為Float型在vc下占4個字節(jié)Double型在vc下占8個字節(jié)Longdouble在vc下占8個字節(jié)各種數(shù)據(jù)類型所占長度與編譯器有關(guān),可以使用sizeof(longdouble)查看+.123456+318實型數(shù)據(jù)--存儲實數(shù):采用指數(shù)形式存儲,通常占4個字實型數(shù)據(jù)--使用

單精度浮點型float在C語言中用于存儲單精度浮點數(shù)float32位10-38~10387位有效數(shù)字聲明:floatselling_price;初始化:floatselling_price=11.3;selling_price=65.90;19實型數(shù)據(jù)--使用

單精度浮點型float在C實型數(shù)據(jù)--使用

雙精度浮點型內(nèi)存floatdouble213.5671435568967

64位10-308~1030816

位有效數(shù)字聲明:doublepressure_level;初始化:pressure_level=213.5671435568967;doubledvalue=35.4;20實型數(shù)據(jù)--使用

雙精度浮點型內(nèi)存floatdoub浮點型數(shù)據(jù)的舍入誤差:由于浮點型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差

例2.4浮點型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{

floata,b;

a=123456.789e5;

b=a+20;

printf(“%f\n”,b);

}

實型數(shù)據(jù)--實例說明:一個浮點型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應(yīng)當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)運行結(jié)果:

123456.789e521浮點型數(shù)據(jù)的舍入誤差:由于浮點型變量是由浮點型數(shù)據(jù)--常量實型常量的表示形式兩種表示形式十進制小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。22浮點型數(shù)據(jù)--常量實型常量的表示形式兩種表十進制小數(shù)浮點型數(shù)據(jù)--常量實型常量的類型

C編譯系統(tǒng)將實型常量作為雙精度來處理。

例如:f=2.45678*4523.65

系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進行相乘的運算,得到的乘也是一個雙精度數(shù)。

如果把一個實型常量賦給一個單精度變量f系統(tǒng)給出警告,警告不影響連接和運行最后結(jié)果.但只取其結(jié)果前7位賦給浮點型變量f。

如是在數(shù)的后面加字母f或F(如1.65f,654.87F),編譯系統(tǒng)就會把它們按單精度處理。23浮點型數(shù)據(jù)--常量實型常量的類型23在線保險單年齡:_____保險總額:_____性別:_____字符型數(shù)據(jù)2398340'M'數(shù)值型字符型int/floatchar24在線保險單字符型數(shù)據(jù)2398340'M'數(shù)值型字符型in字符型數(shù)據(jù)--存儲字符:計算機并不是將字符本身存放到存儲單元中(只能放二進制代碼),而是將字符的代碼存儲到存儲單元中,即存儲的是字符的ASCII碼;每個英文字母采用一個字節(jié)存儲未使用的高位用0補足例如‘A’的ASCII碼是65,計算機存儲就是01000001;ASCII碼不用死記,轉(zhuǎn)換工作由編譯系統(tǒng)自動完成,用戶程序里輸入的依然是正常使用的字符‘A’整數(shù)65和字符‘A’在計算機里的表示是一樣的,那怎么區(qū)分呢?兩者有沒有關(guān)系呢?25字符型數(shù)據(jù)--存儲字符:計算機并不是將字符本身存放到字符數(shù)據(jù)與整形數(shù)據(jù)字符數(shù)據(jù)和整型數(shù)據(jù)的區(qū)別和聯(lián)系占用的存儲空間大小不同字符變量存儲采用整數(shù)表示的ASCII字符型數(shù)據(jù)既可采用字符形式輸出(%c),也可采用整數(shù)形式輸出(%d)可以通過整數(shù)為一個字符型數(shù)據(jù)賦值可以對字符型數(shù)據(jù)當做整型數(shù)據(jù)進行算數(shù)運算程序設(shè)計中不能使用字符變量代替整型變量使用26字符數(shù)據(jù)與整形數(shù)據(jù)字符數(shù)據(jù)和整型數(shù)據(jù)的區(qū)別和聯(lián)系26字符型數(shù)據(jù)--存儲'''5''p''$'

有效的字符型值"2"

'2'

正確'2'+'2'=4

X值符號值符號值符號0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9

95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL(Delete鍵)43+65~90A~Z

27字符型數(shù)據(jù)--存儲''有效的字符型值"2"'2字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法一個字符型數(shù)據(jù)存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:

一個字符數(shù)據(jù)既可以以字符形式輸,也可以以整數(shù)形式輸出以字符形式輸出時,系統(tǒng)先將存儲單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,然后輸出。以整數(shù)形式輸出時,直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進行算術(shù)運算,此時相當于對它們的ASCII碼進行算術(shù)運算。

字符型數(shù)據(jù)--存儲28字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法注意:字符型數(shù)據(jù)字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個字符變量在內(nèi)存中占一個字節(jié)。

字符型數(shù)據(jù)--使用29字符型變量用來存放字符常量,注意只能放一個字符。字符型數(shù)據(jù)例2.5向字符變量賦予整數(shù)。

#include<stdio.h>

voidmain()

{charc1,c2;

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

說明:在第4和第5行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句: c1=′a′;c2=′b′;因為’a’和’b’的ASCII碼為97和98運行結(jié)果:ab9798字符型數(shù)據(jù)--實例30例2.5向字符變量賦予整數(shù)。

#include<std例2.6大小寫字母的轉(zhuǎn)換(注意分析方法)

#include<stdio.h>

voidmain()

{

charc1,c2;

c1=’a’;

c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2);

}說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。

運行結(jié)果:AB

字符型數(shù)據(jù)--實例31例2.6大小寫字母的轉(zhuǎn)換(注意分析方法)

#inclu字符型數(shù)據(jù)--字符常量字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”32字符型數(shù)據(jù)--字符常量字符常量例‘a(chǎn)’,’A’,‘

有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符含義ASCII代碼\n換行,將當前位置移到下一行開頭10\t水平制表(跳到下一個Tab位置)9\b退格,將當前位置移到前一列8\r回車,將當前位置移到本行開頭13\f換頁,將當前位置移到下頁開頭12\a發(fā)出鈴聲7\\代表一個反斜杠字符“\”92\′代表一個單撇號字符39\″代表一個雙撇號字符34\ddd1到3位八進制數(shù)所代表的字符\xhh1到2位十六進制數(shù)所代表的字符轉(zhuǎn)義字符33有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符字符串常量C語言除了允許使用字符常量外,還允許使用字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);字符型數(shù)據(jù)--字符串常量34字符串常量字符型數(shù)據(jù)--字符串常量34‘a’是字符常量,“a”是字符串常量,二者不同。如:假設(shè)C被指定為字符變量

:charcc=‘a(chǎn)’;c=“a”

;c=“CHINA”;

結(jié)論:不能把一個字符串常量賦給一個字符變量。字符型數(shù)據(jù)--字符串常量35‘a’是字符常量,“a”是字符串常量,二者不同。c=C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標志。

如:如果有一個字符串常量”CHINA”,實際上在內(nèi)存中是:CHINA\0

它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。6772378650字符型數(shù)據(jù)--字符串常量36C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符如:如果有一符號常量例2.7一直園的半徑為r,求周長c,面積s,體積v

#include<stdio.h>Voidmain(){doubler=3.67,c,s,v; c=2*3.1415926*r; s=3.1415926*r*r; v=4/3*3.1415926*r*r*r;}4.0/3.0;pow(r,3)#include<math.h>#definePI3.1415926c=2*PI*r;s=PI*pow(r,2);37符號常量例2.7一直園的半徑為r,求周長c,面積s,體積v符號常量相關(guān)說明使用符號常量的好處含義清楚,容易讀寫;改變的時候能夠做到“一改全改”;降低程序中輸入錯誤的幾率符號常量的使用方法先對程序做“預(yù)編譯”。即將程序中所有的符號常量用真正的常量進行替換(也會用include的庫文件內(nèi)容代替include語句)。進行正式編譯。符號常量不占存儲單元,只是一個符號符號常量不是變量,只是符號,不能被賦值38符號常量相關(guān)說明使用符號常量的好處381.C語言的運算符有以下幾類:⑴算術(shù)運算符(+-*/%)⑵關(guān)系運算符(><==>=<=?。剑沁壿嬤\算符(?。Γ|)⑷位運算符(<<>>~|∧&)⑸賦值運算符(=及其擴展賦值運算符)⑹條件運算符(?:)⑺逗號運算符(,)算術(shù)運算符和算術(shù)表達式391.C語言的運算符有以下幾類:算術(shù)運算符和算術(shù)表達式39(8)指針運算符(*和&)(9)求字節(jié)數(shù)運算符(sizeof)(10)強制類型轉(zhuǎn)換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數(shù)調(diào)用運算符())算術(shù)運算符和算術(shù)表達式40(8)指針運算符(*和&)算術(shù)運算符和算術(shù)表達式402.C語言的表達式有以下幾類:(1)算術(shù)表達式:如2+6.7*3.5+sin(0.5)(2)關(guān)系表達式:如x>0,y<z+6(3)邏輯表達式:x>0&&y>0(表示x>0與y>0同時成立,&&是邏輯運算符,代表“與”)(4)賦值表達式:如a=5.6算術(shù)運算符和算術(shù)表達式412.C語言的表達式有以下幾類:算術(shù)運算符和算術(shù)表達式41.基本的算術(shù)運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。兩個整數(shù)相除的結(jié)果為整數(shù)兩個整數(shù)相除的結(jié)果為整數(shù),如:5/3結(jié)果為1)%(模運算符,或稱求余運算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。算術(shù)運算符和算術(shù)表達式421.基本的算術(shù)運算符:算術(shù)運算符和算術(shù)表達式422.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性

用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。

例如:a*b/c-1.5+′a′是一個合法的表達式算術(shù)運算符和算術(shù)表達式432.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性算術(shù)運算符和算術(shù)表達C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。C規(guī)定了各種運算符的結(jié)合方向(結(jié)合性)算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右。算術(shù)運算符和算術(shù)表達式44C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。算術(shù)運算符和算術(shù)表達式44.

自增、自減運算符

作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)

算術(shù)運算符和算術(shù)表達式454.自增、自減運算符算術(shù)運算符和算術(shù)表達式45i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;i的值先變成4,再賦給j,j的值為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋此阈g(shù)運算符和算術(shù)表達式46i++與++i的區(qū)別:算術(shù)運算符和算術(shù)表達式46注意:

(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式,(2)++和--的結(jié)合方向是“自右至左”。(3)自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址。(4)使用++和--時,為避免二義性,最好采取大家都能理解的寫法,可以加一些“不必要”的括號,如(i++)+j。算術(shù)運算符和算術(shù)表達式47注意:算術(shù)運算符和算術(shù)表達式47混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算.說明:這種類型轉(zhuǎn)換是由系統(tǒng)自動進行的。轉(zhuǎn)換規(guī)則為字節(jié)少的數(shù)據(jù)轉(zhuǎn)換為字節(jié)多的數(shù)據(jù)各類數(shù)值型數(shù)據(jù)間的混合運算

48混合運算:整型(包括int,short,long)、浮點型(類型轉(zhuǎn)換自動類型轉(zhuǎn)換原則:把表示范圍小的類型的值轉(zhuǎn)換到表示范圍大的類型的值

shortintlong

floatdouble強制類型轉(zhuǎn)換語法:(類型名)變量或數(shù)值例如:

inta=5,b=3;

floatqu=float(a)/b;在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化49類型轉(zhuǎn)換自動類型轉(zhuǎn)換49例2.8強制類型轉(zhuǎn)換。

#include<stdio.h>

voidmain()

{

floatx;

inti;

x=3.6;

i=(int)x;

printf("x=%f,i=%d\n",x,i);

}

說明:有兩種類型轉(zhuǎn)換,一種是在運算時不必用戶指定,系統(tǒng)自動進行的類型轉(zhuǎn)換,如3+6.5。第二種是強制類型轉(zhuǎn)換。當自動類型轉(zhuǎn)換不能實現(xiàn)目的時,可以用強制類型轉(zhuǎn)換。運行結(jié)果:

x=3.600000,i=3強制類型轉(zhuǎn)換50例2.8強制類型轉(zhuǎn)換。

#include<stdio1、什么是程序?2、人怎么和計算機溝通?為什么要和計算機溝通?3、簡單的C語言程序由哪些部分構(gòu)成?4、什么是C語言的函數(shù)?5、C程序的編譯和運行過程?6、C語言常用的注釋方式有哪些?課程回顧511、什么是程序?課程回顧1第二章數(shù)據(jù)的存儲與運算第二章數(shù)據(jù)的存儲與運算目標熟悉C語言中常用的數(shù)據(jù)類型理解變量和常量的含義,了解符號常量掌握各種基本數(shù)據(jù)類型相關(guān)內(nèi)容:變量的聲明和初始化,存儲特點,其他特點使用算術(shù)運算符理解類型轉(zhuǎn)換53目標熟悉C語言中常用的數(shù)據(jù)類型3數(shù)據(jù)在計算機中的存儲計算機程序處理的是什么?計算機處理的數(shù)據(jù)有哪些?(數(shù)值,字符,圖片,音頻,視頻)數(shù)據(jù)在計算機中怎么存儲的?(以二進制形式存儲)關(guān)于幾個數(shù)據(jù)存儲的概念—位,字節(jié)和地址位(bit),又稱比特,存儲信息的最小單位。值為0或1字節(jié)(byte),又稱拜特,存儲器容量大,直接用bit來表示和管理不方便,1byte=8bit,byte是最常用的存儲單位,常用來表示一個存儲單元。后來又出現(xiàn)了kb,mb,gb,tb等(以1024/1000倍增)。地址,存儲器包含許多存儲單元,使用的時候通過地址進行查找,這里的地址是指存儲單元在存儲器里的編號數(shù)據(jù)54數(shù)據(jù)在計算機中的存儲計算機程序處理的是什么?數(shù)據(jù)4基本數(shù)據(jù)類型數(shù)據(jù)屬于不同類別AfricaThequickbrownfoxTRUE數(shù)據(jù)

非數(shù)值數(shù)值整型非整型9002.129999/12/20032.175123JackieChanchar數(shù)據(jù)類型非數(shù)值數(shù)值整型intshortintlongintdoublefloat非整型55基本數(shù)據(jù)類型數(shù)據(jù)屬于不同類別AfricaThequick數(shù)據(jù)的表現(xiàn)方式

常量和變量常量是指在程序運行過程中,其值不能被改變的量例如16,18.789都屬于常量,不會改變變量是指在程序運行過程中其值可以改變的量56數(shù)據(jù)的表現(xiàn)方式

常量和變量6變量程序內(nèi)存編寫程序時,常常需要將數(shù)據(jù)存儲在內(nèi)存中,方便后面使用這個數(shù)據(jù)或者修改這個數(shù)據(jù)的值。通常使用變量來存儲數(shù)據(jù)。使用變量可以引用存儲在內(nèi)存中的數(shù)據(jù),并隨時根據(jù)需要顯示數(shù)據(jù)或執(zhí)行數(shù)據(jù)操縱。存儲aa*5%將值存儲為ba–b100.5將值存儲為Result9.557變量程序內(nèi)存編寫程序時,常常需要將數(shù)據(jù)存儲在內(nèi)存中,方便后面變量引入的意義為什么要引入變量?程序中很多數(shù)據(jù)是在程序運行過程中通過運算獲得的通用功能函數(shù)的需要。如求兩個數(shù)中最大者max很多數(shù)據(jù)在程序運行過程中不斷變化變量相當于一個賓館,為程序中使用的數(shù)據(jù)提供臨時的存儲單元(房間),需要用的時候就進行賦值(checkin),不用的時候就釋放空間(checkout)58變量引入的意義為什么要引入變量?8聲明和使用變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),也就是變量的值,在程序運行期間,這些值是可以改變的。變量必須先定義后使用。聲明變量:Datatypevariablename;定義時初始化變量:Datatypevariablename=value;定義后初始化變量:variablename=value;類型名:系統(tǒng)提供的標準數(shù)據(jù)類型的名稱或者自定義的數(shù)據(jù)類型的名稱(如整型在計算機里用(int)變量名:代表計算機內(nèi)存中一個變量地址(隱含);通過變量名可以找到相應(yīng)的存儲單元,進行按名存取。變量值:變量名代表的存儲單元中存儲的數(shù)據(jù)例如:聲明一個整型變量a,并為其賦值為5inta=5;59聲明和使用變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用變量命名在C語言中,變量命名需要遵循一定的規(guī)則變量的命名規(guī)則:變量名可以由字母、數(shù)字和_(下劃線)組合而成變量名不能包含除_以外的任何特殊字符,如:%、#、逗號、空格等變量名必須以字母或_(下劃線)開頭變量名不能包含空白字符(換行符、空格和制表符稱為空白字符)C語言中的某些詞(例如int和float等)稱為保留字,具有特殊意義,不能用作變量名C語言區(qū)分大小寫,因此變量price與變量PRICE是兩個不同的變量變量名的長度不是無限的。不同的編譯系統(tǒng)有自己的規(guī)定變量名盡可能簡單易記,見名之意;即選有含意的英文單詞(或其縮寫)作變量名。60變量命名在C語言中,變量命名需要遵循一定的規(guī)則變量的命名有效名稱principalcost_pricemarks_3lastnamecity無效名稱123ratecurrency$discount%zipcode變量命名61有效名稱principalcost_pricemarks_3整型數(shù)據(jù)--分類名稱全稱類型說明符縮寫類型說明符整型intint無符號整型unsignedintunsigned短整型shortintshort無符號短整型unsignedshortintunsignedshort長整型longintlong無符號長整型unsignedlongintunsignedlong整型常量即整常數(shù)。62整型數(shù)據(jù)--分類名稱全稱類型說明符縮寫類型說明符整型整型數(shù)據(jù)--存儲Int型:根據(jù)編譯器不同占用的存儲單元數(shù)量有所不同,VC用4個字節(jié)表示一個int型整數(shù)例如整數(shù)10,存儲在計算機中就是00001010負數(shù)怎么存儲?最高位是符號位,1表示負,0為正;采用補碼方式存儲。原碼取反加14個字節(jié)中未使用的高位怎么辦?用0補齊Shortint:一般占2個字節(jié)Longint:一般占4個字節(jié),在vc環(huán)境下longint和int通用,有些早期的編譯器里int占2個字節(jié),longint占4個字節(jié)。63整型數(shù)據(jù)--存儲Int型:根據(jù)編譯器不同占用的存儲單整型數(shù)據(jù)--使用整型變量聲明:intpage_number;longintpopulation;unsignedintage;可按如下方式初始化:page_number=0;intmax_marks=100;在同一語句中可以聲明多個類型相同的變量:intpage_number,copies,paper_width;64整型數(shù)據(jù)--使用整型變量聲明:在同一語句中可以聲明多整型數(shù)據(jù)--實例整型數(shù)據(jù)運算程序的舉例和分析例2.1雞兔同籠,雞和兔的頭總數(shù)是16,腳總數(shù)是40,計算雞和兔各有多少只?X+y=h2x+4y=fY=(f-2h)/2X=h–y#include<stdio.h>Voidmain(){inth,f,x,y;//聲明整型變量h=16;f=40;//對整型變量進行賦值y=(f-2*h)/2;//使用變量計算,結(jié)果賦給yx=h-y;//將h-y的結(jié)果賦給xprintf(“%d,%d\n”,x,y);//輸出變量

}65整型數(shù)據(jù)--實例整型數(shù)據(jù)運算程序的舉例和分析X+y整型數(shù)據(jù)--實例用計算機解題,必須由人們事先分析題目要求,找出解決問題的思路和具體步驟,然后指定計算機一步步去做。計算機完全是根據(jù)人們事先規(guī)定的指令進行工作的。程序是告訴計算機要做什么,先做什么,后做什么。計算機不是萬能的,不存在把方程式輸入給計算機,計算機就會自動解出方程,得出結(jié)果的事情。66整型數(shù)據(jù)--實例用計算機解題,必須由人們事先分析題目類型位數(shù)數(shù)的范圍有效數(shù)字float3210-38~10387位double型6410-308~1030816位longdouble12810-4932~10493218~19位實型數(shù)據(jù)--分類實型數(shù)據(jù)在計算機語言中常稱為浮點數(shù)。1)浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。67類型位數(shù)數(shù)的范圍實型數(shù)據(jù)--存儲實數(shù):采用指數(shù)形式存儲,通常占4個字節(jié),計算機將實數(shù)分為前后兩部分存儲,前面是數(shù)值(前3個字節(jié)),后面是指數(shù)(后1個字節(jié))。例如123.456表示為0.123456×103,則在計算機中存儲為Float型在vc下占4個字節(jié)Double型在vc下占8個字節(jié)Longdouble在vc下占8個字節(jié)各種數(shù)據(jù)類型所占長度與編譯器有關(guān),可以使用sizeof(longdouble)查看+.123456+368實型數(shù)據(jù)--存儲實數(shù):采用指數(shù)形式存儲,通常占4個字實型數(shù)據(jù)--使用

單精度浮點型float在C語言中用于存儲單精度浮點數(shù)float32位10-38~10387位有效數(shù)字聲明:floatselling_price;初始化:floatselling_price=11.3;selling_price=65.90;69實型數(shù)據(jù)--使用

單精度浮點型float在C實型數(shù)據(jù)--使用

雙精度浮點型內(nèi)存floatdouble213.5671435568967

64位10-308~1030816

位有效數(shù)字聲明:doublepressure_level;初始化:pressure_level=213.5671435568967;doubledvalue=35.4;70實型數(shù)據(jù)--使用

雙精度浮點型內(nèi)存floatdoub浮點型數(shù)據(jù)的舍入誤差:由于浮點型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差

例2.4浮點型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{

floata,b;

a=123456.789e5;

b=a+20;

printf(“%f\n”,b);

}

實型數(shù)據(jù)--實例說明:一個浮點型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應(yīng)當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)運行結(jié)果:

123456.789e571浮點型數(shù)據(jù)的舍入誤差:由于浮點型變量是由浮點型數(shù)據(jù)--常量實型常量的表示形式兩種表示形式十進制小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。72浮點型數(shù)據(jù)--常量實型常量的表示形式兩種表十進制小數(shù)浮點型數(shù)據(jù)--常量實型常量的類型

C編譯系統(tǒng)將實型常量作為雙精度來處理。

例如:f=2.45678*4523.65

系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進行相乘的運算,得到的乘也是一個雙精度數(shù)。

如果把一個實型常量賦給一個單精度變量f系統(tǒng)給出警告,警告不影響連接和運行最后結(jié)果.但只取其結(jié)果前7位賦給浮點型變量f。

如是在數(shù)的后面加字母f或F(如1.65f,654.87F),編譯系統(tǒng)就會把它們按單精度處理。73浮點型數(shù)據(jù)--常量實型常量的類型23在線保險單年齡:_____保險總額:_____性別:_____字符型數(shù)據(jù)2398340'M'數(shù)值型字符型int/floatchar74在線保險單字符型數(shù)據(jù)2398340'M'數(shù)值型字符型in字符型數(shù)據(jù)--存儲字符:計算機并不是將字符本身存放到存儲單元中(只能放二進制代碼),而是將字符的代碼存儲到存儲單元中,即存儲的是字符的ASCII碼;每個英文字母采用一個字節(jié)存儲未使用的高位用0補足例如‘A’的ASCII碼是65,計算機存儲就是01000001;ASCII碼不用死記,轉(zhuǎn)換工作由編譯系統(tǒng)自動完成,用戶程序里輸入的依然是正常使用的字符‘A’整數(shù)65和字符‘A’在計算機里的表示是一樣的,那怎么區(qū)分呢?兩者有沒有關(guān)系呢?75字符型數(shù)據(jù)--存儲字符:計算機并不是將字符本身存放到字符數(shù)據(jù)與整形數(shù)據(jù)字符數(shù)據(jù)和整型數(shù)據(jù)的區(qū)別和聯(lián)系占用的存儲空間大小不同字符變量存儲采用整數(shù)表示的ASCII字符型數(shù)據(jù)既可采用字符形式輸出(%c),也可采用整數(shù)形式輸出(%d)可以通過整數(shù)為一個字符型數(shù)據(jù)賦值可以對字符型數(shù)據(jù)當做整型數(shù)據(jù)進行算數(shù)運算程序設(shè)計中不能使用字符變量代替整型變量使用76字符數(shù)據(jù)與整形數(shù)據(jù)字符數(shù)據(jù)和整型數(shù)據(jù)的區(qū)別和聯(lián)系26字符型數(shù)據(jù)--存儲'''5''p''$'

有效的字符型值"2"

'2'

正確'2'+'2'=4

X值符號值符號值符號0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9

95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL(Delete鍵)43+65~90A~Z

77字符型數(shù)據(jù)--存儲''有效的字符型值"2"'2字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法一個字符型數(shù)據(jù)存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:

一個字符數(shù)據(jù)既可以以字符形式輸,也可以以整數(shù)形式輸出以字符形式輸出時,系統(tǒng)先將存儲單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,然后輸出。以整數(shù)形式輸出時,直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進行算術(shù)運算,此時相當于對它們的ASCII碼進行算術(shù)運算。

字符型數(shù)據(jù)--存儲78字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法注意:字符型數(shù)據(jù)字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個字符變量在內(nèi)存中占一個字節(jié)。

字符型數(shù)據(jù)--使用79字符型變量用來存放字符常量,注意只能放一個字符。字符型數(shù)據(jù)例2.5向字符變量賦予整數(shù)。

#include<stdio.h>

voidmain()

{charc1,c2;

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

說明:在第4和第5行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句: c1=′a′;c2=′b′;因為’a’和’b’的ASCII碼為97和98運行結(jié)果:ab9798字符型數(shù)據(jù)--實例80例2.5向字符變量賦予整數(shù)。

#include<std例2.6大小寫字母的轉(zhuǎn)換(注意分析方法)

#include<stdio.h>

voidmain()

{

charc1,c2;

c1=’a’;

c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2);

}說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。

運行結(jié)果:AB

字符型數(shù)據(jù)--實例81例2.6大小寫字母的轉(zhuǎn)換(注意分析方法)

#inclu字符型數(shù)據(jù)--字符常量字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”82字符型數(shù)據(jù)--字符常量字符常量例‘a(chǎn)’,’A’,‘

有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符含義ASCII代碼\n換行,將當前位置移到下一行開頭10\t水平制表(跳到下一個Tab位置)9\b退格,將當前位置移到前一列8\r回車,將當前位置移到本行開頭13\f換頁,將當前位置移到下頁開頭12\a發(fā)出鈴聲7\\代表一個反斜杠字符“\”92\′代表一個單撇號字符39\″代表一個雙撇號字符34\ddd1到3位八進制數(shù)所代表的字符\xhh1到2位十六進制數(shù)所代表的字符轉(zhuǎn)義字符83有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符字符串常量C語言除了允許使用字符常量外,還允許使用字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);字符型數(shù)據(jù)--字符串常量84字符串常量字符型數(shù)據(jù)--字符串常量34‘a’是字符常量,“a”是字符串常量,二者不同。如:假設(shè)C被指定為字符變量

:charcc=‘a(chǎn)’;c=“a”

;c=“CHINA”;

結(jié)論:不能把一個字符串常量賦給一個字符變量。字符型數(shù)據(jù)--字符串常量85‘a’是字符常量,“a”是字符串常量,二者不同。c=C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標志。

如:如果有一個字符串常量”CHINA”,實際上在內(nèi)存中是:CHINA\0

它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。6772378650字符型數(shù)據(jù)--字符串常量86C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符如:如果有一符號常量例2.7一直園的半徑為r,求周長c,面積s,體積v

#include<stdio.h>Voidmain(){doubler=3.67,c,s,v; c=2*3.1415926*r; s=3.1415926*r*r; v=4/3*3.1415926*r*r*r;}4.0/3.0;pow(r,3)#include<math.h>#definePI3.1415926c=2*PI*r;s=PI*pow(r,2);87符號常量例2.7一直園的半徑為r,求周長c,面積s,體積v符號常量相關(guān)說明使用符號常量的好處含義清楚,容易讀寫;改變的時候能夠做到“一改全改”;降低程序中輸入錯誤的幾率符號常量的使用方法先對程序做“預(yù)編譯”。即將程序中所有的符號常量用真正的常量進行替換(也會用include的庫文件內(nèi)容代替include語句)。進行正式編譯。符號常量不占存儲單元,只是一個符號符號常量不是變量,只是符號,不能被賦值88符號常量相關(guān)說明使用符號常量的好處381.C語言的運算符有以下幾類:⑴算術(shù)運算符(+-*/%)⑵關(guān)系運算符(><==>=<=?。剑沁壿嬤\算符(?。Γ|)⑷位運算符(<<>>~

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論