版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第二章數(shù)據(jù)描述與基本操作
本章學(xué)習(xí)重點:
C語言的基本數(shù)據(jù)類型;
C語言的變量與常量;
運算符與表達(dá)式以及數(shù)據(jù)類型的轉(zhuǎn)換;
掌握條件編譯的格式及使用方法。本章目錄第二講基本數(shù)據(jù)類型、變量與常量第三講運算符與表達(dá)式、數(shù)據(jù)類型的轉(zhuǎn)換第四講數(shù)據(jù)的輸入與輸出本章小結(jié)結(jié)束第二講基本數(shù)據(jù)類型、變量與常量基本數(shù)據(jù)類型、變量與常量練一練本講小結(jié)返回到本章目錄基本數(shù)據(jù)類型、變量與常量【思考題2-1】
已知一個圓的半徑,求這個圓的周長和面積。
(一)程序分析:如果我們用r代表圓的半徑,用l代表圓的周長,用s代表圓的面積,用PI代表圓周率π,那么圓的周長公式是l=2πr,圓的面積公式是s=πrr。在這兩個公式里,PI是圓周率,固定不變的,而半徑是可變的,則圓的周長與圓的面積也是可變的,那么,這些元素如何在C語言里進(jìn)行說明并表示出來?這就是我們這一講要重點講述的內(nèi)容。
返回到本章目錄(二)編寫程序代碼如下:#include"stdio.h"/*文件包含命令*/#definePI3.14/*定義符號常量圓周率π*/main(){intr;/*定義圓的半徑r*/floatarea,length;/*定義圓的面積s和周長l,為單精度浮點型*/r=3;/*為半徑變量r設(shè)置初始值*/length=2*PI*r;/*計算圓周長,并把結(jié)果賦值給l*/area=PI*r*r;/*計算圓的面積,并把結(jié)果賦值給s*/
printf("r=%d\nlength=%f\narea=%f\n",r,length,area);/*輸出運算結(jié)果*/}
返回到本章目錄(三)調(diào)試程序及運行結(jié)果按“Ctrl+F9”鍵,對程序進(jìn)行編譯,然后按“Alt+F5”鍵查看結(jié)果,程序運行結(jié)果如下所示:返回到本章目錄1.標(biāo)識符(1)所謂標(biāo)識符,是指用來標(biāo)識程序中用到的變量、函數(shù)、類型、數(shù)組、文件以及符號常量等的有效字符序列。簡言之,標(biāo)識符就是一個名字。C語言中的標(biāo)識符可以分為三類:即關(guān)鍵字、預(yù)定義標(biāo)識符和用戶自定義標(biāo)識符。返回到本章目錄(1)關(guān)鍵字(32個)關(guān)鍵字又稱保留字,是C語言規(guī)定的具有特定意義的標(biāo)識符,它已被TurboC2.0本身使用,不能作其它用途使用,每個關(guān)鍵字都有固定的含義。C語言的關(guān)鍵字分為以下四類:①標(biāo)識數(shù)據(jù)類型的關(guān)鍵字(14個)
int,long,short,char,float,double,signed,unsigned,struct,union,enum,void,volatile,const②標(biāo)識存儲類型的關(guān)鍵字(5個)auto,static,register,extern,typedef返回到本章目錄③標(biāo)識流程控制的關(guān)鍵字(12)個
goto,return,break,continue,if,else,while,do,for,switch,case,default④標(biāo)識運算符的關(guān)鍵字(1個)
sizeof例如【思考題2-1】程序中的“float”就是數(shù)據(jù)類型的關(guān)鍵字,它表示單精度浮點型數(shù)據(jù)。返回到本章目錄(2)預(yù)定義標(biāo)識符預(yù)定義標(biāo)識符是一類具有特殊含義的標(biāo)識符,用于標(biāo)識庫函數(shù)名和編譯預(yù)處理命令。系統(tǒng)允許用戶把這些標(biāo)識符另作它用,但這將使這些標(biāo)識符失去系統(tǒng)規(guī)定的原意,為了避免誤解,建議不要將這些預(yù)定義標(biāo)識符另作它用。返回到本章目錄C語言中常見的有以下幾種:①編譯預(yù)處理命令define,ifdef,ifndef,endif,include,line,if,else等例如【思考題2-1】程序中的“include”和“define”就是兩個預(yù)定義標(biāo)識符,要在其前面加“#”號,一般寫在主函數(shù)main的上面。②標(biāo)準(zhǔn)庫函數(shù)包括數(shù)學(xué)函數(shù):sqrt,fabs,sin,pow等,還有輸入輸出函數(shù):scanf,printf,getchar,putchar,gets,puts等。例如思考題例程中的“printf”就是一個輸出函數(shù),通過這個函數(shù)可以把結(jié)果在顯示器上顯示出來。返回到本章目錄(3)用戶定義標(biāo)識符用戶定義標(biāo)識符是程序員根據(jù)自己的需要定義的用于標(biāo)識變量、函數(shù)、數(shù)組等的一類標(biāo)識符。用戶在定義標(biāo)識符時應(yīng)符合C語言標(biāo)識符的命名規(guī)則。在C語言中,標(biāo)識符的命名規(guī)則如下:①只能由字母、數(shù)字和下劃線三種字符組成。②第一個字符必須為字母或下劃線。例如【思考題2-1】程序中的“PI,r,l,s“就是用戶自己定義的標(biāo)識符,只要符合C語言標(biāo)識符的命名規(guī)則即為合法。返回到本章目錄1.基本數(shù)據(jù)類型返回到本章目錄類型說明內(nèi)存單元個數(shù)取值范圍char字符型1(8位)-128~127即-27
~(27-1)unsignedchar無符號字符型1(8位)0~255即0~(28-1)signedchar有符號字符型1(8位)-128~127即-27~(27-1)int整型2(16位)-32768~32767即-215~(215-1)unsignedint無符號整型2(16位)0~65535即0~(216-1)signedint有符號整型2(16位)-32768~32767即-215~(215-1)shortint短整型2(16位)-32768~32767即-215~(215-1)unsignedshortint無符號短整型2(16位)0~65535即0~(216-1)signedshortint有符號短整型2(16位)-32768~32767即-215~(215-1)longint長整型4(32位)-2147483648~2147483647即-231~(231-1)unsignedlongint無符號長整型4(32位)0~4294967295即0~(232-1)signedlongint有符號長整型4(32位)-2147483648~2147483647即-231~(231-1)float單精度實型4(32位)-3.4E+38~3.4E+38double雙精度實型8(64位)-1.7E+308~1.7E+308返回到本章目錄重點:類型的關(guān)鍵字及范圍3.變量(所謂變量,是指在程序運行過程中其值可以改變的量。一個變量應(yīng)該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元。變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。
變量定義的格式如下:存儲類型符數(shù)據(jù)類型符變量名表;返回到本章目錄說明:①存儲類型符用來說明變量的存儲類型,存儲類型可以是自動類型(auto),寄存器類型(register)、靜態(tài)類型(static)、外部類型(extern),默認(rèn)為自動類型(auto),如果對存儲類型未做任何說明,則按默認(rèn)的自動類型處理。②數(shù)據(jù)類型符用來說明變量的數(shù)據(jù)類型,數(shù)據(jù)類型可以是C語言中任意一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型標(biāo)識符。選擇最合適的。③變量名表中可以只有一個變量,也可以有多個變量,如果有多個變量,變量之間用逗號隔開。返回到本章目錄(2)變量的賦值定義變量后,在使用之前需要給定一個初始值。在C語言中,可以通過賦值運算符“=”給變量賦值。變量賦值語句的一般格式是:變量名=表達(dá)式;返回到本章目錄變量的賦值,一般有以下兩種情況:①先定義變量,后賦值。如【思考題2-1】程序開頭的部分代碼:intr;……r=1;②變量的初始化。
在定義變量的同時為其賦值,稱為變量的初始化。定義的變量可以全部初始化,也可以部分初始化。對于上面的程序段我們也可以這樣寫:intr=1;即定義了整型變量r的同時,對其賦初值為1。返回到本章目錄賦值的注意事項在給變量賦值時,應(yīng)注意以下幾個問題:①變量在某一時刻只有一個確定的值,變量獲得新值后,其原值將不再存在。例如:intr;……r=1;r=2;該程序執(zhí)行后,變量r的值是2,而不是1。②定義多個同類型變量時,如果給所有變量賦同一個值,只能逐個處理。如有三個整型變量x,y,z,且初值均為10,可以寫成下面的形式:intx=10,y=10,z=10;③如果變量的類型與所賦數(shù)據(jù)的類型不一致,所賦數(shù)據(jù)將被轉(zhuǎn)換成與變量相同的類型。例如,下面的定義是合法的:intx=10.5;longy=99;該程序執(zhí)行后,變量x的值是整數(shù)10(只將整數(shù)部分賦給變量x),變量y的值是長整數(shù)99。返回到本章目錄常量又稱常數(shù),是指在程序運行過程中其值不能改變的量。C語言中的常量又分字面常量和符號常量。字面常量又稱直接常量,就是常說的常數(shù)。字面常量可以分為不同的類型:
整型常量、實型常量、字符型常量與字符串常量。
4.常量返回到本章目錄(1)整型常量整型常量又稱整數(shù),在C語言中,整數(shù)可以用三種數(shù)制來表示:①十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒有前綴。其數(shù)碼為0~9。②八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為0~7。八進(jìn)制數(shù)通常是無符號數(shù)。③十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為0~9,A~F或a~f。④整型常數(shù)的后綴:在16位字長的機器上,基本整型的長度也為16位,因此表示數(shù)的范圍也是有限定的。返回到本章目錄0XA0,07,7(2)實型(浮點型)常量實型也稱為浮點型,實型常量也稱為實數(shù)或者浮點數(shù)。在C語言中,實數(shù)只采用十進(jìn)制。它有兩種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。①十進(jìn)制小數(shù)形式。小數(shù)形式是由數(shù)碼0~9和小數(shù)點組成(注意:必須有小數(shù)點)。例如:6.789,.789,6.,0.0都是十進(jìn)制小數(shù)形式的合法表示。②指數(shù)形式。指數(shù)形式又稱科學(xué)計數(shù)法。由十進(jìn)制小數(shù)加上階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號)組成。其一般形式為:其中a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù),其值為a*10n。aEn
返回到本章目錄(3)字符型常量①字符常量的定義字符常量是用單引號括起來的一個字符。例如:'a','A','@','?'等。②字符常量的特點:字符常量只能用單引號括起來,不能用雙引號或其它括號。單引號只是字符與其它符號的分隔符,或者說是字符常量的定界符,不是字符常量的一部分,當(dāng)輸出一個字符常量時不輸出此單引號。字符常量只能是單個字符,不能是多個字符。字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。如'5'和5是不同的。'5'是字符常量,不能參與運算。返回到本章目錄③字符型數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法每個字符變量被分配一個字節(jié)的內(nèi)存空間,因此只能存放一個字符。返回到本章目錄(4)字符串常量①字符串常量的定義字符串常量是用一對雙引號括起來的零個或多個字符序列。如:"hello","","abc","123"等。字符串以雙引號為定界符,但雙引號并不屬于字符串。要在字符串中插入雙引號,應(yīng)該借助轉(zhuǎn)義字符'\"'才行。字符串的長度等于字符串中包含的字符個數(shù)。例如字符串"hello"的長度為5個字符。返回到本章目錄②字符常量與字符串常量的區(qū)別字符常量由單引號括起來,字符串常量由雙引號括起來。字符常量只能是單個字符,字符串常量則可以含一個或多個字符。可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。在C語言中沒有相應(yīng)的字符串變量。這是與BASIC語言不同的。但是可以用一個字符數(shù)組來存放一個字符串常量。在數(shù)組一章內(nèi)予以介紹。字符常量占一個字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個字節(jié)中存放字符'\0'(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志。返回到本章目錄(5)符號常量在C語言中,也可以用一個標(biāo)識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:符號常量的特點是:①習(xí)慣上符號常量的標(biāo)識符用大寫字母,變量標(biāo)識符用小寫字母,以示區(qū)別。②符號常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。使用符號常量的好處是:含義清楚,并且能做到“一改全改”。#define標(biāo)識符常量返回到本章目錄【練習(xí)2-1】請判斷下列哪些用戶自定義標(biāo)識符是合法的?()A)a&b,1_xy,e5,a.bB)exam,x1,int,defineC)ram,_mn,3ep,x*yD)ch,x_3_1,z2,num解:因為標(biāo)識符只能由英文大小寫字母,數(shù)字和下劃線三種字符組成,且開頭字母只能由字母和下劃線組成。所以只有D中的所有標(biāo)識符是正確的。注意用戶自定義標(biāo)識符不能是系統(tǒng)的保留字(關(guān)鍵字),而C語言中的int和define是關(guān)鍵字,不能做標(biāo)識符,也是錯誤的?!揪毩?xí)2-2】下面哪個是合法的字符串常量()
A)'a'B)'\076'C)"Hello"D)Hello解:因為字符常量是用一對單引號引起來的一個字符,字符串是用一對雙引號引起來的零個或多個字符序列。所以必須得有一對雙引號,里面可以有n(n≥0)個字符的序列。所以選擇C。而A和B都是字符常量,D可以是一個標(biāo)識符。練一練返回到本章目錄【練習(xí)2-3】下面哪個表示浮點數(shù)的科學(xué)計數(shù)表示法是正確的?()
A)3e2.5B)1.25eC)3.45e-5D)e+8解:因為科學(xué)計數(shù)法有兩點要求:(1)e或E前后必須有數(shù)字,(2)e或E后的數(shù)字必須是整數(shù)。所以答案C是正確的。A錯誤在于e后的數(shù)字為小數(shù),B錯誤在于e后沒有數(shù)字,D錯誤在于e前面沒有數(shù)字?!揪毩?xí)2-4】下面的變量定義及初始化語句哪個是正確的?()A)inta=3;b=5;B)inta=3b=5C)inta=3,b=5;D)inta==3,b==5;解:因為變量定義及初始化語句格式是:類型符變量名1=初值1,變量名2=初值2,……;各變量之間用逗號分隔,語句結(jié)束標(biāo)志為分號“;”變量初始化的賦值運算符為“=”,所以正確答案為C。
返回到本章目錄本講小結(jié)本次課主要介紹基本標(biāo)識符的定義及其分類情況,C語言的數(shù)據(jù)類型及各代表符號,運算符的使用,變量的定義、初始化、賦值,常量的定義與應(yīng)用。返回到本章目錄練習(xí)返回到本章目錄第三講 運算符與表達(dá)式、數(shù)據(jù)類型的轉(zhuǎn)換一、
算術(shù)運算與賦值運算二、關(guān)系運算、邏輯運算與條件運算三、圓括號運算符、逗號運算符和sizeof運算符練一練本章小節(jié)返回到本章目錄第三講 運算符與表達(dá)式、數(shù)據(jù)類型的轉(zhuǎn)換要求:熟悉各種運算符及作用; 在將來使用時有據(jù)可查。返回到本章目錄一、算術(shù)運算與賦值運算【思考題2-2】有兩個變量x、y,x的初始值為9,y的初始值為4,分別求出x與y的和、差、積、商與余數(shù)。(一)程序分析通過上一講中我們講了變量的聲明與初始化,可以對變量x與y進(jìn)行聲明與初始化,用變量a、b、c、d、e分別表示x與y的和、差、積、商與余數(shù)。返回到本章目錄(二)編寫程序代碼main(){intx=9,y=4,a,b,c,d,e;a=x+y;b=x-y;c=x*y;d=x/y;e=x%y;printf("x+y=%d\nx-y=%d\nx*y=%d\nx/y=%d\nx%%y=%d\n",a,b,c,d,e);}返回到本章目錄(三)調(diào)試程序及運行結(jié)果程序運行結(jié)果如下:返回到本章目錄(1)x/y的結(jié)果為2,而不是2.25,這是因為“/”號在C語言中的除法有兩種運算:
如果兩個運算符都為整型變量時,結(jié)果為舍去取整。
如果兩個運算符中有一個為小數(shù)(即浮點型變量)時,結(jié)果為正常的小數(shù)。(2)輸出“x%y”時,輸出的格式“x%%y=%d”。因為“%”為格式化輸入輸出時的起始字符,所以要在屏幕上輸出“%”可以連續(xù)打兩個“%”,就可以在屏幕上顯示一個“%”字符。返回到本章目錄1.算術(shù)運算符及算術(shù)表達(dá)式運算符名稱運算類型示例功能+正號運算符單目運算符+5取正數(shù)5-負(fù)號運算符單目運算符-5取負(fù)數(shù)5+加法運算符雙目運算符a+b求a與b之和-減法運算符雙目運算符a-b求a與b之差*乘法運算符雙目運算符a*b求a與b之積/除法運算符雙目運算符a/b求a與b之商%求余運算符雙目運算符a%b求a除以b的余數(shù)++自增運算符單目運算符++a將a的值加1--自減運算符單目運算符--a將a的值減1返回到本章目錄(1)求余運算符“%”又稱取模運算符,要求“%”的兩側(cè)必須為整型數(shù),它的作用是取兩個整型數(shù)相除的余數(shù),余數(shù)的符號與被除數(shù)的符號相同。例如【思考題2-2】中的e=x%y,x的值為9,y的值為4,因此e=x%y即相當(dāng)于e=9%4,它的結(jié)果是1?,F(xiàn)在假設(shè)x的值為-9,則-9%4的結(jié)果就是-1,如果x不變,y為-4,則-9%-4的結(jié)果是-1。返回到本章目錄(2)除法運算符“/”當(dāng)兩個操作數(shù)都是整數(shù)時,運算的結(jié)果是整數(shù)(舍去取整),即表示“整除”。如果參加運算的兩個數(shù)中有一個是實數(shù),則結(jié)果是實數(shù)。在【思考題2-2】中,x與y分別是9和4,是兩個整數(shù),x/y的結(jié)果是2,那么,如果把x定義為:floatx=9.0,則x/y的結(jié)果就變?yōu)?.250000。返回到本章目錄(3)自增運算符“++”或自減運算符“--”自增運算符“++”或自減運算符“--的作用是使運算對象的值增1或減1。它們既可以作前綴運算符(位于運算對象的前面),例如++x和—x,也可以作后綴運算符(位于運算對象的后面),例如x++和x--。++x表示x=x+1返回到本章目錄使用自增運算符或自減運算符,應(yīng)注意以下幾個問題:①使用自增或自減運算符只適合用于整型或字符型變量,而不能用于常量或表達(dá)式。例如(x+y)++和++9都是不合法的。返回到本章目錄②自增或自減運算符,通常用于循環(huán)語句中,使循環(huán)語句的值加1或減1,也可以用于指針變量,使指針變量指向下一個地址或前一個地址。③在只需對變量本身進(jìn)行加1或減1而不考慮表達(dá)式值的情況下,前綴運算和后綴運算的效果完全相同,否則,結(jié)果是有不一樣的:返回到本章目錄④自增(減)運算符的結(jié)合性是“自右向左”。例:inti=2,j;
j=-i++;運行結(jié)果是什么?返回到本章目錄2.賦值運算符與賦值表達(dá)式“=”是C語言的賦值運算符,在【思考題2-2】中,語句a=x+y中“=”就是賦值符號,而不是我們數(shù)學(xué)意義上的“等于號”,數(shù)學(xué)上的“等于號”(相當(dāng)于關(guān)系運算符中的“比較等于”)在C語言中用“==”表示。C語言允許在賦值運算符“=”之前加上其他運算符,構(gòu)成復(fù)合賦值運算符。C語言共有10種復(fù)合賦值運算符,如下表所示:返回到本章目錄名稱運算符示例等價于加賦值運算符+=a+=ba=a+b減賦值運算符-=a-=ba=a-b乘賦值運算符*=a*=ba=a*b除賦值運算符/=a/=ba=a/b取余賦值運算符%=a%=ba=a%b位與賦值運算符&=a&=ba=a&b位或賦值運算符|=a|=ba=a|b異或賦值運算符∧=a∧=ba=a∧b左移賦值運算符<<=a<<=ba=a<<b右移賦值運算符>>=a>>=ba=>>b返回到本章目錄注意:(1)賦值運算符和復(fù)合賦值運算符的結(jié)合方向均為從右到左,優(yōu)先級只高于逗號運算符,而比其他運算符的優(yōu)先級都低。例如:表達(dá)式x*=y+2等價于x=x*(y+2)。賦值表達(dá)式是由賦值運算符“=”將一個變量和表達(dá)式連接起來的式子。賦值表達(dá)式的一般格式為:(2)賦值運算符左邊必須是變量。賦值表達(dá)式的值就是被賦值后的變量值。如果一個語句中出現(xiàn)多個復(fù)合賦值表達(dá)式時,從右向左依次進(jìn)行賦值。變量名=表達(dá)式返回到本章目錄注意:如果一個語句中出現(xiàn)多個復(fù)合賦值表達(dá)式時,從右向左依次進(jìn)行賦值。例:inta=12;
a+=a-=a*=a 求a的值。返回到本章目錄二、關(guān)系運算、邏輯運算與條件運算【思考題2-3】輸入一個字母,判斷它是否是小寫字母,若是則轉(zhuǎn)換成大寫字母,否則不轉(zhuǎn)換,并輸出所得的結(jié)果。(一)程序分析在輸入一個字符時,先判斷它的取值區(qū)間,如果是大寫字母“A~Z”,則它的ASCII值是65~90,如果是小寫字母“a~z”的ASCII碼值是97~122,大小寫字母ASCII碼的差值為32,因此半小寫字母轉(zhuǎn)換成大寫字母只需將其ASCII碼減去32即可,反之將大寫字母轉(zhuǎn)換成小寫字母只需將其ASCII碼加上32即可。返回到本章目錄(二)編寫程序代碼main(){charc;/*定義變量c為字符數(shù)據(jù)類型*/
printf("\ninputchar:");
scanf("%c",&c);/*輸入字符c*/c=(c>='a'&&c<='z')?c-32:c;/*若c在'a'~'z'范圍內(nèi),轉(zhuǎn)換成大寫字母*/
printf("\noutput
char:%c\n",c);/*輸出轉(zhuǎn)變后的結(jié)果c*/}(三)調(diào)試運行程序程序運行結(jié)果如下:返回到本章目錄3.關(guān)系運算與關(guān)系表達(dá)式C語言的關(guān)系運算符表運算符名稱運算類型示例功能<小于運算符雙目運算符a<b判斷a是否小于b<=小于等于運算符雙目運算符a<=b判斷a是否小于等于b>大于運算符雙目運算符a>b判斷a是否大于b>=大于等于運算符雙目運算符a>=b判斷a是否大于等于b==等于運算符雙目運算符a==b判斷a和b是否相等!=不等于運算符雙目運算符a!=b判斷a和b是否不相等返回到本章目錄使用關(guān)系運算符時,應(yīng)注意以下幾個問題:(1)在上述6個運算符中,前4個運算符的優(yōu)先級高于后兩個運算符的優(yōu)先級。(2)應(yīng)將等于關(guān)系運算符“==”與賦值運算符“=”相區(qū)別?!?=”是關(guān)系運算符,用于比較運算,而“=”是賦值運算符,用于賦值運算。(3)關(guān)系運算符的優(yōu)先級低于算術(shù)運算符而高于賦值運算符。它們的結(jié)合性是自左至右。返回到本章目錄例:charc=‘d’;intm=2,n=5;求下列表達(dá)式的值:(1)c+1==‘e’(2)c+‘A’-’a’!=‘D’(3)m-2*n<=n+9(4)m==2<n返回到本章目錄4.邏輯運算符與邏輯表達(dá)式
C語言的邏輯運算符及功能
運算符名稱運算類型示例功能!邏輯非單目運算符!a若a為真,則!a為假,否則!a為真&&邏輯與雙目運算符a&&b若a,b均為真,則a&&b為真,否則a&&b為假|(zhì)|邏輯或雙目運算符a||b若a,b均為假,則a||b為假,否則a||b為真返回到本章目錄使用邏輯運算符,應(yīng)注意以下幾個問題:(1)三個邏輯運算符的優(yōu)先次序為:!(邏輯非)→&&(邏輯與)→||(邏輯或),即邏輯非“!”最高,邏輯與“&&”次之,邏輯或“||”最低。(2)邏輯非“!”的優(yōu)先級高于算術(shù)運算符,邏輯與“&&”和邏輯或“||”的優(yōu)先級低于算術(shù)運算符和關(guān)系運算符,高于賦值運算符。在c>='a'&&c<='z'中,就要先進(jìn)行“c>='a'”和“c<='z'”的關(guān)系運算,再進(jìn)行邏輯與運算。(3)邏輯運算符中邏輯非“!”的結(jié)合方向是自右至左,邏輯“&&”和邏輯或“||”的結(jié)合方向是自左至右。返回到本章目錄邏輯運算的真假值表ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假返回到本章目錄5.條件運算符與條件表達(dá)式條件運算符是由字符“?”和“:”組成的,要求有三個運算對象,是C語言中惟一的三目運算符。條件運算符的優(yōu)先級高于賦值運算和逗號運算符,而低于其他運算符。其結(jié)合性為自右至左。條件表達(dá)式是由條件運算符將運算對象連接起來的式子。它的一般格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3返回到本章目錄條件表達(dá)式的求解過程為:先求解表達(dá)式1,若表達(dá)式的值為1(真),則求解表達(dá)式2,并將其作為整個表達(dá)式的值;如表達(dá)式的值為0(假),則求解表達(dá)式3,并將其作為整個表達(dá)式的值。P29思考題。三、圓括號運算符、逗號運算符和sizeof運算符
【思考題2-4】設(shè)a,b,c三個整數(shù)變量,初始值分別為1、2和3,計算a*(b+c)的值,要求使用逗號運算符來寫出表達(dá)式。(一)程序分析在這個數(shù)學(xué)算式中,應(yīng)該先計算b+c的值,再將和與a相乘,最后輸出結(jié)果。我們將賦值表達(dá)式和計算表達(dá)式都寫在一起,構(gòu)成逗號表達(dá)式,并將這個表達(dá)式的結(jié)果賦給變量s,注意書寫格式和最后賦值是哪個表達(dá)式。返回到本章目錄(二)編寫程序代碼main(){int
s,a,b,c;s=(a=1,b=2,c=3,a*(b+c));
printf("a=%d\nb=%d\nc=%f\na*(b+c)=%d\n",a,b,c,s);}(三)調(diào)試運行程序程序運行結(jié)果如下:
返回到本章目錄6.圓括號運算符圓括號運算符是“()”,其優(yōu)先級最高,用它將某些運算符和運算對象括起來以后,這些括起來的運算符和運算對象要優(yōu)先運算。例如【思考題2-4】中,語句代碼s=(a=1,b=2,c=3,c=a*(b+c));中,盡管運算符“*”的優(yōu)先級比運算符的“+”的優(yōu)先級更高,但由于(b+c)使用了圓括號運算符,故應(yīng)優(yōu)先運行b+c。在這個語句中,我們使用了兩個“()”運算符,應(yīng)先計算最里面的圓括號,再計算外面的,如果兩個“()”并列排列,則應(yīng)遵循由左向右的優(yōu)先原則。返回到本章目錄7.逗號運算符
在【思考題2-4】中,語句s=(a=1,b=2,c=3,c=a*(b+c));中的“,”代表了逗號運算符。在C語言中,符號“,”除了作分隔符外,還可以作為運算符將若干個表達(dá)式連接在一起形成逗號表達(dá)式。逗號表達(dá)式的一般格式為:逗號表達(dá)式的運算規(guī)則是:先求解表達(dá)式1,再求解表達(dá)式2,依次求解到表達(dá)式n。最后一個表達(dá)式的值就是整個逗號表達(dá)式的值。逗號運算符的優(yōu)先級最低,結(jié)合性為自左至右。表達(dá)式1,表達(dá)式2,…,表達(dá)式n返回到本章目錄8.求字節(jié)運算符sizeof
sizeof的定義格式如下(2)功能
測定某一種類型數(shù)據(jù)所占存儲空間長度,結(jié)果是該類型在內(nèi)存中所占的字節(jié)數(shù)。括號內(nèi)可以是該數(shù)據(jù)類型名或是該類型的變量名。sizeof(數(shù)據(jù)類型名)或sizeof(變量名)返回到本章目錄9.?dāng)?shù)據(jù)類型的轉(zhuǎn)換在C語言中,數(shù)據(jù)類型轉(zhuǎn)換方式有兩種:自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。所謂自動類型轉(zhuǎn)換指在C語言中,不同的數(shù)據(jù)可以出現(xiàn)在同一個表達(dá)式中。在進(jìn)行運算時,C語言自動進(jìn)行必要的數(shù)據(jù)類型轉(zhuǎn)換,以完成表達(dá)式的求值。當(dāng)與一個運算符相關(guān)聯(lián)的兩個運算對象的類型不同時,其中的一個運算對象的類型將轉(zhuǎn)換成與另一個運算對象的類型相同。返回到本章目錄轉(zhuǎn)換的優(yōu)先順序如圖所示:返回到本章目錄練一練
【練習(xí)2-5】假設(shè)a,b,c均為整數(shù),用C語言描述下列命題:(1)a小于b或小于c。(2)a或b都大于c。(3)a和b中至少有一個小于c。(4)a是非正數(shù)。(5)a是奇數(shù)。(6)a不能被b整除。解:描述如下:(1)a<b||a<c(2)a>c||b>c(3)(a<c&&b<c)||(a<c&&b>c)||(a>c&&b<c)(4)a<=0(5)a%2!=0或a%2==1(6)a%b!=0【練習(xí)2-6】假設(shè)x=3,y=z=4,求下列表達(dá)式的值。(1)(z>=y&&z>=x)?1:0(2)z>=y&&y>=x解:描述如下:(1)1(2)1返回到本章目錄本講小結(jié)C語言的運算符,不同的運算符具有不同的優(yōu)先級和結(jié)合性表達(dá)式以及表達(dá)式的求值數(shù)據(jù)類型轉(zhuǎn)換的兩種方式有兩種:自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。返回到本章目錄第四講數(shù)據(jù)的輸入與輸出一、字符輸入、輸出二、標(biāo)準(zhǔn)輸入、輸出函數(shù)三、練一練四、本講小結(jié)返回到本章目錄一、字符串的輸入、輸出【思考題2-5】從鍵盤上輸入一個字符,將該字符存到計算機內(nèi)并顯示在屏幕上,并輸出一個換行符。然后再輸入一個字符并直接輸出(不存入任何變量),再輸出一個回車換行符。(一)程序分析從鍵盤輸入一個字符并顯示到屏幕,需要用到單個字符的輸入函數(shù)和字符輸出函數(shù)。注意這兩個函數(shù)的使用格式和參數(shù)形式。返回到本章目錄(二)編寫程序代碼main(){charch;
printf("Pleaseinputtwocharacters:");
ch=getchar(); /*從鍵盤輸入一個字符并賦給變量ch*/
putchar(ch);putchar('\n');
putchar(getchar()); /*從鍵盤輸入一個字符并直接輸出*/
putchar('\n');}返回到本章目錄(三)調(diào)試運行程序從鍵盤上輸入兩個字符a和b,程序運行結(jié)果如下:返回到本章目錄1.字符輸入函數(shù)getchar(1)字符輸入函數(shù)getchar()的格式如下:(2)功能函數(shù)getchar()功能是從鍵盤上接收輸入的一個字符。(3)說明調(diào)用函數(shù)時,當(dāng)程序執(zhí)行到getchar函數(shù)調(diào)用語句時,將等待輸入,只有當(dāng)用戶輸入字符,并按回車鍵后,才接收輸入的第1個字符,并在屏幕上回顯該字符,同時送到內(nèi)存的緩沖區(qū),準(zhǔn)備賦給指定的變量。并且對空格符、制表符(Tab鍵)和回車換行符(Enter鍵)都被當(dāng)作有效字符讀入。getch()函數(shù)是立即接收用戶來自鍵盤上的輸入,不把字符回顯到屏幕上。getchar()或getch()返回到本章目錄2.字符輸出函數(shù)putchar
(1)格式字符輸出函數(shù)putchar()的定義格式如下(2)功能其作用是將參數(shù)代表的字符在標(biāo)準(zhǔn)輸出設(shè)備(通常是顯示器)上加以輸出。(3)說明參數(shù)ch可以是字符常量、字符變量或整型表達(dá)式,其功能等價于:printf("%c",ch);/*標(biāo)準(zhǔn)輸出函數(shù)printf()會在本節(jié)后面講解*/putchar(ch)返回到本章目錄putchar函數(shù)也可以輸出一些特殊字符(控制字符),如在思考題2-5中的語句:putchar('\n');作用是輸出一個“回車換行”字符。putchar()函數(shù)的參數(shù)也可以是一個函數(shù),如思考題2-6中語句:putchar(getchar());就是用getchar()從鍵盤中讀入一個字符,然后直接使用該字符作為putchar()函數(shù)的參數(shù),輸出到屏幕上。返回到本章目錄二、標(biāo)準(zhǔn)輸入、輸出函數(shù)
【思考題2-6】分析下列程序,觀察運行結(jié)果。源程序如下:main(){charch='a';/*定義變量并賦值*/inta=98;unsignedb=1000;longc=123456789;floatx=3.14;doubley=1.2345678;printf("(1)a=%d,a=%c,ch=%d,ch=%c\n",a,a,ch,ch);printf("(2)b=%u\n",b);printf("(3)c=%ld\n",c);printf("(4)x=%f,y=%f\n",x,y);printf("(5)x=%e,y=%e\n",x,y);printf("(6)y=%-10.2f\n",y);}返回到本章目錄(一)程序分析變量a為整型,所以程序第一行前兩項是輸出變量a的整數(shù)值和對應(yīng)其ASCII碼的字符;變量ch為字符型,程序第一行后兩項輸出變量ch的整數(shù)值和對應(yīng)其ASCII碼的字符。因為字符在計算機中是以ASCII碼形式存儲的,所以可以以整數(shù)和字符兩種形式輸出。變量b為無符號整型變量,1000為正整數(shù),所以第二行直接原樣輸出b。變量c為長整型變量,123456789的大小不超過長整型變量的最大值,所以第三行原樣輸出c。返回到本章目錄變量x為單精度浮點型變量,變量y為雙單精度浮點型變量,所以在輸出時默認(rèn)是小數(shù)點后保留6位,所以第四行以%f格式輸出和y時保留小數(shù)點后6位,初始化值不足6位由系統(tǒng)自動補足6位。第5行是將變量x和y以科學(xué)計數(shù)法形式輸出,e(或E)前的小數(shù)為整數(shù)位只有一位的純小數(shù),e后為科學(xué)計數(shù)法的10的次冪數(shù)。第6行是將變量y以10位數(shù),保留小數(shù)點后兩位數(shù)的形式輸出。返回到本章目錄(二)調(diào)試運行程序程序運行結(jié)果如下:返回到本章目錄3.格式輸入函數(shù)scanf(1)格式控制函數(shù)scanf的調(diào)用格式如下:(2)功能用來輸入任何類型數(shù)據(jù),可同時輸入多個類型或不同類型的數(shù)據(jù)。scanf("格式控制字符串",輸入地址列表);返回到本章目錄(3)“格式控制字符串”說明格式字符串的一般形式為:其中有方括號[]的項為任選項(可寫可不寫)。%[*][輸入數(shù)據(jù)寬度][長度]類型返回到本章目錄①類型:表示輸入數(shù)據(jù)的類型,其格式符和意義如下表所示例如,程序段:charch='A';printf("%c",ch);程序輸出結(jié)果是輸出字符A。格式字符意義d輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整數(shù)x輸入十六進(jìn)制整數(shù)u輸入無符號十進(jìn)制整數(shù)f或e輸入實數(shù)(用小數(shù)形式或指數(shù)形式)c輸入單個字符s輸入字符串返回到本章目錄②“*”符:用以表示該輸入項,讀入后不賦予相應(yīng)的變量,即跳過該輸入值。例如有如下輸入語句:
scanf("%d%*d%d",&a,&b);當(dāng)輸入為:123時,將1賦予a,2被跳過,3賦予b。返回到本章目錄③輸入數(shù)據(jù)寬度:用十進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù))。例如:scanf("%5d",&a);輸入:12345678↙只把12345賦予變量a,其余部分被截去。④長度:長度格式符為l和h,l表示輸入長整型數(shù)據(jù)(如%ld)和雙精度浮點數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。返回到本章目錄(4)地址表列中給出各變量的地址。地址是由地址運算符“&”后跟變量名組成的。在C語言中,使用了地址這個概念,應(yīng)該把變量的值和變量的地址這兩個不同的概念區(qū)別開來。變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。例如:&a和&b分別表示變量a和變量b的地址,這個地址是編譯系統(tǒng)在內(nèi)存中為變量a、b分配的地址。在賦值語句中給變量賦值,例如:a=567;
則a為變量名,567是變量的值,&a表示變量a的地址。但在賦值號左邊是變量名,不能寫地址,而scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a。這兩者在形式上是不同的。&是一個取地址運算符,&a是一個表達(dá)式,其功能是求變量的地址。返回到本章目錄(5)使用scanf函數(shù)還必須注意以下幾點:①在用scanf函數(shù)輸入數(shù)據(jù)時,不能規(guī)定精度。例如,在輸入時不能設(shè)浮點型數(shù)據(jù)的小數(shù)位數(shù),如:floatf;scanf("%7.2f",&f);是不對的,只能寫成:scanf("%f",&f);②scanf中要求給出變量地址,如給出變量名則會出錯。例如scanf("%d",a);是非法的,應(yīng)改為scnaf("%d",&a);才是合法的。返回到本章目錄③在輸入多個數(shù)值數(shù)據(jù)時,若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格、TAB、回車或非法數(shù)據(jù)(如對“%d”輸入“12A”時,A即為非法數(shù)據(jù))時即認(rèn)為該數(shù)據(jù)結(jié)束。④在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。返回到本章目錄⑤如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。⑥注意用scanf函數(shù)(使用“%s”格式)讀入字符串時,如果輸入的字符串有空格或Tab鍵時,只將空格之前的所有字符讀入,之后的字符串并不讀入。所以用這種格式不能讀入帶空格的字符串。如果想讀入帶空格的字符串可使用gets函數(shù)(在后面第4章的字符數(shù)組有講解)。⑦在scanf函數(shù)中不使用%u說明符,對unsigned型數(shù)據(jù),以%d或%o、%x格式輸入。返回到本章目錄4.格式輸出函數(shù)printf(1)printf函數(shù)調(diào)用的形式:printf中的輸出項是和前面的格式控制字符串按順序一一對應(yīng)的。“項”可以是常量、變量、表達(dá)式、數(shù)組和函數(shù)調(diào)用,其值應(yīng)和格式說明相容。
printf("格式控制字符串",輸出項列表);或printf("字符串");返回到本章目錄(2)格式控制字符串格式字符串的一般形式為:其中有方括號[]的項為任選項。各項的意義如下:%[標(biāo)志][輸出最小寬度][.精度][長度]類型返回到本章目錄①類型:類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義如書中P36頁表2-8所示。②標(biāo)志:標(biāo)志字符為-、+、空格、0和#五種,其意義如P37頁表2-9所示。返回到本章目錄③輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出,若實際位數(shù)少于定義的寬度則補以空格或0。④精度:精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。本項的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個數(shù);若實際位數(shù)大于所定義的精度數(shù),則截去超過的部分。⑤長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。返回到本章目錄(3)printf函數(shù)中的“輸出表”部分由表達(dá)式組成,這些表達(dá)式應(yīng)與“格式控制”字符串中的格式說明符的類型一一對應(yīng),若“輸出表”中有多個表達(dá)式,則每個表達(dá)式之間應(yīng)由逗號隔開。(4)在顯示數(shù)據(jù)時,可以不指定輸出字段的寬度,而直接利用系統(tǒng)隱含的輸出寬度。返回到本章目錄我們再來分析下面這個程序的輸出結(jié)果,注意其中的浮點型數(shù)據(jù)。main(){floatx;doubley;x=11111.1111;y=11111.1111;
printf("x=%f\ny=%f\n",x,y);}程序運行結(jié)果如下:返回到本章目錄請仔細(xì)分析以下程序的運行結(jié)果。例如:main(){inti=5;
printf("\n%d,%d,%d",++i,++i,++i);i=5;
printf("\n%d,%d,%d",i++,i++,i++);}程序運行結(jié)果是:返回到本章目錄練一練
【練習(xí)2-7】分析下列程序的輸出結(jié)果,注意其中的數(shù)據(jù)類型轉(zhuǎn)換。main(){intb;longc;floatf=123.456;b=12;c=1234567;printf("%d,%4d,%-4d,%04d\n",b,b,b,b);printf("%ld,%7ld,%-7ld,%07ld\n",c,c,c,c);printf("%s,%10s,%-10s,%10.4s,%-10.4s\n","string","string","string","string","string");printf("%10.2f,%-10.2f,%.2f\n",f,f,f);}返回到本章目錄解:在輸出函數(shù)中,%md之間的數(shù)字m表示按m位來輸出該數(shù)據(jù);%0md表示按m位來輸出該數(shù)據(jù),不足的位補0;%-mld表示按m位來輸出長整型數(shù)據(jù),“-”號表示按左對齊方式輸出(默認(rèn)是右對齊方式輸出)。程序運行結(jié)果如下:返回到本章目錄【練習(xí)2-8】分析下列程序的輸出結(jié)果,注意其中的數(shù)據(jù)類型轉(zhuǎn)換。ma
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度板材定制加工及銷售合同范本3篇
- 2025版綠色環(huán)保財產(chǎn)分割與節(jié)能減排離婚協(xié)議3篇
- 2024年特許經(jīng)營合同(餐飲業(yè))
- 空中飛人模板課程設(shè)計
- 2025至2030年中國鮮橙飲品行業(yè)投資前景及策略咨詢研究報告
- 2025版智慧城市井蓋銷售合同3篇
- 2025版教育軟件產(chǎn)品購買合同
- 2025至2030年中國鋼圈對焊機行業(yè)投資前景及策略咨詢研究報告
- 2025年智慧城市垃圾分類處理服務(wù)合同2篇
- 2025版廣告效果評估居間服務(wù)合同范本3篇
- DLT 5434-2021 電力建設(shè)工程監(jiān)理規(guī)范表格
- 房屋退還協(xié)議書范本
- 天皰瘡臨床分期與治療方案研究
- 江蘇省南京市選調(diào)生考試(行政職業(yè)能力測驗)綜合能力題庫含答案
- 幼兒園勞動教育國內(nèi)外研究現(xiàn)狀
- 2021-2022學(xué)年江蘇省無錫市惠山區(qū)蘇教版四年級上冊期末測試數(shù)學(xué)試卷
- 軍事理論-綜合版-知到答案、智慧樹答案
- 綜合技能訓(xùn)練實訓(xùn)報告學(xué)前教育
- 光伏發(fā)電技術(shù)項目投標(biāo)書(技術(shù)標(biāo))
- 2024年上海海洋大學(xué)馬克思主義基本原理概論(期末考試題+答案)
- 社會實踐-形考任務(wù)四-國開(CQ)-參考資料
評論
0/150
提交評論