C語言數(shù)據(jù)的存儲解析_第1頁
C語言數(shù)據(jù)的存儲解析_第2頁
C語言數(shù)據(jù)的存儲解析_第3頁
C語言數(shù)據(jù)的存儲解析_第4頁
C語言數(shù)據(jù)的存儲解析_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1C語言數(shù)據(jù)的存儲解析2.0

預(yù)備知識計算機中數(shù)的表示及進制轉(zhuǎn)換數(shù)碼、基與權(quán)數(shù)碼:表示數(shù)的符號基:數(shù)碼的個數(shù)權(quán):每一位所具有的值數(shù)制語言程序設(shè)計第二章數(shù)據(jù)描述C第1頁/共34頁數(shù)制基權(quán)表示數(shù)碼特點10o,101,102,…十進制數(shù)0~910逢十進一二進制數(shù)0~122o,21,22,…逢二進一八進制數(shù)0~788o,81,82,…逢八進一十六進制數(shù)0~9,A~F,a~f1616o,161,162,…逢十六進一十進制:4956=4103+9102+5101+610o二進制:1011=123+022+121+12o十六進制:81AE=8163+1162+10161+1416o八進制:4275=483+282+781+58o語言程序設(shè)計第二章數(shù)據(jù)描述C第2頁/共34頁各種進制之間的轉(zhuǎn)換二進制、八進制、十六進制轉(zhuǎn)換成十進制方法:按權(quán)相加語言程序設(shè)計第二章數(shù)據(jù)描述C第3頁/共34頁各種進制之間的轉(zhuǎn)換(整數(shù))二進制、八進制、十六進制轉(zhuǎn)換成十進制方法:按權(quán)相加十進制轉(zhuǎn)換成二進制、八進制、十六進制方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例把十進制數(shù)59轉(zhuǎn)換成二進制數(shù)5922921427232120(59)10=(111011)2110111111011余余余余余余例把十進制數(shù)159轉(zhuǎn)換成八進制數(shù)1598198280(159)10=(237)8237余7余3余2例把十進制數(shù)459轉(zhuǎn)換成十六進制數(shù)4591628161160(459)10=(1CB)161CB余11余12余1語言程序設(shè)計第二章數(shù)據(jù)描述C第4頁/共34頁二進制與八進制之間的轉(zhuǎn)換二進制轉(zhuǎn)換成八進制:從右向左,每3位一組(不足3位左補0),轉(zhuǎn)換成八進制八進制轉(zhuǎn)換成二進制:用3位二進制數(shù)代替每一位八進制數(shù)例(1101001)2=(001,101,001)2=(151)8例(246)8=(010,100,110)2=(10100110)2000~0001~1010~2011~3100~4101~5110~6111~7語言程序設(shè)計第二章數(shù)據(jù)描述C第5頁/共34頁二進制與十六進制之間的轉(zhuǎn)換二進制轉(zhuǎn)換成十六進制:從右向左,每4位一組(不足4位左補0),轉(zhuǎn)換成十六進制十六進制轉(zhuǎn)換成二進制:用4位二進制數(shù)代替每一位十六進制數(shù)例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F語言程序設(shè)計第二章數(shù)據(jù)描述C第6頁/共34頁數(shù)值的表示方法——計算機不論對正數(shù)和負(fù)數(shù)都按“補碼”形式存放到存儲單元。原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負(fù)數(shù):符號位為1,其余位對原碼取反補碼:正數(shù):原碼、反碼、補碼相同負(fù)數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加1語言程序設(shè)計第二章數(shù)據(jù)描述C第7頁/共34頁整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。

inti; i=10;第8頁/共34頁 inti; i=-10;-10的原碼1000000000001010取反1111111111110101再加11111111111110110-10的補碼的反碼-10第9頁/共34頁數(shù)據(jù)類型總表C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型無值型字符類型char枚舉類型enum整型實型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進行的操作第10頁/共34頁內(nèi)存以字節(jié)為單元組成一個字節(jié)一般由8個二進制位組成每個二進位的值是0或1以turboc系統(tǒng)為例:inta,b;2Byte=16bitCharc,d;1Byte=8bitFloate,f;4Byte=32bitDoubleg,h;8Byte=64bit語言程序設(shè)計第二章數(shù)據(jù)描述C第11頁/共34頁整型變量的分類

