第二講基本數(shù)據(jù)計(jì)算與輸入輸出_第1頁
第二講基本數(shù)據(jù)計(jì)算與輸入輸出_第2頁
第二講基本數(shù)據(jù)計(jì)算與輸入輸出_第3頁
第二講基本數(shù)據(jù)計(jì)算與輸入輸出_第4頁
第二講基本數(shù)據(jù)計(jì)算與輸入輸出_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

主講 劉少兵第二講數(shù)據(jù)、運(yùn)算與基本輸入輸出共72頁第2

頁第二章數(shù)據(jù)、運(yùn)算與基本輸入輸出基本數(shù)據(jù)類型與特點(diǎn)各種數(shù)據(jù)類型表示范圍常量的表示方法變量說明語句運(yùn)算符與基本運(yùn)算規(guī)則基本輸入輸出函數(shù)使用方法本章要點(diǎn)共72頁第3

頁第二章數(shù)據(jù)、運(yùn)算與基本輸入輸出第一節(jié)數(shù)據(jù)與數(shù)據(jù)類型第二節(jié)常量與常量定義第三節(jié)變量與變量說明第四節(jié)基本運(yùn)算第五節(jié)運(yùn)算符的優(yōu)先級與結(jié)合性第六節(jié)數(shù)據(jù)類型轉(zhuǎn)換第七節(jié)數(shù)據(jù)的輸入與輸出第八節(jié)綜合舉例共72頁第4

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù)程序加工處理的對象及其結(jié)果數(shù)據(jù)類型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲形式(占用的內(nèi)存單元數(shù)量、編碼方式、取值范圍等)常量在程序運(yùn)行過程中不允許改變的量變量在程序運(yùn)行過程中允許改變的量一、基本概念共72頁第5

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))二、C語言的數(shù)據(jù)類型基本類型字符型char整型int浮點(diǎn)型單精度float雙精度double指針類型構(gòu)造類型數(shù)組結(jié)構(gòu)struct聯(lián)合union枚舉enum無值類型第二章第五章第六章指針類型第四章共72頁第6

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))C語言基本數(shù)據(jù)類型有四種:字符型整型單精度浮點(diǎn)型雙精度浮點(diǎn)型charintfloatdouble類型說明符三、C語言的基本數(shù)據(jù)類型C語言有四種類型修飾符:短長有符號無符號shortlongsignedunsigned類型修飾符注意:類型修飾符不能單獨(dú)使用,必須與類型說明符配合在一起使用C語言采用類型說明符說明不同的數(shù)據(jù)類型共72頁第7

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))基本數(shù)據(jù)類型的數(shù)據(jù)存儲格式和取值范圍:類型占用內(nèi)存單元取值范圍數(shù)據(jù)存儲格式

char1(8位)0~255ASCII碼

shortint2(16位)-32768~32767二進(jìn)制補(bǔ)碼

float4(32位)±3.4*10-38~±3.4*10387位有效數(shù)字

double8(64位)±10-308~±10308 15位有效數(shù)字四、基本數(shù)據(jù)類型的數(shù)據(jù)表示與取值范圍無法表示全體實(shí)數(shù)保存字符對應(yīng)的ASCII碼-2151000,0000,0000,0000215-10111,1111,1111,1111float:尾數(shù)24位+階數(shù)8位double:尾數(shù)52位+階數(shù)12位

共72頁第8

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型-intshortint表示范圍:二進(jìn)制16bit(2Byte)000000000000000100000000000000110111111111111111=1=3short整數(shù)的最大值shortint型表示數(shù)的范圍:-32768~32767例2_2021111111111111111注意:使用中要防止數(shù)據(jù)溢出=-1short整數(shù)的最小值1000000000000000=215-1=32767=-215=-32768返回共72頁第9

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型-intmain(){shortinti;i=1;i=i*2;printf(”\ni=%d”,i);i=i*3;printf(”\ni=%d”,i);i=i*4;printf(”\ni=%d”,i);i=i*5;printf(”\ni=%d”,i);i=i*6;printf(”\ni=%d”,i);i=i*7;printf(”\ni=%d”,i);i=i*8;printf(”\ni=%d”,i);i=i*9;printf(”\ni=%d”,i);i=i*10;printf(”\ni=%d”,i);}

期望結(jié)果

i=2i=6i=24i=120i=720i=5040i=40320i=362880i=3628800

實(shí)際運(yùn)行結(jié)果

