




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章最簡(jiǎn)單的C程序設(shè)計(jì)3.1順序程序設(shè)計(jì)舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.3C語(yǔ)句3.4數(shù)據(jù)的輸入輸出3.1順序程序設(shè)計(jì)舉例
例3.2計(jì)算存款利息。有1000元,想存一年。有三種方法可選:(1)活期,年利率為r1(2)一年期定期,年利率為r2(3)存兩次半年定期,年利率為r3
請(qǐng)分別計(jì)算出一年后按三種方法所得到的本息和。3.1順序程序設(shè)計(jì)舉例解題思路:確定計(jì)算本息和的公式。從數(shù)學(xué)知識(shí)可知:若存款額為p0,則:活期存款一年后本息和為:
p1=p0(1+r1)一年期定期存款,一年后本息和為:
p2=p0(1+r2)兩次半年定期存款,一年后本息和為:
3.1順序程序設(shè)計(jì)舉例算法:輸入p0,r1,r2,r3的值計(jì)算p1=p0(1+r1)計(jì)算p2=p0(1+r2)計(jì)算p3=p0(1+)(1+)輸出p1,p2,p33.1順序程序設(shè)計(jì)舉例#include<stdio.h>intmain(){floatp0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf(”%f\n%f\n%f\n”,p1,p2,p3);return0;}定義變量同時(shí)賦予初值3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點(diǎn)型數(shù)據(jù)3.2.6怎樣確定常量的類型3.2.7運(yùn)算符和表達(dá)式4.標(biāo)識(shí)符定義:用來(lái)標(biāo)識(shí)變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線C語(yǔ)言的關(guān)鍵字不能用作變量名大小寫(xiě)敏感長(zhǎng)度:有效長(zhǎng)度為32個(gè)字符。隨系統(tǒng)而異,但至少前8個(gè)字符有效命名原則:變量名和函數(shù)名中的英文字母一般用小寫(xiě),以增加可讀性
見(jiàn)名知意不宜混淆如l與l,o與0
在TC2.0及BC3.1中,變量名(標(biāo)識(shí)符)的有效長(zhǎng)度為1~32個(gè)字符,缺省值為32,但在VC中其長(zhǎng)度可達(dá)到255例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b
.字符非法
數(shù)字3不可作首字符
#字符非法
char是關(guān)鍵字
>字符非法
$不可作首字符3.2.1常量和變量1.常量:在程序運(yùn)行過(guò)程中,不占據(jù)任何存儲(chǔ)空間,其值不能被改變的量。符號(hào)常量:#definePI3.1416直接常量整型常量:如1000,12345,0,-345實(shí)型常量十進(jìn)制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)字符常量:如’?’轉(zhuǎn)義字符:如’\n’字符串常量:如”boy”宏定義
符號(hào)常量:用標(biāo)識(shí)符來(lái)代表常量。 其定義格式為:
#define符號(hào)常量常量
#defineNUM20#definePI3.1415926
#include<stdio.h>#definePRICE30voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}
運(yùn)行結(jié)果:total=300
行尾不能有分號(hào)
define前面一定要有#
符號(hào)常量名最好使用大寫(xiě)符號(hào)常量名最好有意義
不能被重新賦值
【例】符號(hào)常量舉例PRICE=10;變量1.變量的概念在程序運(yùn)行過(guò)程中,其值可以被改變的量稱為變量。在內(nèi)存中占據(jù)一定的存儲(chǔ)空間。
2.變量的兩個(gè)要素(1)變量名。每個(gè)變量都必須有一個(gè)名字──變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。(2)變量值。在程序運(yùn)行過(guò)程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過(guò)變量名來(lái)引用變量的值。3.2常量和變量3.變量的定義與初始化及使用在C語(yǔ)言中,要求對(duì)所有用到的變量,必須先定義、后使用;聲明變量即定義了變量,意味著給變量分配了內(nèi)存空間。在定義變量的同時(shí)進(jìn)行賦初值的操作為變量初始化。(1)變量定義的一般格式數(shù)據(jù)類型
[變量1,變量2,…,變量n];注意:在同一語(yǔ)句里不能混合定義不同類型的變量。變量定義位置:一般放在函數(shù)開(kāi)頭例:inta,b,c;floatdata;例:inta,b,c,floatdata;例:inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識(shí)符一條語(yǔ)句聲明多個(gè)同一類型變量時(shí),變量使用逗號(hào)分割例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;(2)變量初始化的一般格式數(shù)據(jù)類型變量名[=初值][,變量名2[=初值2]……];(3)變量的使用:先定義,后使用變量就是一個(gè)存儲(chǔ)對(duì)象,必須在聲明之后才能使用;聲明變量即定義了變量,意味著給變量分配了內(nèi)存空間;…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機(jī)數(shù)編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元<>例1intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain
main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語(yǔ)句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}3.2.2數(shù)據(jù)類型所謂類型,就是對(duì)數(shù)據(jù)分配存儲(chǔ)單元的安排,包括存儲(chǔ)單元的長(zhǎng)度(占多少字節(jié))以及數(shù)據(jù)的存儲(chǔ)形式不同的類型分配不同的長(zhǎng)度和存儲(chǔ)形式C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長(zhǎng)整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作本章所介紹的數(shù)據(jù)類型3.2.2數(shù)據(jù)類型C語(yǔ)言允許使用的數(shù)據(jù)類型:基本類型枚舉類型空類型派生類型指針類型數(shù)組類型結(jié)構(gòu)體類型共用體類型函數(shù)類型算術(shù)類型純量類型3.2.3整型數(shù)據(jù)1.整型數(shù)據(jù)的分類最基本的整型類型基本整型(int型):占2個(gè)或4個(gè)字節(jié)短整型(shortint):VC++6.0中占2個(gè)字節(jié)長(zhǎng)整型(longint):VC++6.0中占4個(gè)字節(jié)雙長(zhǎng)整型(longlongint):C99新增的1.分類根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為4類:(1)基本整型(類型關(guān)鍵字為int)。(2)短整型(類型關(guān)鍵字為short[int])。(3)長(zhǎng)整型(類型關(guān)鍵字為long[int])。(4)有符號(hào)雙長(zhǎng)整型[signed]longlong[int];無(wú)符號(hào)整型。無(wú)符號(hào)型又可與上述四種類型匹配而構(gòu)成:無(wú)符號(hào)基本型:類型說(shuō)明符為unsignedint或unsigned。無(wú)符號(hào)短整型:類型說(shuō)明符為unsignedshort。無(wú)符號(hào)長(zhǎng)整型:類型說(shuō)明符為unsignedlong無(wú)符號(hào)雙長(zhǎng)整型unsignedlonglong[int]注:各種無(wú)符號(hào)類型量所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有符號(hào)類型量相同。但由于省去了符號(hào)位,故不能表示負(fù)數(shù)。
基本數(shù)據(jù)類型<>類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(wú)(signed)int16-32768~32767320~4294967295unsignedlongunsignedshort160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無(wú)unsignedchar80~255說(shuō)明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,上表以IBMPC機(jī)為例:(signed)short16-32768~32767(signed)long32-2147483648~2147483647160~65535unsignedint3.3簡(jiǎn)單數(shù)據(jù)類型與表示范圍3.3.1整型數(shù)據(jù)
1.整型常量
十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示
.
如:123,-456,0八進(jìn)制整數(shù):由數(shù)字0開(kāi)頭,后跟數(shù)字0~7表示.如:0123,011十六進(jìn)制整數(shù):由0x或0X開(kāi)頭,后跟0~9,a~f,A~F表示.如0x123,0Xff思考題:下列整型常量哪些是非法的?
012,oX7A,00,078,0x5Ac,-0xFFFF,0034,7B。首字符不能是字母o八進(jìn)制數(shù)中不能有數(shù)字8
十進(jìn)制數(shù)中不能有字母B
數(shù)值的表示方法——原碼、反碼和補(bǔ)碼原碼:最高位為符號(hào)位(0:正數(shù),1:負(fù)數(shù)),其余各位為數(shù)值本身的絕對(duì)值2原=00000010(-2)原=10000010反碼:正數(shù):反碼與原碼相同負(fù)數(shù):負(fù)數(shù)的反碼是其原碼的符號(hào)位不動(dòng),其它位取反(-2)反=11111101補(bǔ)碼:正數(shù):原碼、反碼、補(bǔ)碼相同負(fù)數(shù):負(fù)數(shù)的補(bǔ)碼是其反碼+1(-2)補(bǔ)=11111110<>例:用原碼、補(bǔ)碼分別計(jì)算7-6=?(用一字節(jié)表示數(shù))原碼結(jié)論:計(jì)算機(jī)中采用補(bǔ)碼形式存儲(chǔ)數(shù)據(jù)000001117-6結(jié)果=-1310000110100011
01000001117補(bǔ)碼-6補(bǔ)碼結(jié)果=111111010000000
01補(bǔ)碼7+(-6)=?3.3整型數(shù)據(jù)3.整型數(shù)據(jù)的溢出#include<stdio.h>main(){inta,b;a=32767;b=a+1;printf(“%d”,”%d”,a,b);}結(jié)果32767-327680111111111111111327671000000000000000-32768數(shù)據(jù)溢出運(yùn)行不報(bào)錯(cuò)3.3整型數(shù)據(jù)3.整型數(shù)據(jù)的溢出#include<stdio.h>main(){unsigneda,b;a=65535;b=a+1;printf(“%u”,”%d”,a,b);}結(jié)果655350655350最高位為數(shù)值111111111111111100000000000000004.整數(shù)常量的分類
根據(jù)其值所在范圍確定其數(shù)據(jù)類型。在TC2.0或BC3.1下,如果整型常量的值位于-32768~32767之間,C語(yǔ)言認(rèn)為它是int型常量;如果整型常量的值位于-2147483648~2147483647之間,C語(yǔ)言認(rèn)為它是long型常量。
整型常量后加字母l或L,認(rèn)為它是longint型常量。比如123L、45l、0XAFL。
無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為U或u。例如:358u,0x38Au,235Lu均為無(wú)符號(hào)數(shù)。3.2.4字符型數(shù)據(jù)字符是按其代碼(整數(shù))形式存儲(chǔ)的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點(diǎn)數(shù)字化信息編碼
字符編碼:規(guī)定在計(jì)算機(jī)內(nèi)部,字符用怎樣的二進(jìn)制碼來(lái)表示。標(biāo)準(zhǔn)ASCII碼:用7位二進(jìn)制碼來(lái)表示字母、數(shù)字和專用符號(hào)。如:字母”A”在計(jì)算機(jī)內(nèi)部表示成01000001(字節(jié)的最高位為0)擴(kuò)充ASCII碼:用8位二進(jìn)制碼(稱為一個(gè)字節(jié))來(lái)表示符號(hào),且最高位為1。常用字符的ASCII碼大寫(xiě)字母A:65B:66C:67...Z:90小寫(xiě)字母a:97b:98c:99...z:122數(shù)字0:481:492:50...9:57其它<空格>:32
注:存儲(chǔ)一個(gè)西文字符(字母、數(shù)字、標(biāo)點(diǎn)及常用符號(hào))
占用一個(gè)字節(jié)。存儲(chǔ)一個(gè)漢字占2個(gè)字節(jié)
3.2.4字符型數(shù)據(jù)1.字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母:A~Z,a~z數(shù)字:0~9專門符號(hào):29個(gè):!”#&‘()*等空格符:空格、水平制表符、換行等不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等3.2.4字符型數(shù)據(jù)字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個(gè)形狀為’1’的符號(hào),在需要時(shí)按原樣輸出,在內(nèi)存中以ASCII碼形式存儲(chǔ),占1個(gè)字節(jié)整數(shù)1是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式)存儲(chǔ)的,占2個(gè)或4個(gè)字節(jié)0011000100000000000000013.2.4字符型數(shù)據(jù)2.字符變量用類型符char定義字符變量charc=’?’;
系統(tǒng)把“?”的ASCII代碼63賦給變量cprintf(”%d%c\n”,c,c);輸出結(jié)果是:63?30字符常量定義:用單引號(hào)括起來(lái)的單個(gè)普通字符或轉(zhuǎn)義字符.
字符常量的值:該字符的ASCII碼值轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示如‘a(chǎn)’‘A’‘?’‘\n’‘\101’如‘A’——65,‘a(chǎn)’——97,
‘0’——48,‘\n’——10<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁(yè)反斜線雙引號(hào)2位16進(jìn)制數(shù)代表的字符例:‘A’-------’\101’-------’\x41’--------65【例3-4】轉(zhuǎn)義字符舉例
#include<stdio.h>voidmain(){printf("\101\x42C\n");printf("\\CProgram\\\n");printf("Visual\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABC\CProgram\Visual‘C’如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()3.5字符型數(shù)據(jù)字符變量每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,因此只能存放一個(gè)字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。例:x的十進(jìn)制ASCII碼是120,y的十進(jìn)制ASCII碼是121。對(duì)字符變量a,b賦予'x'和'y'值:a='x';b='y';實(shí)際上是在a,b兩個(gè)單元內(nèi)存放120和121的二進(jìn)制代碼:0111100001111000a:b:所以字符看成是整型量。整型變量也可以賦以字符值。字符串常量
定義:用雙引號(hào)(“”)括起來(lái)的字符序列
存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志例1:字符串“HELLO”在內(nèi)存中0x480x450x4C0x4C0x4F0低地址高地址‘H’‘E’‘L’‘L’‘O’‘\0’字符串結(jié)束標(biāo)志例2:空串“”\0
字符常量與字符串常量不同0x41
0x41\0例‘A’“A”例:charch;ch=“A”;例:charch;ch=‘A’;沒(méi)有字符串變量,用字符數(shù)組存放字符常量與字符串常量區(qū)別所占字節(jié)數(shù)不同存放內(nèi)容個(gè)數(shù)不同,字符常量只能放單個(gè)字符定義方式不同0x41
0x41\0例‘A’“A”‘a(chǎn)bc’“abc”例:charch;ch=“A”;例:charch;ch=‘A’;沒(méi)有字符串變量,用字符數(shù)組存放3.2.5浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)是用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)float型(單精度浮點(diǎn)型)編譯系統(tǒng)為float型變量分配4個(gè)字節(jié)數(shù)值以規(guī)范化的二進(jìn)制數(shù)指數(shù)形式存放參見(jiàn)主教材圖3.11(1)浮點(diǎn)型常量也叫實(shí)數(shù)3.浮點(diǎn)型常量(2)它只有十進(jìn)制形式,全部是有符號(hào)數(shù)(3)兩種表示形式①一般形式②指數(shù)形式
(規(guī)范化的指數(shù)形式)由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成-123.45+1.33-0.150.234由尾數(shù)、字母e或E和指數(shù)部分(只能為整數(shù),可以帶符號(hào))組成.其一般形式為:aEn其中:a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù),都不可缺少。其可表示為a×10n0.25e+53.84E-23.浮點(diǎn)型常量(4)注意事項(xiàng)①采用一般格式時(shí),若整數(shù)部分或小數(shù)部分為0,可以不寫(xiě)②采用指數(shù)形式時(shí),尾數(shù)必須有,指數(shù)必須是整數(shù)③實(shí)型常量的默認(rèn)類型為double,可以在常量后面加f或F,指定為float型e4/*不合法,沒(méi)有尾數(shù)*/.e3/*不合法,沒(méi)有尾數(shù)*/8.7e3.9/*不合法,指數(shù)不是整數(shù)*/-.15/*合法的浮點(diǎn)型常量,整數(shù)部分為0*/172./*合法的浮點(diǎn)型常量,小數(shù)部分為0*/0./*double型常量0.0*/3.146f/*float型常量3.146*/3.實(shí)數(shù)類型的舍入誤差實(shí)型變量是用有限的存儲(chǔ)單元存儲(chǔ)的,因此能提供的有效數(shù)字是有限的,有效位外的數(shù)據(jù)將被舍去,由此產(chǎn)生舍入誤差。例1:main(){floata;doubleb;a=33333.33333;b=33333.33333333333333;printf("%f\n%f\n",a,b);例2:書(shū)例3.4輸出:33333.3333333.333333從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位后之后均為無(wú)效數(shù)字。b是雙精度型,有效位為十六位。但TurboC規(guī)定小數(shù)后最多保留六位,其余部分四舍五入。3.2.6怎樣確定常量的類型字符常量:由單撇號(hào)括起來(lái)的單個(gè)普通字符或轉(zhuǎn)義字符整型常量:不帶小數(shù)點(diǎn)的數(shù)值系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等浮點(diǎn)型常量:凡以小數(shù)形式或指數(shù)形式出現(xiàn)的實(shí)數(shù)C編譯系統(tǒng)把浮點(diǎn)型常量都按雙精度處理分配8個(gè)字節(jié)3.2.7C語(yǔ)言的運(yùn)算符與表達(dá)式
變量用來(lái)存放數(shù)據(jù),運(yùn)算符則用來(lái)處理數(shù)據(jù)。用運(yùn)算符將變量和常量連接起來(lái)的符合C語(yǔ)法規(guī)則的式子被稱為表達(dá)式。運(yùn)算符的分類:?jiǎn)文窟\(yùn)算符:只帶一個(gè)操作數(shù)的運(yùn)算符。如:++、--運(yùn)算符。雙目運(yùn)算符:帶兩個(gè)操作數(shù)的運(yùn)算符。如:+、-運(yùn)算符。三目運(yùn)算符:帶三個(gè)操作數(shù)的運(yùn)算符。如:?運(yùn)算符。
學(xué)習(xí)運(yùn)算符時(shí)應(yīng)注意:
運(yùn)算符的功能:該運(yùn)算符主要用于做什么運(yùn)算。與運(yùn)算量關(guān)系:要求運(yùn)算量的個(gè)數(shù)及運(yùn)算量的類型。運(yùn)算符的優(yōu)先級(jí):表達(dá)式中包含多個(gè)不同運(yùn)算符時(shí)運(yùn)算符運(yùn)算的先后次序。運(yùn)算符的結(jié)合性:同級(jí)別運(yùn)算符的運(yùn)算順序(指左結(jié)合性還是右結(jié)合性)。運(yùn)算結(jié)果的類型:表達(dá)式運(yùn)算后最終所得到的值的類型。C運(yùn)算符算術(shù)運(yùn)算符:(+-*/%++--)關(guān)系運(yùn)算符:(<<===>>=!=)邏輯運(yùn)算符:((!&&||)位運(yùn)算符:(<<>>~|^&)賦值運(yùn)算符:(=及其擴(kuò)展)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*&)求字節(jié)數(shù):(sizeof)強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:(.->)下標(biāo)運(yùn)算符:([])其它:(()-)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性(1)C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)C語(yǔ)言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算。而在一個(gè)運(yùn)算量?jī)蓚?cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理。
(2)結(jié)合性它是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語(yǔ)言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件
運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。基本算術(shù)運(yùn)算符:
+-*/%
結(jié)合方向:從左向右優(yōu)先級(jí):----->*/%----->+-
(2)(3)(4)
說(shuō)明:
“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)
%要求兩側(cè)均為整型數(shù)據(jù)例:
5/2=-5/2.0=例:
5%2=-5%2=1%10=
5%1=5.5%23.4.3算術(shù)運(yùn)算符、算術(shù)表達(dá)式
2-2.51-110()除法運(yùn)算求余數(shù)運(yùn)算3.2.7運(yùn)算符和表達(dá)式說(shuō)明兩個(gè)整數(shù)相除的結(jié)果為整數(shù)如5/3的結(jié)果值為1,舍去小數(shù)部分如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,舍入方向不固定。例如,-5/3,有的系統(tǒng)中得到的結(jié)果為-1,在有的系統(tǒng)中則得到結(jié)果為-2VC++采取“向零取整”的方法
如5/3=1,-5/3=-1,取整后向零靠攏自增、自減運(yùn)算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;<>//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4自增、自減運(yùn)算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)說(shuō)明:++--不能用于常量和表達(dá)式,如5++,(a+b)++++--結(jié)合方向:自右向左優(yōu)先級(jí):-++-------->*/%----->+-(2)(3)(4)例j+++k;(j++)+k;j+(++k)賦值運(yùn)算符和表達(dá)式簡(jiǎn)單賦值運(yùn)算符符號(hào):=格式:變量標(biāo)識(shí)符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量復(fù)合賦值運(yùn)算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2
exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)<>例a=3;d=func();c=d+2;3.3.2
賦值運(yùn)算符、賦值表達(dá)式
x=x*y+8×說(shuō)明:結(jié)合方向:自右向左優(yōu)先級(jí):14賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例floatf;inti;i=10;f=i;則f=10.0;例inti;i=2.56;//結(jié)果i=2;例:inta=2;a%=4-1;4-1=3a%=a%3=2%3=2即a=23.3.2
賦值運(yùn)算符、賦值表達(dá)式
賦值語(yǔ)句“=”左邊必須是變量名,不能是常量或其它表達(dá)式。例如:30=a;b+2=5;都是錯(cuò)誤的?!?”表示賦值
“==”表示相等,二者切勿混淆!例如:a=b;a==b;a=b=c=10;對(duì)inta=b=c=10;錯(cuò)注意例2:a=12;a+=a-=a*a;//a=-264等價(jià)于a=a+(a=a-(a*a))a*a144從左到右2.a-=a*a從右到左
a=a-a*a
=12-144=-1323.a+=a-=a*a
a=a+(-132)
=-132-132=-264注意:a=-1323.3.2
賦值運(yùn)算符、賦值表達(dá)式
逗號(hào)運(yùn)算符和表達(dá)式形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右優(yōu)先級(jí):15逗號(hào)表達(dá)式的值:等于表達(dá)式n的值用途:常用于循環(huán)for語(yǔ)句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);<>//a=15,表達(dá)式值60//a=15,表達(dá)式值20//賦值表達(dá)式,表達(dá)式值18,x=18//逗號(hào)表達(dá)式,表達(dá)式值18,x=3//1,2,3//3,2,3數(shù)據(jù)類型轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換自動(dòng)轉(zhuǎn)換輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式運(yùn)算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運(yùn)算時(shí)不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型賦值轉(zhuǎn)換------把一個(gè)值賦給與其類型不同的變量時(shí)發(fā)生函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換3.4.2
強(qiáng)制類型轉(zhuǎn)換符
自動(dòng)轉(zhuǎn)換
(1)短長(zhǎng)度的數(shù)據(jù)類型→長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型
方法:直接將無(wú)符號(hào)短長(zhǎng)度的數(shù)據(jù)類型的數(shù)據(jù)作為長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分,長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的高位部分補(bǔ)零。
無(wú)符號(hào)短長(zhǎng)度的數(shù)據(jù)類型→無(wú)符號(hào)或有符號(hào)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型xx………x無(wú)符號(hào)短長(zhǎng)度的數(shù)據(jù)類型長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型xx………x00.....0.....高位部分補(bǔ)03.4.2
強(qiáng)制類型轉(zhuǎn)換符
自動(dòng)轉(zhuǎn)換
(1)短長(zhǎng)度的數(shù)據(jù)類型→長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型
方法:直接將有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型的數(shù)據(jù)作為長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分,然后將低位部分的最高位(即有符號(hào)短長(zhǎng)度數(shù)據(jù)的符號(hào)位)向長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的高位部分?jǐn)U展。
有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型→無(wú)符號(hào)或有符號(hào)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型zx………x有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型zx………xz符號(hào)位向高位部分?jǐn)U展………zz符號(hào)位例如:
charch=2;inta=-2;intb;unsignedlongu;b=ch;
//b的值將是2
u=a;
//u的值將是0xfffffffe3.4.2強(qiáng)制類型轉(zhuǎn)換符
自動(dòng)轉(zhuǎn)換
(2)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型→短長(zhǎng)度的數(shù)據(jù)類型
方法:直接截取長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分(長(zhǎng)度為短長(zhǎng)度的數(shù)據(jù)類型的長(zhǎng)度)作為短長(zhǎng)度數(shù)據(jù)類型的數(shù)據(jù)。
xx………x短長(zhǎng)度的數(shù)據(jù)類型長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型yy………yxx………x例如:
inta=-32768;//假設(shè)int數(shù)據(jù)為16位
unsignedlongb=0xffffaa00;charch;intc;ch=a;
//ch的值將是0c=b;
//c的值將是0xaa00隱式轉(zhuǎn)換什么情況下發(fā)生運(yùn)算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換------把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型<>顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)一般形式:(類型名)(表達(dá)式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說(shuō)明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3精度損失問(wèn)題較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生<>x=2.8,y=3.1(int)(x+y)結(jié)果=5(int)x+y結(jié)果=5.13.4.5算術(shù)運(yùn)算符中數(shù)據(jù)類型轉(zhuǎn)換規(guī)則
低高doublefloatlongunsignedintchar,shortlongdouble說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換例:
charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例:
inti;floatf;doubled;longl;intintdoubledoubledoubledoubledoubledouble【例3-8】不同類型數(shù)據(jù)間的算術(shù)運(yùn)算#include<stdio.h>voidmain(){floata,b,c;a=7/2;//計(jì)算7/2得int型值3,因此a的值為3.0b=7/2*1.0;//計(jì)算7/2得int型值3,再與1.0相乘,因此b的值為3.0c=1.0*7/2;//先計(jì)算1.0*7得double型的結(jié)果7.0,然后再計(jì)算
7.0/2,因此c的值是3.5printf("a=%f,b=%f,c=%f",a,b,c);}a=3.000000,b=3.000000,c=3.5000003.2.7運(yùn)算符和表達(dá)式4.不同類型數(shù)據(jù)間的混合運(yùn)算:+、-、*、/運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為float或double型,結(jié)果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算(2)如果int型與float或double型數(shù)據(jù)進(jìn)行運(yùn)算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算,結(jié)果是double型(3)字符型數(shù)據(jù)與整型數(shù)據(jù)進(jìn)行運(yùn)算,就是把字符的ASCII代碼與整型數(shù)據(jù)進(jìn)行運(yùn)算3.2.7運(yùn)算符和表達(dá)式
例3.3給定一個(gè)大寫(xiě)字母,要求用小寫(xiě)字母輸出。解題思路:關(guān)鍵是找到大、小寫(xiě)字母間的內(nèi)在聯(lián)系同一個(gè)字母,用小寫(xiě)表示的字符的ASCII代碼比用大寫(xiě)表示的字符的ASCII代碼大323.2.7運(yùn)算符和表達(dá)式#include<stdio.h>intmain(){charc1,c2;c1=’A’;c2=c1+32;printf("%c\n",c2);printf(”%d\n”,c2);return0;}將字符‘A’的ASCII代碼65放到c1中將65+32的結(jié)果放到c2中用字符形式輸出用十進(jìn)制形式輸出練習(xí)若有定義:int
x=3,y=2;float
a=2.5,b=3.5;則表達(dá)式
(x+y)%2+(int)a/(int)b的值為()
13.3C語(yǔ)句3.3.1C語(yǔ)句的作用和分類3.3.2最基本的語(yǔ)句----賦值語(yǔ)句C程序的執(zhí)行部分是由語(yǔ)句組成的。程序的功能也是由執(zhí)行語(yǔ)句實(shí)現(xiàn)的。C語(yǔ)句可分為以下五類:表達(dá)式語(yǔ)句函數(shù)調(diào)用語(yǔ)句控制語(yǔ)句復(fù)合語(yǔ)句空語(yǔ)句3.3.1 C語(yǔ)句的作用和分類1. 表達(dá)式語(yǔ)句:
表達(dá)式語(yǔ)句由表達(dá)式加上分號(hào)“;”組成。其一般形式為:表達(dá)式;執(zhí)行表達(dá)式語(yǔ)句就是計(jì)算表達(dá)式的值。
例如:
x=y+z;賦值語(yǔ)句;
y+z;加法運(yùn)算語(yǔ)句,但計(jì)算結(jié)果不能保留,無(wú)實(shí)際意義;
i++;自增1語(yǔ)句,i值增1。函數(shù)調(diào)用語(yǔ)句:由函數(shù)名、實(shí)際參數(shù)加上分號(hào)“;”組成。其一般形式為:
函數(shù)名(實(shí)際參數(shù)表);執(zhí)行函數(shù)語(yǔ)句就是調(diào)用函數(shù)體并把實(shí)際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)函數(shù)體中的語(yǔ)句,求取函數(shù)值例如:printf(“CProgram”);調(diào)用庫(kù)函數(shù),輸出字符串。sum=add(x,y);調(diào)用add函數(shù)求兩數(shù)和。add為自定義函數(shù)。
/*example1.1calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){inta,b,sum;a=10;b=24;sum=add(a,b);printf(”sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty){intz;z=x+y;return(z);}控制語(yǔ)句:控制語(yǔ)句用于控制程序的流程,以實(shí)現(xiàn)程序的各種結(jié)構(gòu)方式。它們由特定的語(yǔ)句定義符組成。C語(yǔ)言有九種控制語(yǔ)句??煞殖梢韵氯悾?)條件判斷語(yǔ)句:if語(yǔ)句、switch語(yǔ)句;2)循環(huán)執(zhí)行語(yǔ)句:dowhile語(yǔ)句、while語(yǔ)句、for語(yǔ)句;3)轉(zhuǎn)向語(yǔ)句:break語(yǔ)句、goto語(yǔ)句、continue語(yǔ)句、
return語(yǔ)句。4.1C語(yǔ)句概述
復(fù)合語(yǔ)句:把多個(gè)語(yǔ)句用括號(hào){}括起來(lái)組成的一個(gè)語(yǔ)句稱復(fù)合語(yǔ)句。例如:
{x=y+z;a=b+c;printf(“%d%d”,x,a);
}是一條復(fù)合語(yǔ)句。注意:在程序中應(yīng)把復(fù)合語(yǔ)句看成是單條語(yǔ)句,而不是多條語(yǔ)句。復(fù)合語(yǔ)句內(nèi)的各條語(yǔ)句都必須以分號(hào)“;”結(jié)尾,在括號(hào)“}”外不能加分號(hào)。4.1C語(yǔ)句概述
5.空語(yǔ)句:只有分號(hào)“;”組成的語(yǔ)句稱為空語(yǔ)句??照Z(yǔ)句是什么也不執(zhí)行的語(yǔ)句。在程序中空語(yǔ)句可用來(lái)作空循環(huán)體。例如
while(getchar()!='\n')
;本語(yǔ)句的功能是:只要從鍵盤輸入的字符不是回車則重新輸入。這里的循環(huán)體為空語(yǔ)句。3.3.2最基本的語(yǔ)句----賦值語(yǔ)句
例3.4給出三角形的三邊長(zhǎng),求三角形面積。3.3.2最基本的語(yǔ)句----賦值語(yǔ)句解題思路:假設(shè)給定的三個(gè)邊符合構(gòu)成三角形的條件關(guān)鍵是找到求三角形面積的公式公式為:其中s=(a+b+c)/2#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);printf("area=%f\n",area);return0;}對(duì)邊長(zhǎng)a、b、c賦值計(jì)算s計(jì)算area#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);printf("area=%f\n",area);return0;}數(shù)學(xué)函數(shù),計(jì)算平方根調(diào)用數(shù)學(xué)函數(shù)加此行#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);printf("area=%f\n",area);return0;}轉(zhuǎn)義字符,使輸出位置跳到下一個(gè)tab位置調(diào)用數(shù)學(xué)函數(shù)加此行3.4數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念3.4.3用printf函數(shù)輸出數(shù)據(jù)3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.4.5字符數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例例3.5求
方程的根。a、b、c由鍵盤輸入
設(shè)
>03.4.1輸入輸出舉例解題思路:首先要知道求方程式的根的方法。由數(shù)學(xué)知識(shí)已知:如果
≥0,則一元二次方程有兩個(gè)實(shí)根:若記#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}程序中調(diào)用數(shù)學(xué)函數(shù)sqrt輸入a,b,c的值#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}輸入的是雙精度型實(shí)數(shù)#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}要求輸入3個(gè)實(shí)數(shù)自動(dòng)轉(zhuǎn)成實(shí)數(shù)后賦給a,b,c#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}輸出數(shù)據(jù)占7列,其中小數(shù)占2列3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念幾乎每一個(gè)C程序都包含輸入輸出輸入輸出是程序中最基本的操作之一3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(1)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的從計(jì)算機(jī)向輸出設(shè)備(如顯示器、打印機(jī)等)輸出數(shù)據(jù)稱為輸出從輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)向計(jì)算機(jī)輸入數(shù)據(jù)稱為輸入3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(2)C語(yǔ)言本身不提供輸入輸出語(yǔ)句輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)的printf和scanf不是C語(yǔ)言的關(guān)鍵字,而只是庫(kù)函數(shù)的名字putchar、getchar、puts、gets3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(3)在使用輸入輸出函數(shù)時(shí),要在程序文件的開(kāi)頭用預(yù)編譯指令#include<stdio.h>或#include″stdio.h″3.4.3用printf函數(shù)輸出數(shù)據(jù)在C程序中用來(lái)實(shí)現(xiàn)輸出和輸入的,主要是printf函數(shù)和scanf函數(shù)這兩個(gè)函數(shù)是格式輸入輸出函數(shù)用這兩個(gè)函數(shù)時(shí),必須指定格式3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);格式聲明3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);普通字符3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);可以是常量、變量或表達(dá)式一般格式printf("格式控制字符串",表達(dá)式1,表達(dá)式2,…,表達(dá)式n);功能按照“格式控制字符串”的要求,將表達(dá)式1,表達(dá)式2,…,表達(dá)式n的值顯示在計(jì)算機(jī)屏幕上。
說(shuō)明格式控制字符串用于指定輸出格式。它包含兩類字符:
常規(guī)字符:包括可顯示字符和用轉(zhuǎn)義字符表示的字符。
格式控制符:以%開(kāi)頭的一個(gè)或多個(gè)字符,以說(shuō)明輸出數(shù)據(jù)的類型、形式、長(zhǎng)度、小數(shù)位數(shù)等。其格式為:%[修飾符]格式轉(zhuǎn)換字符例:
longintx=0x8AB6;printf(“TheValueofxis%ld\n”,x);常規(guī)字符常規(guī)字符(轉(zhuǎn)義符)格式控制符(修飾符)格式控制符(格式轉(zhuǎn)換符)main(){inta=88,b=89;printf("%d%d\n",a,b);printf("%d□%d\n",a,b);printf("%d,%d\n",a,b);printf("%c,%c\n",a,b);printf("a=%d,b=%d",a,b);}88□89888988,89X,Ya=88,b=89
printf函數(shù)中的格式轉(zhuǎn)換字符及其含義
格式轉(zhuǎn)換符含義對(duì)應(yīng)的表達(dá)式數(shù)據(jù)類型%d或%i以十進(jìn)制形式輸出一個(gè)整型數(shù)據(jù)。例如:inta=20;printf("%d",a);//輸出20有符號(hào)整型%x,%X以十六進(jìn)制形式輸出一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。例如:inta=164;printf("%x",a);//輸出a4printf("%X",a);//輸出A4無(wú)符號(hào)整型%o(字母o)以八進(jìn)制形式輸出一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。例如:inta=164;printf("%o",a);//輸出244無(wú)符號(hào)整型%u以十進(jìn)制形式輸出一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。例如:inta=-1;printf("%u",a);//BC下輸出65535,VC下4294967295無(wú)符號(hào)整型%c輸出一個(gè)字符型數(shù)據(jù)。例如:charch='A';printf("%c",ch);//輸出A字符型例2:inta=-1printf(“%d,%o”,a,a);1111111111111111177777輸出:-1,177777例3:unsignedintb=-1;printf(“b=%d,%o,%x,%u”,b,b,b,b);輸出:-1,177777,ffff,65535例4:unsignedintb=65535;
inta;
a=b:
printf(“%d”,a)輸出:-13.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符c格式符。用來(lái)輸出一個(gè)字符charch=’a’;printf(”%c”,ch);或printf(”%5c”,ch);輸出字符:a3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符s格式符。用來(lái)輸出一個(gè)字符串printf(”%s”,”CHINA”);輸出字符串:CHINA3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出①不指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%f
例3.6用%f輸出實(shí)數(shù),只能得到6位小數(shù)。doublea=1.0;printf(”%f\n”,a/3);dx,Xoucse,Efg%%1.格式字符:十六進(jìn)制無(wú)符號(hào)整數(shù)不帶符號(hào)十進(jìn)制整數(shù)十進(jìn)制整數(shù)指數(shù)形式浮點(diǎn)小數(shù)單一字符字符串八進(jìn)制無(wú)符號(hào)整數(shù)小數(shù)形式浮點(diǎn)小數(shù)e和f中較短一種百分號(hào)本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%此外,在使用printf函數(shù)時(shí)還要注意以下幾點(diǎn):格式控制字符串后面表達(dá)式的個(gè)數(shù)一般要與格式控制字符串中的格式控制符的個(gè)數(shù)相等。格式轉(zhuǎn)換符中,除了X、E、G以外,其它均為小寫(xiě)。表達(dá)式的實(shí)際數(shù)據(jù)類型要與格式轉(zhuǎn)換符所表示的類型相符,printf函數(shù)不會(huì)進(jìn)行不同數(shù)據(jù)類型之間的自動(dòng)轉(zhuǎn)換。象整型數(shù)據(jù)不可能自動(dòng)轉(zhuǎn)換成浮點(diǎn)型數(shù)據(jù),浮點(diǎn)型數(shù)據(jù)也不可能自動(dòng)轉(zhuǎn)換成型數(shù)數(shù)據(jù)
2.附加格式說(shuō)明符(修飾符).n對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)對(duì)字符串,指定實(shí)際輸出位數(shù)修飾符功能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長(zhǎng)度<m,左補(bǔ)空格;否則按實(shí)際輸出輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)-指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)+輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填00在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0x#在d,o,x,u前,指定輸出精度為long型l
類型轉(zhuǎn)換字符d──以帶符號(hào)的十進(jìn)制整數(shù)形式輸出。
[例1]類型轉(zhuǎn)換字符d的使用。
main(){intnum1=123;longnum2=123456;/*用3種不同格式,輸出int型數(shù)據(jù)num1的值*/printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",num1,num1,num1,num1);/*用3種不同格式,輸出long型數(shù)據(jù)num2的值*/printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);
} num1=123,num1=□□123,num1=123□□,num1=123num2=123456,num2=□□123456,num2=1234563.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出②指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nf
printf("%20.15f\n",1/3);
printf("%.0f\n”,10000/3.0);3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出②指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nffloata;a=10000/3.0;printf("%f\n",a);3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出③輸出的數(shù)據(jù)向左對(duì)齊,用%-m.nf3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出float型數(shù)據(jù)只能保證6位有效數(shù)字double型數(shù)據(jù)能保證15位有效數(shù)字計(jì)算機(jī)輸出的數(shù)字不都是絕對(duì)精確有效的
2)類型轉(zhuǎn)換字符f──以小數(shù)形式、按系統(tǒng)默認(rèn)的寬度,輸出單精度和雙精度實(shí)數(shù)。main(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f);printf("d1+d2=%f\n",d1+d2);}
程序運(yùn)行結(jié)果如下:
123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46d1+d2=3333333333333.333010 注意:%f不指定字段寬度,由系統(tǒng)使整數(shù)部分全部輸出,并輸出6位小數(shù)例5:charc=‘a(chǎn)’;
inti=97;
printf(“%c,%d,%3c”,c,c,c);
printf(“%c,%d”,i,i);
printf(“%s,%3s,%7.2s,%.4s,%-5.3s”,“china”,“china”,“china”,“china”,“china”,);a,97,□□aa,97china,china,□□□□□ch,chin,chi□□輸出占m列,但只取字符串左邊n個(gè)字符,這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格(若前面有負(fù)號(hào),n個(gè)字符數(shù)處在m列的左側(cè),右補(bǔ)空格)3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實(shí)數(shù)%e,VC++給出小數(shù)位數(shù)為6位
指數(shù)部分占5列
小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字printf(”%e”,123.456);
輸出:1.234560
e+0023.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實(shí)數(shù)%m.neprintf(”%13.2e”,123.456);
輸出:1.23e+002(前面有4個(gè)空格)3.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf函數(shù)的一般形式scanf(格式控制,地址表列)含義同printf函數(shù)3.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf函數(shù)的一般形式scanf(格式控制,地址表列)可以是變量的地址,或字符串的首地址格式輸入函數(shù)格式:scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的存儲(chǔ)單元中,并按回車鍵結(jié)束返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù)地址表:變量的地址,常用取地址運(yùn)算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%x”,&a);
輸入:11
則a=173.4.4用scanf函數(shù)輸入數(shù)據(jù)2.scanf函數(shù)中的格式聲明與printf函數(shù)中的格式聲明相似以%開(kāi)始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符scanf("a=%f,b=%f,c=%f",&a,&b,&c);3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時(shí)應(yīng)注意的問(wèn)題scanf(”%f%f%f”,a,b,c);錯(cuò)scanf(”%f%f%f”,&a,&b,&c);對(duì)對(duì)于scanf("a=%f,b=%f,c=%f",&a,&b,&c);
132↙
錯(cuò)
a=1,b=3,c=2↙
對(duì)
a=1b=3c=2↙
錯(cuò)scanf("%5.2f",&a);
scanf("%5f",&a);
附加格式說(shuō)明符(修飾符)l修飾符功能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實(shí)數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,指定輸入項(xiàng)讀入后不賦給變量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);
輸入19991015
則19
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械招商銷售合同范例
- 關(guān)于鎢砂合同范例
- 借款動(dòng)產(chǎn)質(zhì)押合同范例
- 加盟養(yǎng)殖合同范例
- 借名貸款合同范例
- 口腔醫(yī)生就業(yè)合同范例
- 醫(yī)院職務(wù)聘用合同范例
- 住建部采購(gòu)合同范例
- 買賣合同保證合同范例
- 賣牦牛合同范本
- 女職工權(quán)益保護(hù)
- 加油站改造施工方案
- 2022版義務(wù)教育(道德與法治)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 儀容儀表禮節(jié)禮貌培訓(xùn)(定)
- 2023年衢州市屬事業(yè)單位選調(diào)考試真題及答案
- 人教版三年級(jí)數(shù)學(xué)下冊(cè)除數(shù)是一位數(shù)的除法豎式計(jì)算500道題
- 結(jié)核病知識(shí)講座計(jì)劃
- 年產(chǎn)十萬(wàn)噸酸奶工廠設(shè)計(jì)說(shuō)明書(shū)
- 《12露天礦測(cè)量》培訓(xùn)課件
- 依法治企知識(shí)講座課件
- 《我和書(shū)的故事》作文指導(dǎo)課件
評(píng)論
0/150
提交評(píng)論