數(shù)據(jù)類型及其輸入輸出.ppt
《數(shù)據(jù)類型及其輸入輸出.ppt》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)類型及其輸入輸出.ppt(53頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第二章數(shù)據(jù)類型及輸入輸出,內(nèi)蒙古科技大學(xué)實訓(xùn)中心,本節(jié)重點,數(shù)據(jù)類型常量與變量不同類型的數(shù)據(jù)的輸入輸出,引入——數(shù)據(jù)類型,1、數(shù)據(jù)是程序處理的基本對象。2、程序中數(shù)據(jù)分為變量或常量。3、每個變量或常量都有確定的數(shù)據(jù)類型。4、每種數(shù)據(jù)類型都有確定的存儲長度、取值范圍及允許的操作。5、程序中所有數(shù)據(jù)必須指定其數(shù)據(jù)類型。,常量,在程序中,常量是指常數(shù)或其值不能被改變的量。1、直接常量:如:12,123.5,1.23E7,‘a(chǎn)’,’A’,’8’,“hello”,“a”2、符號常量,即用一個標(biāo)識符代表一個常量。一般用大寫字母表示。符號常量在其作用域內(nèi)不能改變,也不能再被賦值。定義符號常量的方法如:#definePI3.14159,#definePI3.1415926voidmain(){floatr,c,s;r=2;c=2*PI*r;s=PI*r*r;printf(“c=%f,s=%f”,c,s);},常量的類型,1、整型常量有三種表示方法:十進制整數(shù)123,-784八進制整數(shù)0123=十六進制整數(shù)八進制和十六進制只能表示無符號整數(shù)長整數(shù)表示為:123l123L無符號整數(shù)表示為:123u,常量分為:整型常量、實型常量、字符常量、字符串常量,2、實型常量,也稱浮點數(shù)。兩種表示方法:(1)十進制小數(shù)形式由數(shù)字和小數(shù)點組成(必須有小數(shù)點)1.123,3.1415;(2)指數(shù)形式123e5,123E5都表示但是1.23E7為規(guī)范化的指數(shù)形式。輸出指數(shù)形式的數(shù)據(jù)時,按規(guī)范化的指數(shù)形式輸出。(即小數(shù)點左邊應(yīng)有一位非零數(shù)字),3、字符常量(Characterconstants)由一對單引號括起的單個字符,稱為字符常量。如:‘a(chǎn)’,‘9’,‘+’,\b退格\’單引號\n換行\(zhòng)ddd1-3位八進制數(shù)\t制表符\xhh1-2位十六進制數(shù)\\反斜杠字符\a響鈴\”雙引號\r回本行開頭,,轉(zhuǎn)義字符(EscapeSequences)表示控制字符或具有特定用途的字符。,在內(nèi)存中,字符數(shù)據(jù)并不是把字符本身放到內(nèi)存單元中,而是將該字符的相應(yīng)ASCII碼(二進制的形式)放到存儲單元中。,如:有兩個字符型數(shù)據(jù)‘A’和‘a(chǎn)’,4、字符串常量(StringLiterals)由一對雙引號括起的字符序列稱為字符串常量,例如:“Howdoyoudo?”“china”C規(guī)定以字符‘\0’作為字符串結(jié)束的標(biāo)志。在內(nèi)存中所占字節(jié)數(shù)為實際字符個數(shù)+1如字符串常量“china”在內(nèi)存中存儲形式如下:,變量,1、定義:其值可以改變的量稱為變量。程序中的變量必須先定義后使用。2、變量的定義、賦值(初始化);intsum;chara,b;floatr,s,l;doublex,y;定義了變量后,變量并沒有值,需要給其賦值。也可以在定義變量的同時給出初值,對變量進行初始化。例如:①inti;i=9;/*先定義整型變量i,然后賦初值9*/,②floatr=1.5;/*定義實型變量r的同時,賦其初值1.5*/③charanswer=‘y’;/*同上*/④也可以使被定義的變量的一部分賦初值。如inta,b,c=5;表示定義a,b,c為整型變量,并且對c進行初始化,使c值為5。注意:如對幾個變量同時賦初值為5,應(yīng)寫成inta=5,b=5,c=5;或者inta,b,c;a=b=c=5;,,,而不能寫成inta=b=c=5;,3、對變量名的要求。變量名要做到“見名知意”,不要使用簡單的字符作變量名,以增加程序的可讀性。變量名一般用小寫字母表示,長度與所用系統(tǒng)有關(guān)(c,合法標(biāo)識符,非法標(biāo)識符,變量的類型,變量分為:整型變量、實型變量、字符型變量1、整型變量⑴存放形式整形變量在內(nèi)存中以二進制的形式存放的,一個整形變量在內(nèi)存中占2個字節(jié)。,10,變量i(inti=10;),,變量在內(nèi)存中的實際存放情況,機器內(nèi)部,數(shù)值是以補碼表示的。正數(shù):其補碼和原碼相同。負數(shù):其補碼為:該數(shù)的絕對值的二進制數(shù)按位取反加1。,-35,取反,加1,最高位,最高位是符號位,其為0時是正數(shù),為1時是負數(shù)。,,⑵分類根據(jù)數(shù)值的范圍可以把變量定義成基本類型、短整型和長整型。①基本類型:用int標(biāo)識②短整型:用shortint標(biāo)識(short)③長整型:用標(biāo)識(long)進一步修飾,修飾符(無符號數(shù))signed(有符號數(shù))如果既不指定unsigned也不指定signed則隱含為有符號數(shù)(signed),signed可以不寫。,例:unsignedlonginta,b;,ANSI標(biāo)準(zhǔn)定義的整數(shù)類型,2、實型變量類型(內(nèi)存中字節(jié)數(shù))有效數(shù)字float(4字節(jié))6~7位double(8字節(jié))15~16位longdouble(16字節(jié))18~19位定義方法:(單精度)float變量名(雙精度)double變量名,,,,,3、字符型變量①定義方法:char變量名列表charc1,c2,c3;②取值范圍--ASCII碼字符集中的字符。charc1,c2;c1=‘e’;c2=‘3’注意:字符串常量不能被賦值到字符變量中,因為字符變量只能容納一個字符。,區(qū)別:‘a(chǎn)’“a”,數(shù)據(jù)的輸入和輸出,C語言中,在stdio.h頭文件中定義了標(biāo)準(zhǔn)輸入輸出函數(shù)。1、printf()函數(shù)格式:printf(“格式控制字符串”,輸出項列表);功能:將輸出項按給定的控制格式輸出。例如:printf(“%f”,sum);2、scanf()函數(shù)格式:scanf(“格式控制字符串”,輸入項列表);功能:將輸入項按給定的控制格式輸入。例如:scanf(“%d%d”,,#includevoidmain(){charch=’a’;inta=65;floatx=123.456;printf(”%c,%d,%3c\n”,ch,ch,ch);printf(”%c%d%3d\n”,a,a,a);printf(”%f,%-7.2f,%10.4f\n”,x,x,x);},輸出結(jié)果是:a,97,__aA65_65123.456001,123.46_,__123.4560,例1:,#includevoidmain(){inta,b;charch1,ch2;floatf,r;scanf(“%d%d”,},輸入時:125785ab23.456,612.97,例2:,本節(jié)重點,掌握運算符的使用確定表達式的類型、值不同類型的數(shù)據(jù)的轉(zhuǎn)換,運算符,一、運算符:能夠完成某種操作(運算)的符號。二、根據(jù)運算符的運算對象(操作數(shù))的多少,運算符可分為:①單目(一元)運算符i++--n②雙目(二元)運算符a+bd/e③三目(三元)運算符x>y?x+3:y*9(條件運算符),表達式,一、C表達式:由C運算符和運算對象構(gòu)成的式子。運算對象可以是常量、變量、函數(shù)或表達式。二、表達式的書寫原則(1)C語言的表達式只能采用線性的形式書寫。例如:①應(yīng)寫成1/3+i+j*j*j。②應(yīng)寫成(a+b)/(c+d)*e+f。,(2)C語言的表達式只能使用C語言中合法的運算符和操作數(shù),對有些操作必須調(diào)用庫函數(shù)完成,而且運算符不能省略。例如:①πr2應(yīng)寫成3.14159*r*r。②應(yīng)寫成0.5*a*b*sin(alph)。③|x-y|應(yīng)寫成fabs(x-y)。④y+2X應(yīng)寫成y+pow(2,x)。,#include,三、表達式在求值時,遵循以下規(guī)則(1)優(yōu)先級:不同優(yōu)先級的運算符出現(xiàn)在同一表達式時,按運算符的優(yōu)先級的高低次序執(zhí)行。例如:d=a+b*c;/*先乘后加*/(2)結(jié)合性:是指表達式中出現(xiàn)同優(yōu)先級的操作符時,該先做哪個操作符的規(guī)定。結(jié)合方向:“自左向右”、“自右向左”例如:a+b-c從左至右d=a=b=3從右至左,四、表達式的分類C語言表達式種類很多,有多種分類方法。我們一般依據(jù)運算的特征將表達式分為:①算術(shù)表達式,如a+b*2.0-3.0/5.0。②關(guān)系表達式,如x>=y,關(guān)系表達式可以認為是邏輯表達式的特殊情況。③邏輯表達式,如(x>=2)j的值為3(首先將i的原值賦給j,然后i自身再加1)j=++i;j的值為4(i自身先加1,然后再將加1后的值賦給j),#includevoidmain(){inti,j,k;i=3;j=i++;k=++i;printf(“i=%d,j=%d,k=%d\n”,i,j,k);},范例:,輸出結(jié)果:i=5,j=3,k=5,2、在表達式中如果有2個以上的“+”或“-”連寫在一起,則編譯器首先識別前面兩個+或-為自增或自減操作符。例如:,在使用自增或自減運算符時注意如下幾個問題:,1、自加或自減運算只能用于變量,不能用于常量或表達式;錯誤:25++(i+j)++例如-i++,只能理解為-(i++)。因為(-i)++為表達式,表達式是不能自加自減的。,i=3;j=-i++;printf(“%d”,j);,輸出結(jié)果應(yīng)為-3,而不是是-4。,inta=1,b=5,c;c=a+b;c=a+++b;c=a++b;,正確:c=6,錯誤:++不是雙目運算符,正確:a+++b,3、表達式中包含有自增、自減運算時,容易出錯,務(wù)請小心。如有:i=1;則:,類似上面分析,應(yīng)為3,當(dāng)然表達式計算完成后i的值同樣改變?yōu)?。,(++i)+(++i)+(++i)的值為多少呢?是9(=2+3+4)嗎?不對!,計算時先對整個表達式掃描,i先自增3次,由1→2→3→4,如此計算結(jié)果為4+4+4,等于12。,(i++)+(i++)+(i++)的值又是多少呢?,賦值運算符和賦值表達式,1、賦值運算符:=使用方法:變量=表達式賦值運算時先計算右邊表達式的值,然后將右邊表達式的值賦給左邊變量,并以此值作為整個賦值表達式的值。(1)賦值運算的優(yōu)先級為第14級,次低。如:inti,a,b,c,p;i=3+5%2;/*先計算3+5%2,得到4,然后將4賦給i*/。p=(a+b)/c;p=a+b/c;,(2)理解以下兩賦值表達式的含義:y=5;n=5;x=y(tǒng);n=n+1;(3)賦值運算符具有“自右向左”的結(jié)合性,賦值運算符右邊的表達式也可以是賦值表達式:例如:a=b=5;等同于a=(b=5);,,,2、復(fù)合賦值運算算術(shù)復(fù)合賦值運算符:+=、-=、*=、/=、%=位復(fù)合賦值運算符:scanf(″%d″,},例:判斷整數(shù)的正負。,逗號運算符和逗號表達式,一、逗號運算是雙目運算,一般形式如下:表達式1,表達式2先計算表達式1,再計算表達式2,并以此作為整個表達式的值。如:a=2,a*6,先計算a=2,再計算a*6,并以此作為整個表達式的值,表達式的值為12。,二、逗號運算的優(yōu)先級最低,結(jié)合自左向右。逗號表達式的更一般使用形式為:表達式1,表達式2,表達式3,……,表達式n先計算表達式1,再計算表達式2,再計算表達式3,…,再計算表達式n的值,并以此作為整個表達式的值。如:表達式x=a=3,6*x,6*a,a+x的值為。逗號運算又稱順序求值運算。,6,#includevoidmain(){inti,j,k;i=1,j=2,k=3;printf(“%d%d%d\n”,i,j,k);},#includevoidmain(){inti,j,k;i=1;j=2;k=3;printf(“%d%d%d\n”,i,j,k);},并不是任何地方出現(xiàn)的逗號都是逗號運算符,例如:printf(“%d%d%d\n”,i,j,k);(是參數(shù)分隔符),如果寫成:printf(“%d%d%d\n”,(i,j,k),j,k);相當(dāng)于:printf(“%d%d%d\n”,k,j,k);,求字節(jié)數(shù)運算,運算符:sizeof(數(shù)據(jù)類型標(biāo)識符)或sizeof(表達式)求字節(jié)數(shù)運算是單目運算,操作數(shù)可以是類型名,也可以是變量、表達式,用以求得相應(yīng)類型或數(shù)據(jù)所占的字節(jié)數(shù)。此運算的優(yōu)先級與取地址運算優(yōu)先級相同。例如:sizeof(float)值為4,單精度類型占4個字節(jié)sizeof(2*3)值為2,算術(shù)表達式2*3是int型,數(shù)據(jù)的類型轉(zhuǎn)換,一、系統(tǒng)自動進行的類型轉(zhuǎn)化由系統(tǒng)自動完成類型轉(zhuǎn)換,轉(zhuǎn)換的規(guī)則如下:intunsignedlongdouble↑↑short,charfloat縱向箭頭方向表示必定要進行的轉(zhuǎn)換,short型、char型數(shù)據(jù)必定先轉(zhuǎn)換成int型,float型數(shù)據(jù)必定先轉(zhuǎn)換成double型,再進行運算。橫向箭頭方向表示類型自動轉(zhuǎn)換的方向。由低向高轉(zhuǎn)換,int型最低,double型最高。,,,,二、賦值時的類型轉(zhuǎn)換(1)將實型數(shù)據(jù)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。如:inti;i=1.23;/*結(jié)果i的值為1*/(2)將整型數(shù)據(jù)賦給單、雙精度型變量時,數(shù)值大小不變,但以浮點形式存儲到變量中。(3)將字符型數(shù)據(jù)賦給整型變量時,由于字符數(shù)據(jù)只占一個字節(jié),而整型變量為兩個字節(jié),將字符的數(shù)據(jù)放整型變量的低8位,而對整型變量的高8位進行擴充。,(4)將基本整型數(shù)據(jù)賦給長整型變量時,基本整型數(shù)據(jù)放長整型變量低16位,高16位用符號位擴充。反之將長整型數(shù)據(jù)賦給整型變量時,只需將長整型數(shù)據(jù)的低16位原封不動送整型變量中。(5)將無符號整型數(shù)據(jù)賦給長整型變量時,不存在符號擴展的問題,只需將高位補0即可。將無符號整型數(shù)據(jù)賦給一個占字節(jié)數(shù)相同的整型變量時,將無符號整型數(shù)據(jù)原樣送整型變量中,并將最高位當(dāng)作符號位,如果數(shù)據(jù)超出相應(yīng)的整型范圍,將產(chǎn)生數(shù)據(jù)錯誤。如果將整型數(shù)據(jù)賦給占字節(jié)數(shù)相同的無符號整型變量,也是原樣照賦,最高位作數(shù)值處理。,三、強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換通過類型轉(zhuǎn)換運算進行。格式:(類型名)(表達式)功能:將表達式的類型強制轉(zhuǎn)換成類型名指定的類型。如:floatx=5.2,y=6.3;intz;z=(int)(x+y);(int)(x+y)將表達式x+y的值強制轉(zhuǎn)換成整型強制類型轉(zhuǎn)換在將高類型轉(zhuǎn)換為低類型時,數(shù)據(jù)精度受損,是一種不安全的轉(zhuǎn)換。強制類型轉(zhuǎn)換是暫時性的,一次性的,并不永久改變所轉(zhuǎn)換表達式的類型。如:inta=7;doubleb;b=(double)a+5;(double)a為雙精度,a依然為整型量。,作業(yè),課本40頁習(xí)題補充:課本21頁轉(zhuǎn)義字符的使用及其含義。,謝謝大家!,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)類型 及其 輸入輸出
鏈接地址:http://m.jqnhouse.com/p-3269522.html