整型變量的基本類型符為int??梢愿鶕?jù)數(shù)值的范圍將變量定義為基本整型、短整型或長整型。在int之前可以根據(jù)需要分別加上修飾符:short(短型)或long(長型)。因此有以下三種整型變量: (1)基本整型,以int表示。 (2)短整型,以shortint表示,或以short表示。 (3)長整型,以longint表示,或以long表示。 為了充分利用變量的表數(shù)范圍,可以將變量定義為“無符號”類型。對以上三種都可以加上修飾符unsigned,以指定是“無符號數(shù)”。如果加上修飾符signed,則指定是“有符號數(shù)”。如果既不指定為signed,也不指定為unsigned,則隱含為有符號。第12頁/共34頁0111111111111111int型:最大:327671000000000000000最小:-327681111111111111111unsignedint型:最大:655350000000000000000最小:0語言程序設(shè)計第二章數(shù)據(jù)描述C第13頁/共34頁整型數(shù)據(jù)類型(TurboC系統(tǒng))類型符號關(guān)鍵字?jǐn)?shù)的表示范圍所占字節(jié)整型有無(signed)int2-32768~32767

(-215~215-1)(signed)short2-32768~32767(-215~215-1)(signed)long4(-231~231-1)2unsigned

int0~65535

(0~216-1)40~4294967295(0~232-1)unsigned

longunsigned

short20~65535(0~216-1)第14頁/共34頁整型數(shù)據(jù)運算程序舉例(2-1.c)例雞兔同籠。在一個籠子里同時養(yǎng)著一些雞和兔,你想了解有多少只雞和多少只兔,主人對你說:我只告訴你雞和兔的總頭數(shù)是16和總腳數(shù)是40,你能不能自己計算有多少只雞和多少只兔?解題思路設(shè)x代表雞的數(shù)量,y代表兔的數(shù)量,總頭數(shù)為h,總腳數(shù)為f。根據(jù)題意,可以列出下面的方程式:

x+y=h2x+4y=f整理可得求雞和兔數(shù)量的公式:

y=(f-2h)/2x=h-y#include“stdio.h”voidmain(){inth,f,x,y;h=16;f=40;y=(f-2*h)/2;x=h-y;printf(“%d,%d\n”,x,y);}第15頁/共34頁整型常量實型常量字符常量字符串常量2.1常量定義:程序運行時其值不能改變的量(即常數(shù))分類:第16頁/共34頁一.整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字0~9和正負(fù)號表示.如12,-46,八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.

如012,024,-010十六進制整數(shù):由數(shù)字0和小寫字母x開頭,后跟0~9,A~F(字母不區(qū)分大小寫)表示.

如0x12,-0x1AB0,-0x12不合法:018,ox10,特殊:0例30000為int型65536L為longint型整型常量的類型在整常量后加字母l或L,認(rèn)為它是longint