i=2i=6i=24i=120i=720i=5040i=-25216i=-30336i=24320產(chǎn)生數(shù)據(jù)溢出上溢下溢返回例C2_202共72頁第10

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型-float返回有效數(shù)字的意義?

二進(jìn)制7位

二進(jìn)制23位單精度實(shí)型尾數(shù)階碼2-23

<=

|尾數(shù)|

<=1-2-230.000,000,12<=|尾數(shù)|<=0.999,999,88例C2_203數(shù)的范圍的意義?2-128<=|階碼|<=21272.9*10-39<=|階碼|<=1.7*1038尾數(shù)的符號位階碼的符號位共72頁第11

頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))加修飾符數(shù)據(jù)類型的數(shù)據(jù)存儲格式和取值范圍:

shortint<==>int<==>short signed<==>int<==>shortint<==>short類型占用內(nèi)存單元取值范圍

unsignedint2字節(jié) 0~65535

longint 4字節(jié)-2147483648~2147483647

unsignedlong4字節(jié)0~4294967295-231231-1216-1232-1共72頁第12

頁§2-2常數(shù)與常數(shù)定義整型常量(3種形式) 10進(jìn)制

8進(jìn)制 16進(jìn)制實(shí)型常量(2種形式) 十進(jìn)制 指數(shù)

字符常量字符串常量一、常數(shù):0

~9整型常量實(shí)例:0

~7以數(shù)字0開頭:0

~9,A~F/a~f,以0x或0X開頭:符號、整數(shù)、小數(shù)點(diǎn)和小數(shù):用e或E和表示指數(shù)部分實(shí)型常量實(shí)例字符常量字符串常量共72頁第13

頁§2-2整型常數(shù)實(shí)例整型常量的不同表示方法:

10進(jìn)制:

100-80+123

8進(jìn)制:

010024010016進(jìn)制:

0x380x100X100XFF0xa整型常量的類型:

1.在整型表示范圍之內(nèi),根據(jù)值大小默認(rèn)類型2.在常量后面加l或L,則認(rèn)為它是longint型例如:都是longint型常量

10進(jìn)制:-123L0L432l8進(jìn)制:010L024L0100L16進(jìn)制:

0x38L0x1000L0XFFlx0a0000l返回共72頁第14

頁§2-2實(shí)型常數(shù)實(shí)例實(shí)型常量的不同表示方法:

10進(jìn)制:1.01.+12.0-12.00.0指數(shù):1e31.8e-3-123e-6

等價于:10001.8*10-3-123*10-6

指數(shù):-.1e-3.1E10

等價于:-0.1*10-30.1*10-10返回共72頁第15

頁§2-2常數(shù)與常數(shù)定義-字符常數(shù)字符型常量:用單引號括起來的單個字符實(shí)例:’A’

’g’

’#’

’0’

’2’

’+’

’,’

’;’

’(’

’)’字符定界符:單引號’字符型數(shù)據(jù)的存儲格式:ASCII碼(見書P207)65103354850返回如何表示不可顯示字符?回車/退格/TAB?如何表示定界符?’’’

產(chǎn)生歧異轉(zhuǎn)義符\:將\后面的字符轉(zhuǎn)換為其它含義共72頁第16

頁§2-2常數(shù)與常數(shù)定義-轉(zhuǎn)義符常數(shù)字符形式功能使用舉例

\0字符串結(jié)束標(biāo)志

\n換行(ASCII碼為10) printf(”\n”);

\t橫向跳格 printf(”\t”);

\b退格

\r回車(ASCII碼為13)

\f走紙換頁

\\字符\(ASCII碼為92)’\\’

表示字符

\

\’

單引號 ’\’’表示字符’

\”雙引號 ’\”’表示字符”

\ddd用8進(jìn)制表示字符 ’a’=’\141’

’A’=’\101’

換行符’\12’

\xhh用16進(jìn)制表示字符’a’=’\x61’

’A’=’\x41’

換行符’\xa’返回共72頁第17

頁§2-2常數(shù)與常數(shù)定義-字符串常數(shù)字符串常量:用雙引號括起來的字符序列實(shí)例:”ThisisCstring.”

”a”

(1個空格)

””

(不含空格)

串定界符:雙引號

”字符串長度:字符串中包含的字符數(shù)量。返回串長=17串長=1串長=1串長=0"\t\"Name\\Address\n"串長=15空串實(shí)例:"\"Cisveryeasy.\""串長=17注意:字符串"a"

與字符’a’

的區(qū)別"Hesaid\"ok.\"\n"串長=13共72頁第18

