版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基本數(shù)據(jù)類型及輸入輸出第一頁,共五十八頁,2022年,8月28日2.1C的數(shù)據(jù)類型C語言的數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類,由這些數(shù)據(jù)類型可以構(gòu)造出不同的數(shù)據(jù)結(jié)構(gòu)。1.基本數(shù)據(jù)類型基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。也就是說,基本數(shù)據(jù)類型是自我說明的包括整型、字符型、實(shí)型、枚舉型。2.構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的。在C語言中,構(gòu)造類型有以下幾種:
·數(shù)組類型
·結(jié)構(gòu)體類型
·共用體類型第二頁,共五十八頁,2022年,8月28日3.指針類型指針是一種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型。其值用來表示某個(gè)量在內(nèi)存儲(chǔ)器中的地址。雖然指針變量的取值類似于整型量,但這是兩個(gè)類型完全不同的量,因此不能混為一談。4.空類型在調(diào)用函數(shù)值時(shí),通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值。這個(gè)返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)說明中給以說明。但是,也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”,其類型說明符為void。在第六章函數(shù)中詳細(xì)介紹。第三頁,共五十八頁,2022年,8月28日2.2標(biāo)識(shí)符、常量和變量2.2.1標(biāo)識(shí)符C語言中的標(biāo)識(shí)符可以分為下述3類。
1、關(guān)鍵字關(guān)鍵字是用來說明C語言中某一固定含義的字。例如,int是關(guān)鍵字,它用以說明變量是整型。ANSIC標(biāo)準(zhǔn)定義的關(guān)鍵字有以下32個(gè)。
2、編譯預(yù)處理的命令單詞主要有如下7個(gè):
defineincludeundefifdefifndefendifline第四頁,共五十八頁,2022年,8月28日
3、一般標(biāo)識(shí)符(用戶標(biāo)識(shí)符)
一般標(biāo)識(shí)符通常是用戶根據(jù)程序中的需要自己按照標(biāo)識(shí)符規(guī)則定義的標(biāo)識(shí)符。即用戶自己定義的變量名、常量名和函數(shù)名等。一般標(biāo)識(shí)符由字母、數(shù)字和下劃線組成,且第一個(gè)位置只能取字母或下劃線。在C語言中構(gòu)成自定義的標(biāo)識(shí)符必須符合下列語法規(guī)則:
(1)標(biāo)識(shí)符必須以字母(a~z或A~Z)或下劃線(_)開頭。
(2)在第一個(gè)字符之后,可以是字母、數(shù)字(0~9)和下劃線組成的字符序列,這個(gè)序列可以是空串。
(3)C語言中大小寫字母是具有不同含義的,即代表不同的標(biāo)識(shí)符。
(4)在不同的系統(tǒng)中標(biāo)識(shí)符字符的有效位數(shù)不同。
(5)標(biāo)識(shí)符不能使用系統(tǒng)的保留字。第五頁,共五十八頁,2022年,8月28日常量和符號(hào)常量1、常量在程序運(yùn)行過程中,其值不能被改變的量稱為常量。它是C語言中使用的基本數(shù)據(jù)對(duì)象之一。C語言提供的常量如圖2-2所示。如:10,0,-6為整型常量,2.6,-5.6為實(shí)型常量,'a','c'為字符常量,”china”是字符串常量。2、符號(hào)常量用一個(gè)標(biāo)識(shí)符代表一個(gè)常量,稱為“符號(hào)常量”.定義的格式為:
#define標(biāo)識(shí)符常量其中,#define是宏定義命令的專用定義符;標(biāo)識(shí)符是由用戶命名的符號(hào)常量名,一般大寫;常量可以是數(shù)值常量或字符常量。例如:
#definePI3.1415926第六頁,共五十八頁,2022年,8月28日【例題2.1】已知圓半徑radius,求圓的面積area。/*file2_1.c*/#include<stdio.h>#definePI3.1415926voidmain(){intradius;floatarea;radius=10;area=PI*radius*radius;printf("area=%f",area);}第七頁,共五十八頁,2022年,8月28日變量在程序執(zhí)行過程中,其值可以改變的量稱為變量。一個(gè)變量用一個(gè)名字表示,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,用于存放變量的值。在編寫程序時(shí)有很多需要變化的量,這時(shí)就需要使用變量。1、變量名變量名符合標(biāo)識(shí)符的命名規(guī)則。例如:
area,i,j,_score,x1,y1都是合法的變量名,而
?exam,#define,2math,x+y都是非法的變量名。2、變量的定義在C語言中,要求對(duì)所有用到的變量作強(qiáng)制定義,也就是變量必須“先定義后使用”。第八頁,共五十八頁,2022年,8月28日變量定義的一般形式為:數(shù)據(jù)類型變量名1,變量名2,變量名3……,變量名n;例如:
intnumber;/*定義了一個(gè)整型變量number*/3、變量的初始化變量的初始化就是對(duì)變量預(yù)先設(shè)置初值。在程序中常常需要對(duì)一些變量預(yù)先設(shè)置初值。變量賦初值的形式如下:
(1)先定義變量,再給變量賦初值。如:
inta,b,c;a=3;b=4;c=5;(2)C語言允許在定義變量的同時(shí)進(jìn)行初始化。如:
intnumber=100;
第九頁,共五十八頁,2022年,8月28日
(3)也可以被定義的變量的部分變量進(jìn)行初始化。如:
intnum,stu=20,wid;(4)如果對(duì)幾個(gè)變量賦予的初值相同,都為5,應(yīng)寫成:
inta=5,b=5,c=5;表示a、b、c的初值都是5。不能寫成inta=b=c=5;(5)初始化不是在編譯階段完成的(只有在第6章中介紹的靜態(tài)存儲(chǔ)變量和外部變量的初始化是在編譯階段完成的),而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦予初值的,相當(dāng)于有一個(gè)賦值語句。第十頁,共五十八頁,2022年,8月28日【例題2.2】變量的定義/*file2_2.c*/#include<stdio.h>voidmain(){intnumber=100;floatweight=100.0,height;height=1.80;printf("number=%d,weight=%f,height=%f\n",number,weight,height);printf("number的地址是:%ld\n",&number);}第十一頁,共五十八頁,2022年,8月28日2.3整型數(shù)據(jù)整型常量的表示方法整型常量即整常數(shù),由一個(gè)或多個(gè)數(shù)字組成,可以帶正負(fù)號(hào)。C語言中的,有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。
(1)八進(jìn)制整數(shù)。以0(零)開頭的數(shù)表示八進(jìn)制數(shù)。數(shù)碼取值為0~7。如0134表示八進(jìn)制數(shù)134,即(134)8,其值為:1×82+3×81+4×80,等于十進(jìn)制數(shù)92。-021表示八進(jìn)制數(shù)-21,即十進(jìn)制數(shù)-17。(2)十六進(jìn)制整數(shù)。以0x或0X開頭的數(shù)是十六進(jìn)制數(shù)。其數(shù)碼取值為:0~9,A~F或a~f。如0x134,代表十六進(jìn)制數(shù)134,即(134)16=1×162+3×161+4×160=308。第十二頁,共五十八頁,2022年,8月28日(3)十進(jìn)制整數(shù)。沒有前綴,其數(shù)碼取值為:0~9。如123,-500,0?!纠}2.3】以十進(jìn)制形式輸出八進(jìn)制整數(shù)和十六進(jìn)制整數(shù)/*file2_3.c*/#include<stdio.h>voidmain(){printf("\n%d%d%d%d%d",-021,0x134,0xADE,056,-0x23);}第十三頁,共五十八頁,2022年,8月28日整型變量1.整型數(shù)據(jù)在內(nèi)存中的存放形式雖然編寫程序時(shí)可以使用十進(jìn)制、八進(jìn)制和十六進(jìn)制的數(shù)據(jù),但是,所有數(shù)據(jù)在內(nèi)存中都是以二進(jìn)制形式存放的。如果定義了一個(gè)整型變量num:intnum=12;則十進(jìn)制數(shù)12的二進(jìn)制形式為1100,在IBMPC系列機(jī)上使用的C編譯系統(tǒng),每一個(gè)整型變量在內(nèi)存中占2個(gè)字節(jié)(16bit)。圖2-4(a)是數(shù)據(jù)存放的示意圖,圖2-4(b)是數(shù)據(jù)在內(nèi)存中實(shí)際存放的情況。第十四頁,共五十八頁,2022年,8月28日2.整型變量的分類除了使用基本類型符為int定義整型變量之外,在int前還可以加上各種修飾符,根據(jù)數(shù)值的范圍將變量定義為以下3類整型變量:(1)基本整型,用int定義。(2)短整型,用shortint定義或short定義。(3)長(zhǎng)整型,用longint定義或long定義。其中,每一類又分為無符號(hào)(unsigned)和有符號(hào)(signed)兩種情況。一般定義變量時(shí)不加unsigned和signed,C語言默認(rèn)類型是signed。因此,有以下6類整型變量:(1)有符號(hào)基本整型[signed]int(2)無符號(hào)基本整型unsignedint(3)有符號(hào)短整型[signed]short[int](4)無符號(hào)短整型unsignedshort[int](5)有符號(hào)長(zhǎng)整型[signed]long[int](6)無符號(hào)長(zhǎng)整型unsignedlong[int]第十五頁,共五十八頁,2022年,8月28日3.整型變量的定義
C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強(qiáng)制類型定義”。例如:
intnum,score;
unsignedshortx,y;
longi,j;對(duì)變量的定義,一般是放在一個(gè)函數(shù)的開頭部分的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的分程序,這將在第6章介紹)。第十六頁,共五十八頁,2022年,8月28日【例題2.4】交換兩個(gè)變量的值。/*file2_4.c*/#include<stdio.h>voidmain(){intnum1,num2,t;/*定義整型變量*/
num1=15;/*給變量賦值*/num2=20;printf("num1=%d,num2=%d\n",num1,num2t=num1;/*交換過程*/num1=num2;num2=t;printf("num1=%d,num2=%d\n",num1,num2);/*輸出交換后的值*/
}第十七頁,共五十八頁,2022年,8月28日
4.整型數(shù)據(jù)的溢出在C語言中,如果一個(gè)變量的值超過了其類型所允許的最大值則會(huì)出現(xiàn)溢出的現(xiàn)象。例如,一個(gè)shortint型變量的最大允許值為32767,如果再加1,會(huì)出現(xiàn)什么情況?【例題2.5】整型數(shù)據(jù)的溢出。/*file2_5.c*/#include<stdio.h>voidmain(){shortinta,b;/*定義短整型變量a、b*/longx,y;/*定義長(zhǎng)整型變量x、y*/a=32767;b=a+1;printf("a=%d,b=%d\n",a,b);x=32767L;y=x+1;printf("x=%ld,b=%ld\n",x,y);}第十八頁,共五十八頁,2022年,8月28日整型常量的類型在C語言中,在一個(gè)整型常量后加一個(gè)后綴符號(hào),指明整型常量的數(shù)據(jù)類型。(1)在一個(gè)整型常量后面加一個(gè)字母l或L,則認(rèn)為是長(zhǎng)整(longint)型常量。例如:123L、432L、0L等。(2)在一個(gè)整型常量后面加一個(gè)字母u或U,則認(rèn)為是無符號(hào)(unsignedint)整型常量。例如:54000u,表示十進(jìn)制無符號(hào)整數(shù)45000。(3)在一個(gè)整型常量后面加一個(gè)字母ul或UL,則認(rèn)為是無符號(hào)(unsignedlong)長(zhǎng)整型常量。例如:897000UL,表示十進(jìn)制無符號(hào)長(zhǎng)整數(shù)897000。第十九頁,共五十八頁,2022年,8月28日2.4實(shí)型數(shù)據(jù)實(shí)型常量的表示方法
C語言中的實(shí)數(shù)(realnumber)又叫做浮點(diǎn)數(shù)(floating-pointnumber),也就是實(shí)型常量,實(shí)數(shù)可以用兩種形式來表示:(1)十進(jìn)制小數(shù)形式十進(jìn)制小數(shù)形式即數(shù)學(xué)中常用的實(shí)數(shù)形式,由數(shù)字0~9和小數(shù)點(diǎn)組成,而且必須有小數(shù)點(diǎn),整數(shù)部分和小數(shù)部分可以省略。例如:0.125、127.、-256.0、.135、123.0、0.0等。第二十頁,共五十八頁,2022年,8月28日(2)指數(shù)形式指數(shù)形式類似于數(shù)學(xué)中的表達(dá)形式,由十進(jìn)制數(shù),加階碼標(biāo)志“e”或“E”以及階碼組成,而且階碼只能為整數(shù),可以帶符號(hào)。其一般形式為:
aEn其中,a為十進(jìn)制小數(shù)形式,E為階碼標(biāo)志,n是階碼,必須為整數(shù),可以帶符號(hào)。例如:123e3或1.23e5都代表123×103。第二十一頁,共五十八頁,2022年,8月28日實(shí)型變量1.實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式實(shí)型數(shù)據(jù)內(nèi)存中與整型數(shù)據(jù)的存儲(chǔ)方式不同,實(shí)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放,小數(shù)部分采用規(guī)范化的指數(shù)形式。一個(gè)實(shí)型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位)。第二十二頁,共五十八頁,2022年,8月28日2.實(shí)型變量的分類和定義在C語言中,實(shí)型變量分為三種:?jiǎn)尉?float)實(shí)型數(shù)、雙精度(double)實(shí)型數(shù)和長(zhǎng)雙精度型(longdouble)實(shí)型數(shù)。這三種類型所占的為數(shù)和數(shù)值范圍及有效為數(shù)如表2-2所示。第二十三頁,共五十八頁,2022年,8月28日3.實(shí)型數(shù)據(jù)的舍入誤差在計(jì)算機(jī)內(nèi)存中可以精確地存放一個(gè)整數(shù),不會(huì)出現(xiàn)誤差。但是對(duì)于實(shí)型變量,由于計(jì)算機(jī)的存儲(chǔ)單元有限,因此能提供的有效數(shù)字也是有限的,在有效位以外的數(shù)字都要舍去,由此可能會(huì)產(chǎn)生一些誤差?!纠}2.6】實(shí)型數(shù)據(jù)的舍入誤差。/*file2_6.c*/#include<stdio.h>voidmain(){ floatm,n; m=334567.2341E10; n=m+5; printf("單精度實(shí)型數(shù)占的字節(jié)數(shù)是:%d\n",sizeof(float)); printf("m=%f\nn=%f\n",m,n);}第二十四頁,共五十八頁,2022年,8月28日實(shí)型常量的類型
C編譯系統(tǒng)對(duì)實(shí)型常量不分float和double,而是都作為double(雙精度)來處理,這樣做可以使計(jì)算結(jié)果更精確。例如:定義一個(gè)實(shí)型變量p,有如下語句:
floatp;p=12.3456*4567.89;
系統(tǒng)先把12.3456和4567.89作為雙精度數(shù)據(jù)存儲(chǔ)(占64位)和進(jìn)行相乘運(yùn)算,得到一個(gè)雙精度數(shù)的乘積,然后取前7位賦給實(shí)型變量p,這樣運(yùn)算速度降低了。如果在數(shù)的后面加字母f或F(如12.3456f,4567.89F),這樣編譯系統(tǒng)就會(huì)按單精度(32位)處理。假如x已指定為單精度實(shí)型變量:
floatx;
x=333333.222;由于float型變量只能接收7位有效數(shù)字,因此最后兩位小數(shù)不起作用。如果x改為double型,則能全部接收上述9位數(shù)字并存儲(chǔ)在變量x中。第二十五頁,共五十八頁,2022年,8月28日2.5字符型數(shù)據(jù)字符型常量
1.字符常量在C語言中,用一對(duì)單引號(hào)(即撇號(hào))括起來的一個(gè)字符稱為字符常量。如‘a(chǎn)’、‘8’、‘#’、‘?’等都是字符常量。
C中的字符常量有以下特點(diǎn):
(1)字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其他符號(hào)。單引號(hào)只是起定界作用并不表示字符本身。單引號(hào)中的字符不能是單引號(hào)(‘)和反斜杠(\)。
(2)每個(gè)字符常量都有一個(gè)整數(shù)值,就是該數(shù)的ASCII碼值(參照附錄的ASCII表)。例如,‘U’的ASCII碼是85,八進(jìn)制數(shù)0102表示大寫字母‘B’,十六進(jìn)制數(shù)0x5d表示‘]’。第二十六頁,共五十八頁,2022年,8月28日(3)字符常量只能是單個(gè)字符,字符可以是字符集中的任意字符。(4)字符常量是區(qū)分大小寫的。例如:字符‘s’和‘S’的ASCII碼分別是115、83,因此,‘s’和‘S’是兩個(gè)不同的字符常量。2、轉(zhuǎn)義字符除了以上形式的字符常量外,C還允許用一種特殊形式的字符常量,就是以一個(gè)“\”開頭的字符序列,稱為轉(zhuǎn)義字符。轉(zhuǎn)義字符用來表示一些難以用一般形式表示的字符,常用的轉(zhuǎn)義字符如表2-3所示。第二十七頁,共五十八頁,2022年,8月28日【例題2.7】轉(zhuǎn)義字符的應(yīng)用。
/*file2_7.c*/#include<stdio.h>voidmain(){ printf("st\tud\ren\'t\'\n"); printf("h\tqq\rello\n");}第二十八頁,共五十八頁,2022年,8月28日字符型變量字符型變量的類型標(biāo)識(shí)符為char,內(nèi)存中分配1個(gè)字節(jié)。在對(duì)字符變量賦值時(shí),可以把字符常量(包括轉(zhuǎn)義字符)賦給字符變量。如:
charch1,ch2;/*定義字符型變量ch1和ch2*/ch1='a';/*給字符型變量ch1賦值*/ch2='\101';/*定義字符型變量ch2值為轉(zhuǎn)義字符,'\101'表示八進(jìn)制,即字符'A'*/
注意:一個(gè)字符變量只能放一個(gè)字符,不要認(rèn)為在一個(gè)字符變量中可以放一個(gè)字符串(包括若干字符)。第二十九頁,共五十八頁,2022年,8月28日【例題2.8】編程將“Hello”譯成密碼,密碼的規(guī)則是,用原來的字母后面第5個(gè)字母代替原來字母。例如,字母“A”后面第5個(gè)字母是“F”,用“F”代替“A”。第三十頁,共五十八頁,2022年,8月28日字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)是將字符的ASCII碼值以二進(jìn)制形式存放,占1個(gè)字節(jié)(8bit)。也就是說將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII碼放到存儲(chǔ)單元中?!纠}2.9】向字符型數(shù)據(jù)賦值?!纠}2.10】字母的大小寫轉(zhuǎn)換。第三十一頁,共五十八頁,2022年,8月28日字符串常量在C語言中,除了允許使用字符常量外,還允許使用字符串常量表示多個(gè)字符。字符串常量是一對(duì)雙引號(hào)括起來的零個(gè)或多個(gè)字符序列。如:
"helloeveryone"、"thisisastring"、"a"、"123.67adc"、""或""都是字符串常量。在這里的雙引號(hào)不是字符串的一部分,而只是充當(dāng)界限符。如果字符串常量中要出現(xiàn)雙引號(hào),則必須使用轉(zhuǎn)義字符來表示,即“\””表示,取消它原來的含義,而僅僅作為一個(gè)字符雙引號(hào)來使用??梢暂敵鲆粋€(gè)字符串,如:
printf("howareyou?");第三十二頁,共五十八頁,2022年,8月28日2.6各類數(shù)值數(shù)據(jù)間的混合運(yùn)算
整型(包括int,short,long)數(shù)據(jù)和實(shí)型(包括float,double)數(shù)據(jù)都是數(shù)值型數(shù)據(jù),字符型數(shù)據(jù)可以與整型通用,因此,整型、實(shí)型、字符型數(shù)據(jù)間可以進(jìn)行混合運(yùn)算。要實(shí)現(xiàn)混合運(yùn)算,就必須進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換的目的是:(1)將短的數(shù)擴(kuò)展成機(jī)器處理的長(zhǎng)度。(2)使得運(yùn)算符兩側(cè)的數(shù)據(jù)類型相同。例如:下面的表達(dá)式在C語言中是能夠通過類型轉(zhuǎn)換進(jìn)行計(jì)算的。
87.78+'t'+790.045*8-17.83
在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換的規(guī)則如圖2-11所示。第三十三頁,共五十八頁,2022年,8月28日2.7數(shù)據(jù)的輸入與輸出的概念輸入和輸出的概念是以計(jì)算機(jī)為中心而言的,當(dāng)數(shù)據(jù)從計(jì)算機(jī)中送出到外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤等)時(shí),稱為“輸出”;當(dāng)數(shù)據(jù)從外部輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)送到計(jì)算機(jī)時(shí),稱為“輸入”。
C語言中沒有提供專門的輸入與輸出語句,輸入與輸出操作是通過相關(guān)的庫函數(shù)來實(shí)現(xiàn)的。例如,printf函數(shù)和scanf函數(shù),不是由C語言提供的“輸入輸出語句”,而是在C標(biāo)準(zhǔn)函數(shù)庫中提供的輸入輸出函數(shù)。第三十四頁,共五十八頁,2022年,8月28日在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),應(yīng)包含的頭文件是stdio.h,即文件開頭應(yīng)有以下預(yù)編譯命令:#include<stdio.h>或#include"stdio.h"stdio.h是standardinput&output的縮寫,它包含了與標(biāo)準(zhǔn)I/O庫有關(guān)的變量定義和宏定義(有關(guān)預(yù)編譯命令見第8章)。第三十五頁,共五十八頁,2022年,8月28日2.8字符數(shù)據(jù)的輸入輸出2.8.1字符輸出函數(shù)功能:向終端輸出一個(gè)字符。一般調(diào)用形式為:
putchar(ch);其中,ch可以是字符型變量,也可以是整型變量,還可以使字符型常量或整型常量。例如:
charch='s';putchar('c');/*輸出字符'c'*/putchar('\101');/*輸出轉(zhuǎn)義字符對(duì)應(yīng)的字符'A'*/putchar(97);/*輸出字符'a'*/putchar(ch+2);/*輸出字符'u'*/第三十六頁,共五十八頁,2022年,8月28日【例題2.11】使用putchar函數(shù)輸出字符/*file2_11.c*/#include<stdio.h>voidmain(){charch1,ch2,ch3,ch4;ch1='g';ch2='i';ch3='r';ch4='l';putchar(ch1);putchar(ch2);putchar(ch3);putchar(ch4);putchar('\n');}第三十七頁,共五十八頁,2022年,8月28日字符輸入函數(shù)功能:從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)沒有參數(shù),函數(shù)的值就是從輸入設(shè)備得到的字符。一般調(diào)用形式為:
ch=getchar();其中,ch是字符型變量,函數(shù)執(zhí)行是等待從鍵盤輸入一個(gè)字符,當(dāng)用戶輸入一個(gè)字符后,函數(shù)值就是所輸入的字符常量,然后,將此值賦給ch.【例題2.12】鍵盤輸入一個(gè)小寫字符,將其轉(zhuǎn)換成大寫并輸出?!纠}2.13】連續(xù)使用getchar()時(shí)應(yīng)注意的問題。第三十八頁,共五十八頁,2022年,8月28日2.9格式輸入與輸出
格式輸出函數(shù)在C語言中,輸出是最基本的操作,基本每一個(gè)程序都包含輸出。在前面幾章節(jié)中已用到printf()函數(shù),它的作用是向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)。與putchar()函數(shù)相比,printf()可以輸出多個(gè)數(shù)據(jù),且為任意類型;putchar()只能輸出字符,而且只能是一個(gè)字符。1、printf()函數(shù)的一般格式功能:按某種格式,向輸出設(shè)備輸出若干個(gè)指定類型的數(shù)據(jù)。一般調(diào)用形式為:
printf("格式控制",輸出項(xiàng)列表);例如:printf("%d,%c",t,ch);第三十九頁,共五十八頁,2022年,8月28日說明:(1)“格式控制”是用雙引號(hào)括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,它包括兩種信息:①普通字符(包括轉(zhuǎn)移控制字符),將原樣輸出。格式控制中的普通字符原樣輸出。例如:
printf("helloworld!");
該例輸出普通字符串:helloworld!②格式說明,是以“%”開始,以一個(gè)格式字符結(jié)束,中間可以插入附加說明符,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出,其一般形式為:
%[附加說明符]格式字符
printf()函數(shù)的格式字符和常用的附加說明符分別如表2-5和2-6所示。第四十頁,共五十八頁,2022年,8月28日(2)“輸出表列”是需要輸出的一些數(shù)據(jù),可以沒有。輸出列表中的輸出項(xiàng)可以是常量、變量或表達(dá)式。當(dāng)有兩個(gè)或兩個(gè)以上輸出項(xiàng)時(shí),要用逗號(hào)(,)分隔。第四十一頁,共五十八頁,2022年,8月28日【例題2.14】printf()函數(shù)使用舉例/*file2_14.c*/#include<stdio.h>voidmain(){intm,n;charc='D';floatf=124.78f;m=6;n=8;printf("m=%d,n=%d\n",m,n);printf("m=%dn=%d\n",m,n);printf("c=%c,f=%f\n",c,f);}第四十二頁,共五十八頁,2022年,8月28日2、printf函數(shù)的格式字符下面對(duì)表2-5中所列的格式字符作進(jìn)一步說明。(1)d格式符。以帶符號(hào)的十進(jìn)制輸出整數(shù)。有以下幾種用法:①%d:按十進(jìn)制整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。②%md:m為指定的輸出字段的寬度。③%ld:用于輸出長(zhǎng)整型數(shù)據(jù)。【例題2.15】d格式符的用法。(2)o格式符:表示以八進(jìn)制數(shù)格式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值(0或1)按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號(hào),即將符號(hào)位也一起作為八進(jìn)制數(shù)的一部分輸出。八進(jìn)制格式輸出結(jié)果時(shí),并不在數(shù)據(jù)結(jié)果前面加0,如果想在結(jié)果中輸出前導(dǎo)0,可以通過添加附加格式符“#”實(shí)現(xiàn)。第四十三頁,共五十八頁,2022年,8月28日【例題2.16】八進(jìn)制輸出整數(shù)。/*fiel2_16.c*/#include<stdio.h>voidmain(){inti,j;
i=9;j=-1;printf("i=%o,i=%4o\n",i,i);printf("i=%#o,i=%#4o\n",i,i);
printf("j=%o\n",j);}第四十四頁,共五十八頁,2022年,8月28日
(3)x格式符:表示以十六進(jìn)制數(shù)格式輸出整數(shù)。同樣不會(huì)出現(xiàn)負(fù)的十六進(jìn)制數(shù)。十六進(jìn)制格式輸出結(jié)果時(shí),并不在數(shù)據(jù)結(jié)果前面加0x,如果想在結(jié)果中輸出前導(dǎo)0x,可以通過添加附加格式符“#”實(shí)現(xiàn)。【例題2.17】用十六進(jìn)制輸出整數(shù)。第四十五頁,共五十八頁,2022年,8月28日
(4)u格式符:用來以十進(jìn)制形式輸出無符號(hào)數(shù)(unsigned型),例如地址值。對(duì)于一個(gè)有符號(hào)整數(shù)(int型),也可以用%u格式輸出。如果有符號(hào)數(shù)是正數(shù),可以按照實(shí)際的大小輸出;如果有符號(hào)數(shù)是負(fù)數(shù),則在輸出時(shí),符號(hào)位可以看作是數(shù)值位,所以負(fù)數(shù)的補(bǔ)碼會(huì)看作是正數(shù)的補(bǔ)碼(即正數(shù)的原碼)。一個(gè)unsigned型數(shù)據(jù)也可用%d、%o或%x格式輸出?!纠}2.18】整型數(shù)據(jù)格式符的用法。第四十六頁,共五十八頁,2022年,8月28日(5)c格式符:用來輸出一個(gè)字符。如果一個(gè)整數(shù)的值在0~255之間,也可以以字符形式輸出,系統(tǒng)會(huì)把整數(shù)值轉(zhuǎn)換為相應(yīng)的ASCII碼,并輸出相應(yīng)的字符。反之,一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出?!纠}2.19】字符的輸出。第四十七頁,共五十八頁,2022年,8月28日
(6)s格式符:用來輸出一個(gè)字符串??梢灾苯邮褂?s輸出字符串或者字符串常量,也可以加修飾符。通常有以下幾種用法:①%s,按照正常方式輸出字符串實(shí)際字符。②%ms,輸出的字符串占m列,如字符串本身長(zhǎng)度大于m,則突破m的限制,將字符串全部輸出。若串長(zhǎng)小于m,則左補(bǔ)空格。③%-ms,如果串長(zhǎng)小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。④%m.ns,輸出占m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格。⑤%-m.ns,其中m、n含義同上,n個(gè)字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則m自動(dòng)取n值,即保證n個(gè)字符正常輸出。
【例題2.20】字符串的輸出。第四十八頁,共五十八頁,2022年,8月28日(7)f格式符:用來輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。通常有以下幾種用法:①%f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部輸出,并輸出6位小數(shù)。應(yīng)當(dāng)注意,在輸出的數(shù)字中并非全部數(shù)字都是有效數(shù)字。單精度實(shí)數(shù)的有效位數(shù)一般為7位;雙精度數(shù)也可用%f格式輸出,它的有效位數(shù)一般為17位,給出小數(shù)6位?!纠}2.21】實(shí)型數(shù)據(jù)的有效數(shù)字位數(shù)。第四十九頁,共五十八頁,2022年,8月28日(8)e格式符:以指數(shù)形式輸出實(shí)數(shù)。通常有以下幾種用法:①%e不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分的小數(shù)位數(shù),有的C編譯系統(tǒng)自動(dòng)指定給出6位小數(shù),指數(shù)部分占5位(如e+002),其中“e”占1位,指數(shù)符號(hào)占1位,指數(shù)占3位。數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字)。例如
printf("%e",123.456);輸出:1.234560e+002。輸出的實(shí)數(shù)共占13列寬度。(注:不同系統(tǒng)的規(guī)定略有不同)②%m.ne和%-m.ne。m、n和“-”字符含義與前相同。此處n指擬輸出的數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。
【例題2.23】以指數(shù)形式輸出浮點(diǎn)數(shù)。第五十頁,共五十八頁,2022年,8月28日(9)g格式符:用來輸出實(shí)數(shù),它根據(jù)數(shù)值的大小,自動(dòng)選f格式或e格式(選擇輸出時(shí)占寬度較小的一種),且不輸出無意義的零?!纠}2.24】演示g格式。/*file2_24.c*/#include<stdio.h>voidmain(){ floatf; f=123.456; printf("以不格式輸出實(shí)數(shù):\n");printf("%f,%e,%g",f,f,f);}第五十一頁,共五十八頁,2022年,8月28日2.9.2格式輸入函數(shù)
C語言的數(shù)據(jù)輸入也是由函數(shù)語句完成的,前面介紹過getchar()函數(shù),用于輸入一個(gè)字符,本節(jié)介紹的scanf()函數(shù)可以用來輸入任何類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 線上課程設(shè)計(jì) 動(dòng)畫
- 藥學(xué)課程設(shè)計(jì)指南
- 機(jī)設(shè)課程設(shè)計(jì)的模板
- 網(wǎng)絡(luò)服務(wù)器配置課程設(shè)計(jì)
- 捅馬蜂窩課程設(shè)計(jì)
- 智能可穿戴手表課程設(shè)計(jì)
- 2024年職業(yè)生涯規(guī)劃教案篇
- 藥品檢驗(yàn)類課程設(shè)計(jì)論文
- 2024年移動(dòng)智慧家庭工程師(高級(jí))資格認(rèn)證考試題庫-上(選擇題)
- 物流運(yùn)輸行業(yè)營銷工作總結(jié)
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 企業(yè)反恐專項(xiàng)經(jīng)費(fèi)保障制度
- 電梯工程師在電梯設(shè)計(jì)中的工作內(nèi)容
- 《概率論與數(shù)理統(tǒng)計(jì)基礎(chǔ)》全套教學(xué)課件
- 2024國家開放大學(xué)電大本科《液壓氣動(dòng)技術(shù)》期末試題及答案
- 肥豬銷售合同模板
- 餐飲顧問合作協(xié)議
- 新教材牛津譯林版高中英語必修第二冊(cè)全冊(cè)各單元重點(diǎn)語法精講
- 兩課 說課 單相橋式整流電路分析(獲獎(jiǎng))
- 中國移動(dòng)《下一代全光骨干傳送網(wǎng)白皮書》
- 消費(fèi)者行為學(xué)智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
評(píng)論
0/150
提交評(píng)論