型常量第17頁/共34頁二.實型常量(實數(shù)或浮點數(shù))有兩種表示形式:小數(shù)形式:(由數(shù)字和小數(shù)點組成,必須有小數(shù)點)如0.25,-123.0,.5,0.0指數(shù)形式:(e或E之前必須有數(shù)字,之后的指數(shù)必須為整數(shù),且不能插入空格?。?/p>

如123e3,123E3,(用字母e和E代表以10為底的指數(shù))錯誤:e-5,1.2E-3.5

思考:常量1如何用指數(shù)表示?第18頁/共34頁規(guī)范化的指數(shù)形式:在字母e或E之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字。如2.3478e2,3.0999E5等都屬于規(guī)范化的指數(shù)形式,而12.908e10,0.4578E3不屬于規(guī)范化的指數(shù)形式一個實數(shù)可以有多種指數(shù)表示形式:例如123.456可以表示為123.456e0、12.3456e1、1.23456e2、0.123456e3等等第19頁/共34頁實型數(shù)據(jù)運算程序舉例(2-6.c)例分期付款的計算。張先生為購房,向銀行貸款,貸款額為D元,每月準(zhǔn)備還P元,月利率為R,求需要多少個月才能還清。解題思路已知計算公式是

M=log10(P)-log10(P-D*R)log10(1+R)M是還清貸款所需月數(shù)。今假設(shè)D=324500元,P=3245元,R=0.8%。(公式中用到log函數(shù),見附錄E)#include"stdio.h"#include"math.h"voidmain(){intd,p;floatr,m;d=324500;p=3245;r=0.008;m=(log10(p)-log10(p-d*r))/log10(1+r);printf("month=%f\n",m);printf("total=%f\n",m*p);}第20頁/共34頁轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行回車(返回本行開頭)響鈴單引號1~3位8進制數(shù)代表的字符跳到下一個輸出區(qū)(7列)退格換頁反斜線雙引號1~2位16進制數(shù)代表的字符三.字符常量定義:用單引號括起來的單個字符字符常量的值:該字符的ASCII碼值見附錄A如‘\101’-----------‘A’‘\102’-----------’B’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()如‘A’——65‘a(chǎn)’——97

‘0’——48‘

’——32如‘5’‘A’‘?’轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示例轉(zhuǎn)義字符舉例main(){printf(“Welcome");printf(“toC!");}運行結(jié)果:(屏幕顯示)WelcometoC!例main(){printf(“Welcome\nto\nC!\n”);}運行結(jié)果:屏幕顯示:WelcometoC!第21頁/共34頁注意:轉(zhuǎn)義序列實際上作為一個字符來對待,

但如果反斜線之后的字符和它不構(gòu)成轉(zhuǎn)義序列,則‘\’不起轉(zhuǎn)義作用,將被忽略。例轉(zhuǎn)義字符舉例printf(“A\Nbc\nDEF\n”);

運行結(jié)果:(屏幕顯示)ANbcDEF_例轉(zhuǎn)義字符舉例printf(“\tab\rcd\n\’ef\\gh\x”);

運行結(jié)果:(屏幕顯示)c

d_____ab‘ef\ghx第22頁/共34頁字符常量與字符串常量不同四.字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結(jié)束標(biāo)志hello\0例字符串“hello”在內(nèi)存中aa\0例‘a(chǎn)’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;第23頁/共34頁五.符號常量:用標(biāo)識符代表常量定義格式:#define

符號常量常量如#definePRICE30一般用大寫字母是宏定義預(yù)處理命令,不是C語句,不必在行末加分號#include“stdio.h”#definePRICE30void

main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}運行結(jié)果:total=300例符號常量舉例#include“stdio.h”voidmain(){intnum,total;num=10;total=num*30;printf("total=%d",total);}第24頁/共34頁2.2變量標(biāo)識符定義:用來標(biāo)識變量、符號常量、數(shù)組,函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字長度:最長32個字符命名原則:見名知意不宜混淆如l與L,o與0例:判斷下列標(biāo)識符號合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b第25頁/共34頁編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機數(shù)變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時賦初值例:inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識符例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;

intx=y=z=1;(×)變量的使用:先定義,后使用例1inta;b=19;//Undefinedsymbol‘b’infunctionmain

變量定義位置:一般放在函數(shù)開頭#include“stdio.h”voidmain(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語句#include“stdio.h”voidmain(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}第26頁/共34頁一.整型變量inta,b;二.實型變量float:占4字節(jié),提供6~7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字三.字符型變量

chara,b;字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術(shù)運算#include“stdio.h”/*2-5.c*/voidmain(){floatx;doubley;inti;x=0.0;y=0.0;i=1;while(i<=10000){x=x+100000.0;y=y+100000.0;i=i+1;}x=x/10000.0;y=y/10000.0;printf(“x=%f,y=%f\n”,x,y);}輸出結(jié)果:x=99985.179688,y=100000.000000可以看出x有約1.5‰的誤差,而y沒有精度損失。例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數(shù)組存儲第27頁/共34頁

在內(nèi)存中字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式就與整數(shù)的存儲形式類似。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。以字符形式輸出時,需要先將存儲單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,然后輸出。以整數(shù)形式輸出時,直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進行算術(shù)運算,此時相當(dāng)于對它們的ASCII碼進行算術(shù)運算。第28頁/共34頁[例]大小寫字母的轉(zhuǎn)換(2-2.c)#include<stdio.h>voidmain(){ charc1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; printf(“c1=%cc2=%c\n",c1,c2); printf(“c1=%dc2=%d\n",c1,c2);}運行結(jié)果:c1=Ac2=Bc1=65c2=66第29頁/共34頁例(2-3.c)#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;

溫馨提示

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

評論

0/150

提交評論