頁§2-2常數(shù)與常數(shù)定義常量定義形式#define

標(biāo)識符

常量用定義的一個標(biāo)識符來代表一個常量,稱為符號常量

# 宏命令專用定義符號

define

命令

標(biāo)識符

宏替換名(一般采用大寫字符)二、常數(shù)定義與符號常量常量定義實(shí)例注意:符號常量與變量不同,它的值在程序運(yùn)行過程中不能改變,也不能重新賦值。共72頁第19

頁§2-2常量定義實(shí)例常量定義實(shí)例#defineONE1

#define

PAI

3.1415926

#define

TV

”television”

#define

MAX

10#defineTWO

ONE+ONE使用方法

a=8+2;printf(”%s”,”television”);

s=3.14159*r*r;

intarray[10];返回a=b+TWO;printf(”%s”,TV);s=PAI*r*r;intarray[MAX];共72頁第20

頁§2-3

變量與變量說明變量:在程序運(yùn)行過程中允許改變的量變量的說明格式:[類型修飾符]類型說明符變量列表;例如:inti;

charch,str;

longk=1,m=0x12345678;doublex,y=1;變量說明意味著確定了:該變量占用內(nèi)存單元的數(shù)量,數(shù)據(jù)在內(nèi)存的表示方式,數(shù)據(jù)的取值范圍。一、變量說明的基本概念共72頁第21

頁§2-3變量與變量說明變量的三個屬性:

–變量名稱:編程時使用(進(jìn)行編程) –變量的值:程序運(yùn)行時使用(進(jìn)行運(yùn)算)

–變量地址:程序運(yùn)行時,要將變量的值保存在計(jì)算機(jī)的存儲單元中,每個存儲單元都有唯一的內(nèi)存地址。變量在內(nèi)存中占據(jù)的存儲單元的地址就是變量的地址。指針:變量的地址一般變量:存儲變量的值指針變量:保存變量地址的變量二、指針與指針變量共72頁第22

頁§2-3變量與變量說明指針變量說明:數(shù)據(jù)類型

*變量名; 例:有變量說明語句:char

c='A';

若變量c在內(nèi)存中對應(yīng)的地址為1000; *變量名稱:c,類型為char,占用1個字節(jié) *變量c的值:字母’A’

*變量c的地址:1000 若有:char

*

pc; 則稱指針變量pc是char型指針

pc=&c;/*&取c的地址*/ 則稱指針變量pc指向變量c共72頁第23

頁§2-3變量與變量說明變量在說明之后,沒有固定的初始值,要先賦值(給定一個初始值),后使用。變量賦初值將變量說明與賦初值合一,在說明變量時同時完成。實(shí)例

charcc='a',dd='\n'; int x=10,y=-10,z; doubletry=28.5,w=1e10;三、變量賦初值共72頁第24

頁§2-4運(yùn)算符一、運(yùn)算符簡介按運(yùn)算類型分類1.算術(shù)運(yùn)算符 2.關(guān)系運(yùn)算符3.邏輯運(yùn)算符4.

位運(yùn)算符5.賦值與賦值組合運(yùn)算符6.自增自減運(yùn)算符7.條件運(yùn)算

8.指針運(yùn)算9.

其它運(yùn)算符按運(yùn)算對象的數(shù)目分類◆單目運(yùn)算◆雙目運(yùn)算◆三目運(yùn)算目:進(jìn)行運(yùn)算時需要的操作數(shù)的數(shù)量共72頁第25

頁§2-4運(yùn)算符-算術(shù)運(yùn)算一、算術(shù)運(yùn)算符運(yùn)算符(雙目運(yùn)算符/單目運(yùn)算符)+加法運(yùn)算12

正值運(yùn)算14-減法運(yùn)算12

負(fù)值運(yùn)算14*乘法運(yùn)算13/除法運(yùn)算13%求余運(yùn)算13優(yōu)先級:*/%同級(高),+

-同級(低)結(jié)合性:相同優(yōu)先級運(yùn)算符進(jìn)行運(yùn)算時的次序

自左向右(標(biāo)記為

→)共72頁第26

頁§2-4運(yùn)算符-算術(shù)運(yùn)算實(shí)例1.參加運(yùn)算的對象都是int型,結(jié)果截取為int型10/3 11/310.0/3 11/3.1/2 1./210/5*3 10/(5*3)2.求余運(yùn)算的對象必須是整型9%3 1%310%3 10%-3-10%3 -10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1=1=1=-1=-1共72頁第27

頁§2-4運(yùn)算符-關(guān)系運(yùn)算二、關(guān)系運(yùn)算符運(yùn)算符(雙目運(yùn)算符

)>大于10>=大于等于10<小于10<=小于等于10

==

等于 9!=不等于 9優(yōu)先級:>>=<<=同級(高),!===同級(低)關(guān)系運(yùn)算的結(jié)果應(yīng)該為邏輯型“真”或“假”

C語言中沒有邏輯型,將邏輯型數(shù)值化處理,用整型1表示“真”,用整型0表示“假”。共72頁第28

頁§2-4運(yùn)算符-關(guān)系運(yùn)算實(shí)例實(shí)例邏輯表達(dá)式

7>5的值是

1,5>7的值是

0。已知:inta=13,b=2,c=1;a>b a<=b a!=b a==b (a>b)==ca>b==ca-b==c 成立,結(jié)果為1不成立,結(jié)果為

0成立,結(jié)果為1不成立,結(jié)果為0結(jié)果為1與上面等價,結(jié)果為1等價于(a-b)==1,結(jié)果為0?

如何判斷數(shù)學(xué)中的邏輯關(guān)系:0≤a≤9?

0<=a<=9等價于(0<=a)<=9結(jié)果恒為1共72頁第29

頁§2-4運(yùn)算符-邏輯運(yùn)算三、邏輯運(yùn)算符運(yùn)算符

&&邏輯與(雙目)5(→)

||邏輯或(雙目)4(→)!邏輯非(單目)14(←)邏輯運(yùn)算關(guān)系邏輯運(yùn)算真值表ab!a!ba&&ba||b11

0

01110

010101

10

0100

110

0共72頁第30

頁§2-4運(yùn)算符-邏輯運(yùn)算式2

(y||

b)&&(y

||

a

)

1結(jié)果2結(jié)果例:要判斷0≤x≤9是否成立:(

0<=x

)&&(

x<=9

)

如果沒有括號:0

<=

x

&&

x

<=

9

等價

結(jié)果

結(jié)果

實(shí)例:比較下列兩個邏輯表達(dá)式的執(zhí)行過程式1

y||

b&&y||

a共72頁第31

頁§2-4運(yùn)算符-位運(yùn)算四、位運(yùn)算符運(yùn)算符

>> 按位右移(雙目)11(→)

<< 按位左移(雙目)11(→)

& 按位與(雙目)

8(→)

∧ 按位異或(雙目)7(→)

|

按位或(雙目)

6(→)~~ 按位反(單目)

14(←)真值表aba∧b~a~b000110 11101010111000共72頁第32

頁實(shí)例:已知:intx=7,y=10,z=1;設(shè)字長為8位

x&y= x&z=x

|y=y|

z=

x^y=

~

x=

–x=x<<2=y>>2=x>>2=

2(00000111

&00001010=0010) 1(00000111

&00000001=0001)15(00000111

|00001010=1111)11(00001010

|

00000001=1011)

13(00000111

^00001010=1101)

–8(

~

0000

0111)=1111

1000–728(00000111

<<2=0001

1100)2(00001010>>2=00000010)1(00000111

>>2=00000001)§2-4運(yùn)算符-位運(yùn)算共72頁第33

頁說明關(guān)于>>:右移一位=縮小1/2關(guān)于<<:左移一位=擴(kuò)大2倍關(guān)于~: 因?yàn)椋?~

x=按位求反=求反運(yùn)算 求負(fù)=求補(bǔ)=求反+1所以: 求反=求負(fù)–1

~x=-x-1

~7=–8~(–8)=7注意:1.位運(yùn)算是對二進(jìn)制的位進(jìn)行運(yùn)算2.只能對int型、char型和long型進(jìn)行位運(yùn)算§2-4運(yùn)算符-位運(yùn)算共72頁第34

頁§2-4運(yùn)算符-自增自減運(yùn)算五、自增自減運(yùn)算符運(yùn)算符(單目←)

++

自增 14

–– 自減 14++和––為單目運(yùn)算,只能作用于變量只能對int、char、long和指針變量進(jìn)行運(yùn)算功能:

++x <==>x=x+1

––x <==>x=x–1 (前綴)

x++ <==>x=x+1 x––

<==>x=x–1 (后綴)共72頁第35

頁§2-4運(yùn)算符-自增自減運(yùn)算自增(自減)有前綴和后綴之分。前綴形式:先自增(自減)再引用后綴形式:先引用再自增(自減)前綴與后綴的區(qū)別:

y=++x;<==>x=x+1;

y=x;

x先加1再賦值

y=x++;<==>y=x;

x=x+1;

x先賦值再加1共72頁第36

頁§2-4運(yùn)算符-自增自減運(yùn)算實(shí)例實(shí)例(1)

++i;i++;

因?yàn)樵诒磉_(dá)式中沒有其它運(yùn)算,結(jié)果一樣。(2)

x=1;y=++x;

結(jié)果:x=2,y=2

y=++x;<==>x=x+1;y=x;

在做賦值運(yùn)算之前,x先加1,然后將x賦給y(3)x=1;y=x++;

結(jié)果:x=2,y=1y=x++;<==>y=x;x=x+1;先將x

賦值給y,然后x

再加1共72頁第37

x=3,z=3

x=3,y=6,z=3*6=18

x=3,y=6,z=2*6=12

x=3,y=6,z=3*5=15

x=3,y=6,z=2*5=10

x=4,z=4*4=16注意,以下操作是錯誤的:

x=++(i+j)+1;j=++

(5+x);y=++x*++x;§2-4運(yùn)算符-自增自減運(yùn)算實(shí)例實(shí)例已知:intx

=

2,y

=

5,z;

z=++x;

z=++x

*

++y;

z=x++

*

++y;z=++x

*

y++;

z=x++

*

y++;z=++x

*

++x;邏輯雖然正確,但實(shí)際編程中容易產(chǎn)生誤解,應(yīng)當(dāng)避免共72頁第38

頁§2-4運(yùn)算符-自增自減運(yùn)算實(shí)例實(shí)例已知:inti=1,j=2,k;k=i+++j;C語言處理運(yùn)算符(標(biāo)識符)時,遵循自左向右組合的原則,兩個‘+’號是一個運(yùn)算符,故處理成(i++)+j。k=i+++++j;不能編譯通過。原因是編譯器將前兩個‘+’處理成自增,接下來又將兩個‘+’號處理為自增,故不合語法。編程者可用空格或括號來表示正確的含義:k=i+++++j;

注意:一般不要用這樣的語句。共72頁第39

頁§2-4運(yùn)算符-賦值與賦值組合運(yùn)算六、賦值與賦值組合運(yùn)算符運(yùn)算符(雙目←)

賦值運(yùn)算: =2 賦值組合運(yùn)算:e1

op=e22

等于于:e1=e1

op(e2) 其中:op為下列10個運(yùn)算符之一+–*/%<<>>|&^

e1為可以進(jìn)行賦制操作的變量

e2為合法的表達(dá)式例:x+=2; <==>x=x+2; x*=y+1; <==>x=x*(y+1);

不等價

x=x*y+1; x>>=2; <==>x=x>>2;共72頁第40

頁§2-4運(yùn)算符-條件運(yùn)算七、條件運(yùn)算符運(yùn)算符(三目←)e1

?

e2

:

e3功能:如果表達(dá)式e1成立(e1值為非0),則執(zhí)行表達(dá)式e2;否則(表達(dá)式e1不成立),執(zhí)行表達(dá)式e3例:max=(a>b)?a:b; 求變量a與b的最大值

min=(a<b)?a:b;求變量a與b的最小值判斷e1

?執(zhí)行e2執(zhí)行e3成立不成立共72頁第41

頁§2-4運(yùn)算符-指針運(yùn)算八、指針運(yùn)算符運(yùn)算符(單目

←)

&取變量的地址 14

*

取指針變量(所指向)的內(nèi)容 14注意:運(yùn)算符&和“位與”運(yùn)算是同一符號;運(yùn)算符*和“乘”運(yùn)算是同一符號。只能從程序的上下文來區(qū)分運(yùn)算符&和運(yùn)算符*

的實(shí)際意義。共72頁第42

頁§2-4運(yùn)算符-指針運(yùn)算實(shí)例實(shí)例:已知:intx=2,y,*px;x為一般變量,px為指針型變量

y=x*100;

*px=y*10;

++x;

x++;px

px=&x; 取變量x的地址賦值給指針px

又稱為讓px指向變量x

x=10;若px已經(jīng)指向x,則可以用*px代替變量xx210<==>

*px=10;也稱為間接訪問<==>y=*px;取指針px的內(nèi)容<==>

y=*px

*100;<==>x=y*10;<==>++

*

px<==>(*

px)++;

括號不能省略

y=x; 共72頁第43

頁§2-4運(yùn)算符-其它運(yùn)算九、其它運(yùn)算符運(yùn)算符

. 取結(jié)構(gòu)/聯(lián)合的成員 15

–>通過指針取結(jié)構(gòu)/聯(lián)合的成員 15

() 改變表達(dá)式中的優(yōu)先級關(guān)系 15

[] 數(shù)組下標(biāo) 15

, 逗號,表達(dá)式從左向右順序計(jì)算

1

(type)

e將e的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為type

14

sizeof(opr) 求opr所占用的內(nèi)存的字節(jié)數(shù) 14第六章第五章共72頁第44

頁§2-4運(yùn)算符-其它運(yùn)算實(shí)例實(shí)例:已知:intx,y,z;

y=(x=10,x+1);

答案:先執(zhí)行x=10,然后再執(zhí)行y=x+1

y=11,x=10

z=sizeof(int);

答案:z=2求int型數(shù)據(jù)占用的內(nèi)存字節(jié)數(shù)量

z=sizeof(x);

答案:z=2求變量x占用的內(nèi)存字節(jié)數(shù)量共72頁第45

頁§2-5運(yùn)算符的優(yōu)先級與結(jié)合性按運(yùn)算符的優(yōu)先級分為15級按運(yùn)算符的結(jié)合性分為2種

自左向右結(jié)合自右向左結(jié)合優(yōu)先級不同時:運(yùn)算符優(yōu)先級的高低決定了進(jìn)行運(yùn)算的先后次序。優(yōu)先級相同時:同優(yōu)先級運(yùn)算符的運(yùn)算次序由結(jié)合性決定。例如:四則運(yùn)算中的“先乘除,后加減”反映了運(yùn)算符的優(yōu)先級;“同級運(yùn)算從左至右”反映了乘/除運(yùn)算(加/減運(yùn)算)的結(jié)合性。共72頁第46

頁§2-5運(yùn)算符的優(yōu)先級與結(jié)合性運(yùn)算符優(yōu)先級表共72頁第47

頁§2-5實(shí)例已知:inta=8,b=5,c=2;計(jì)算下列表達(dá)式結(jié)果①a/b*b②a%b*c③a*c>>2④a&c&&b⑤a|b&c⑥~(~a>>3)⑦b>~a

?a*c

:

a%c5 先/后*6 先%后*4 先

*后>>0 先&后&&8 先&后|~后>>~00001000=11110111>>3=11111110~=0000000116 先~

再>再?:共72頁第48

頁#definePRINT(x)printf("%d\n",x)main(){intx=3,y=2,z=1;x=y++>=x&&x-y==++z;

PRINT(x);PRINT(y);PRINT(z);y*=z=x+(z+2);PRINT(x);PRINT(y);PRINT(z);x=y=z=1;PRINT(--x&&++y||z++);

PRINT(x);PRINT(y);PRINT(z);x=9;y=6;z=5;x=((x+y)%z>=x%z+y%z)?1:0;

PRINT(x); }

/*先算y>=x結(jié)果為0,則不再算&&之后的表達(dá)式x-y==++z。將結(jié)果賦給x,最后執(zhí)行y+1*/

/*x=0,y=3,z=1*//*先算x+(z+2),3賦給z,再執(zhí)行y*=z*//*x=0,y=9,z=3*//*x先減1結(jié)果為0,則跳過&&++y不執(zhí)行,與z進(jìn)行邏輯或運(yùn)算,再執(zhí)行z++,輸出結(jié)果:1*/

/*x=0,y=1,z=2*//*┃①┃┃┃③┃┃④┃━┳━*//*┗┳┛②┃┗┳┛⑤┗┳┛┃*//*┗━┳━┛⑥┗━┳━┛┃*//*┗━━━┳━━━┛⑦┃*//*┗━━━━━━━━━┛*/

/*x=0*/例C2_4003共72頁第49

頁#include<stdio.h>main(){intx,y,z;x=1;y=1;z=0;x=x&&y||z;printf("x=%d\n",x);printf("%d\n",x||

!y++&&++z);printf("y=%d,z=%d\n",y,z);x=y=1;z=x++-1;printf("x=%d,z=%d\n",x,z);z+=-x+++++y;printf("x=%d,y=%d,z=%d\n",x,y,z);}&&優(yōu)先級高,先計(jì)算x&&y,結(jié)果為1由于是||運(yùn)算,故不再計(jì)算1||z。x=1||優(yōu)先級最低,x=1,不再計(jì)算||右邊的算式,y和z不變y=1,z=0

++為后綴,先將x-1的值賦給z,再計(jì)算x++

x=2,z=0等價于z+=(-(x++))+(++y)

x=3,z=0,y=2實(shí)例例C2_4002共72頁第50

頁§2-6數(shù)據(jù)類型轉(zhuǎn)換不同數(shù)據(jù)類型的數(shù)據(jù)/變量進(jìn)行混合運(yùn)算時,需要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換轉(zhuǎn)換方式有兩種:“顯式的”類型轉(zhuǎn)換“隱式的”類型轉(zhuǎn)換“顯式的”類型轉(zhuǎn)換采用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(type)“隱式的”類型轉(zhuǎn)換是C語言按照一定的類型轉(zhuǎn)換規(guī)則自動進(jìn)行的轉(zhuǎn)換共72頁第51

頁§2-6數(shù)據(jù)類型轉(zhuǎn)換“隱式的”類型轉(zhuǎn)換規(guī)則1、運(yùn)算中將所有char型數(shù)據(jù)都轉(zhuǎn)換成int型,float型轉(zhuǎn)換成double型。2、低級類型服從高級類型,并進(jìn)行相應(yīng)的轉(zhuǎn)換double

floatlongunsignedint

char3、賦值運(yùn)算以賦值運(yùn)算符左邊變量的類型為準(zhǔn),即賦值運(yùn)算符右端值的類型向左邊變量的類型看齊,并進(jìn)行相應(yīng)的轉(zhuǎn)換。共72頁第52

頁§2-6數(shù)據(jù)類型轉(zhuǎn)換-實(shí)例例:inta,j,y;floatb;longd;doublec;則:y=j+'a'+a*b-c/d;其運(yùn)算次序和隱含的類型轉(zhuǎn)換為:①計(jì)算a*b,運(yùn)算結(jié)果為double型。②再計(jì)算c/d,結(jié)果為double型。③計(jì)算j+'a',結(jié)果為整型。④將第1步和第3步的結(jié)果相加,結(jié)果為double型⑤用第4步結(jié)果減第2步結(jié)果,結(jié)果為double型⑥給y賦值,先將第5步的結(jié)果double型轉(zhuǎn)換為整型(因?yàn)橘x值運(yùn)算左邊變量y為整型),截掉double型數(shù)據(jù)的小數(shù)部分,壓縮成int型。共72頁第53

頁§2-7數(shù)據(jù)的輸入與輸出輸入是指用戶借助計(jì)算機(jī)的輸入設(shè)備將數(shù)據(jù)輸入到計(jì)算機(jī)中。常見的輸入設(shè)備是鍵盤、鼠標(biāo)輸出是指從計(jì)算機(jī)內(nèi)部將數(shù)據(jù)輸送到用戶指定的外部輸出設(shè)備常見的輸出設(shè)備如顯示器、打印機(jī)、繪圖儀等C語言通過標(biāo)準(zhǔn)輸入/輸出庫(I/O庫)提供的函數(shù)完成輸入/輸出功能共72頁第54

頁§2-7字符輸入函數(shù)getchar調(diào)用形式:

c=getchar()功能:從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上取一個字符作為函數(shù)值返回。例:#include"stdio.h"main(){charc;c=getchar();

putchar(c);/*輸出字符變量c的值*/}運(yùn)行程序,如果從鍵盤輸入: a[ENTER] 則輸出為: a 如果從鍵盤輸入: abc[ENTER] 則輸出也為: a共72頁第55

頁§2-7格式輸入函數(shù)scanf調(diào)用形式:scanf(”控制字符串”,參數(shù)1,參數(shù)2,…,參數(shù)n) 其中:控制字符串也稱為格式說明串,它用于描述變量的輸入方式,格式說明的形式是:%附加格式說明符

格式轉(zhuǎn)換字符 附加格式說明符部分可以缺省。功能:從標(biāo)準(zhǔn)輸入設(shè)備上讀取輸入數(shù)據(jù),按格式說明的描述將讀入的數(shù)據(jù)賦于相應(yīng)的參數(shù)。 參數(shù)部分的每個參數(shù),若為一般變量,要在變量名前加“&”(取地址運(yùn)算符),表示將輸入的數(shù)據(jù)存入變量對應(yīng)的內(nèi)存單元(地址)中。scanf

(

”%d”,&x);共72頁第56

頁§2-7格式輸入函數(shù)scanf格式轉(zhuǎn)換字符說明

d輸入十進(jìn)制整數(shù)

o輸入八進(jìn)制整數(shù)

x輸入十六進(jìn)制整數(shù)

c輸入單個字符

s輸入字符串

f輸入實(shí)數(shù),可為小數(shù)形式或指數(shù)形式附加格式說明符說明

l用于輸入長整型數(shù)據(jù)及double型數(shù)據(jù)

h用于短整型數(shù)據(jù)正整數(shù)用于指定輸入數(shù)據(jù)占據(jù)的寬度*表示本輸入項(xiàng)在讀入后舍棄共72頁第57

頁§2-7格式輸入函數(shù)scanf1:scanf("%3d%2d",&x,&y); 輸入序列:123456[ENTER]

結(jié)果:x=123,y=452:scanf("%d,%d:%f",&x,&y,&z);

輸入序列:1,2:3.5[ENTER]

結(jié)果:x=1,y=2,z=3.53:scanf("%d%d%d",&x,&y,&z);

輸入序列一:123[ENTER]

結(jié)果:x=1,y=2,z=3 輸入序列二:1[TAB]23[ENTER] 輸入序列三:1[ENTER]

23[ENTER] 結(jié)果與輸入序列一的結(jié)果一樣。共72頁第58

頁§2-7格式輸入函數(shù)scanf4:scanf("%2d

%*2d,%2d",&x,&y);

輸入序列:1234,56[ENTER]

結(jié)果:x=12,y=56。注意:在scanf中,可以使用[ENTER]、空格或[TAB]作為數(shù)據(jù)之間的分隔符。5:scanf(”x=%d",&x);

要使x的值等于12,從鍵盤應(yīng)怎樣輸入?

正確的輸入序列:x=12[ENTER]

注意:字符x=被過濾掉了

若輸入序列為:12[ENTER]錯誤!共72頁第59

頁§2-7字符輸出函數(shù)putchar調(diào)用形式:

putchar(c)功能:通過標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出變量c。例C2_7301.C:將從鍵盤輸入的一行字符復(fù)制到標(biāo)準(zhǔn)輸出。#include"stdio.h"main(){charc;c=getchar();

while(c!=’\n’)

{

putchar(c); /*輸出該字符*/

c=getchar();/*再取下一輸入字符*/

}

}例C2_7301共72頁第60

頁§2-7格式輸出函數(shù)printf調(diào)用形式:printf(”控制字符串”,參數(shù)1,參數(shù)2,…,參數(shù)n)

其中:控制字符串也稱為格式說明串,它用于描述變量的輸出方式,格式說明的形式是:%附加格式說明符

格式轉(zhuǎn)換字符 附加格式說明符部分可以缺省。功能:按照控制字符串中的格式說明依次將后面的各參數(shù)進(jìn)行轉(zhuǎn)換,排放成格式說明中規(guī)定的格式,輸出到輸出設(shè)備上。對非格式說明符,則按原樣輸出。共72頁第61

頁§2-7格式輸出函數(shù)printf格式轉(zhuǎn)換字符說明

d以十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號)

o以八進(jìn)制無符號形式輸出整數(shù)(不輸出前綴符)

x以十六進(jìn)制無符號形式輸出整數(shù)(不輸出前綴符)

u以無符號十進(jìn)制形式輸出整數(shù)

c以字符形式輸出,僅輸出一個字符

s輸出字符串

f以小數(shù)形式輸出單、雙精度數(shù)

e以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù)

g選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0共72頁第62

頁§2-7格式輸出函數(shù)printf附加說明符說明

l用于輸出長整型數(shù)據(jù),可加在格式轉(zhuǎn)換符d,o,x,u前面

m(正整數(shù))輸出數(shù)據(jù)的最小域?qū)?n(正整數(shù))對實(shí)數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)-輸出的數(shù)據(jù)在輸出域內(nèi)向左對齊共72頁第63

頁§2-7格式輸出函數(shù)printf實(shí)例1:#include<stdio.h>main(){printf("ThisisaCprogram.\n");}實(shí)例2:#include<stdio.h>main(){inta=1,b=2,c=100;printf("a=%d,b=%3d,d=%3d%%\n",a,b,a*c/b);

printf("%d,%o,%x\n",-a,-a,-a);}答案:a=1,b=

2,d=

50%-1,177777,

ffff例C2_7302例C2_7303共72頁第64

頁§2-7格式輸出函數(shù)printf實(shí)例3:#include<stdio.h>main(){charc='a';charch[]="Good-bye.";pri

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論