C語言基礎(chǔ)知識(shí)總結(jié)_第1頁
C語言基礎(chǔ)知識(shí)總結(jié)_第2頁
C語言基礎(chǔ)知識(shí)總結(jié)_第3頁
C語言基礎(chǔ)知識(shí)總結(jié)_第4頁
C語言基礎(chǔ)知識(shí)總結(jié)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言基礎(chǔ)知識(shí)總結(jié)主要內(nèi)容:1.C數(shù)據(jù)類型 2.簡單的算術(shù)運(yùn)算和表達(dá)式 3.鍵盤輸入和屏幕輸出 4.選擇控制結(jié)構(gòu) 5.循環(huán)控制結(jié)構(gòu)總結(jié)風(fēng)格:分條羅列,主要是知識(shí)點(diǎn),有例題不多 一、C數(shù)據(jù)類型1.C語言處理兩種數(shù)據(jù):常量和變量2.常量:整形常量、實(shí)型常量、字符常量、字符串常量、枚舉常量3.整形常量:正整數(shù)、負(fù)整數(shù)、零 eg: 10,-30,04.實(shí)型常量:實(shí)數(shù)、小數(shù)、浮點(diǎn)數(shù) eg: 3.14,-0.56,18.05.字符常量:字符型常量、用單引號(hào)括起來的任意字符 eg: x X ? , 96.字符串常量:用雙引號(hào)括起來的一個(gè)或多個(gè)字符 eg: x Hello Y787.在C程序中,整型常量可以用

2、十進(jìn)制、八進(jìn)制、十六進(jìn)制形式表示,但編譯器都會(huì)自動(dòng)將其轉(zhuǎn)換成二進(jìn)制存儲(chǔ)8.整型常量的類型:長整型、短整型、有符號(hào)、無符號(hào)。9.不同進(jìn)制的整型常量的表示形式: 1)十進(jìn)制:09數(shù)字組合,可帶正負(fù)號(hào) eg: 256,-128,0,+7 2)八進(jìn)制:0開頭,后面跟07數(shù)字組合 eg: 021,-017 3)十六進(jìn)制:0x(0X)開頭,后跟09,af(AF)數(shù)字組合 eg:0x12,-0x1F10.不同類型的整形常量的表示形式: 1) 有符號(hào)整型常量:默認(rèn)int型定義為有符號(hào)整數(shù),無需signed eg:10,-30,0 2) 無符號(hào)整形常量:常量值后跟u或U,只能表示=0的數(shù) eg:30u,256U

3、 3) 長整型常量:常量值后跟l或L eg:-256l,1024L 4) 無符號(hào)長整型常量:常量值后跟LU、Lu 、lU 、lu eg:30lu11.C程序中,實(shí)型常量兩種表示形式:小數(shù)、指數(shù)12.不同形式的實(shí)型常量的表示形式: 1) 十進(jìn)制表示形式:數(shù)字和小數(shù)點(diǎn)組成,必須要有小數(shù)點(diǎn),整數(shù)部分可省略 eg:0.123, -12.35, .98 2) 指數(shù)形式:e或E代表以10為底的指數(shù), e左邊是數(shù)值部分(有效數(shù)字,可以是整數(shù)、小數(shù),不能省略),e右邊是指數(shù)部分(必須是整數(shù)形式) eg:3.45e-613.實(shí)型常量有單精度和雙精度之分,無有符號(hào)和無符號(hào)之分14.不同類型的實(shí)型常量表示形式: 1

4、)單精度實(shí)型常量:常量值后跟F或f eg:1.25F,1.25e-2f 2)雙精度實(shí)型常量(double):實(shí)型常量默認(rèn)按雙精度處理 eg:0.123,-12.35, .98 3)長雙精度實(shí)型常量(long double):常量值后跟L或l eg:1.25L15.變量:在程序執(zhí)行過程中可以改變的量16.變量在必須先定義后使用,定義時(shí)需要聲明變量的類型和變量名,一般形式:類型關(guān)鍵字 變量名;17.關(guān)鍵字是C語言預(yù)先規(guī)定具有特殊意義的單詞,類型關(guān)鍵字用于聲明變量的類型18.標(biāo)準(zhǔn)C語言編寫的程序都是以main()作為開頭,指定了C程序執(zhí)行的起點(diǎn),在C程序中只能出現(xiàn)一次,稱為主函數(shù)19.C程序總是從m

5、ain函數(shù)開始執(zhí)行,與他在程序中的位置無關(guān),main函數(shù)主體部分稱為語句,用括起來,一般C語句以;結(jié)束20.變量的類型決定了編譯器為其分配內(nèi)存單元的字節(jié)數(shù)、數(shù)據(jù)在內(nèi)存單元中的存放形式、該類型變量合法的取值范圍以及該類型變量可參與的運(yùn)算種類21.變量名是用戶定義的標(biāo)識(shí)符,用于標(biāo)識(shí)內(nèi)存中具體的存儲(chǔ)單元,存放的數(shù)據(jù)稱為變量的值22.新數(shù)據(jù)存放于存儲(chǔ)單元時(shí),舊數(shù)據(jù)將會(huì)被修改,反應(yīng)變量的值是可以改變的23.變量名的命名規(guī)則: 1)標(biāo)識(shí)符只能由英文字母、數(shù)字、下劃線組成 2)標(biāo)識(shí)符必須以字母或下劃線開頭 3)不允許使用C關(guān)鍵字為標(biāo)識(shí)符命名 4)標(biāo)識(shí)符可以包含任意多個(gè)字符,但一般會(huì)有最大長度限制,預(yù)編譯器有

6、關(guān),一般不會(huì)超過,最好不超過8個(gè)字符 注意:標(biāo)識(shí)符區(qū)分大小寫 eg:x y3 _imax ELSE X A_to_B (合法) eg:7x int #No bad one re-input(不合法)24.標(biāo)準(zhǔn)C規(guī)定所有變量必須在第一條可執(zhí)行語句之前定義25.在同一條語句中可以同時(shí)定義多個(gè)相同類型變量,多個(gè)變量之間用逗號(hào)分隔,沒有順序要求26.在使用標(biāo)準(zhǔn)輸入/輸出函數(shù)時(shí),必須在程序開頭加上編譯預(yù)處理命令27.中stdio為頭文件,std是standard,i為input,o為output,h為head28.編譯預(yù)處理命令#include的作用:將在輸入/輸出函數(shù)的頭文件stdio.h包含到用戶源

7、文件中29.%d按十進(jìn)制整數(shù)個(gè)格式輸出,%f按十進(jìn)制小數(shù)格式輸出,一般輸出6位小數(shù),%c輸出一個(gè)字符,n換行,雙引號(hào)內(nèi)字符原樣輸出30.不同類型的數(shù)據(jù)在內(nèi)存中占用不同大小的存儲(chǔ)單元,他們所能表示的數(shù)據(jù)的取值范圍各不相同,不同類型的數(shù)據(jù)表示形式及其可以參與的運(yùn)算種類也不同31.定義整型變量時(shí),只要不指定為無符號(hào)型,其隱含類型為有符號(hào)型,signed通常省略不寫32.C程序中每個(gè)變量的值都是按字節(jié)編址,都被存儲(chǔ)在內(nèi)存中特定的存儲(chǔ)單元中,這個(gè)存儲(chǔ)空間實(shí)際是一個(gè)線性地址表,即每個(gè)字節(jié)的存儲(chǔ)空間對應(yīng)一個(gè)唯一的地址33.1個(gè)字節(jié)等于8個(gè)二進(jìn)制位,即8個(gè)位為一個(gè)字節(jié),一個(gè)字節(jié)可以表示的整數(shù)最小為0,最大25

8、5,即8個(gè)位可以表示0-255之間的數(shù),一個(gè)二進(jìn)制位的值只能是0或134.同種類型在不同的平臺(tái)所占字節(jié)數(shù)不同,要計(jì)算數(shù)據(jù)類型所占內(nèi)存空間的字節(jié)數(shù)需要用sizeof()運(yùn)算符35.sizeof是C語言關(guān)鍵字,不是函數(shù)名,sizeof(變量名)計(jì)算一個(gè)變量所占內(nèi)存的字節(jié)數(shù)36.計(jì)算不同類型運(yùn)算符的表達(dá)式時(shí),要考慮運(yùn)算符的優(yōu)先級和結(jié)合性37.正數(shù)的反碼、補(bǔ)碼與原碼都相同,負(fù)數(shù)的補(bǔ)碼等于反碼加138.在計(jì)算機(jī)內(nèi)存中負(fù)數(shù)都是用補(bǔ)碼來表示39.對于實(shí)數(shù),無論小數(shù)海曙指數(shù)形式,在計(jì)算機(jī)內(nèi)存中都采用浮點(diǎn)形式來存儲(chǔ)40.浮點(diǎn)數(shù)分為階碼、尾數(shù)兩部分,實(shí)數(shù)N=S*pow(r,j),S為尾數(shù)(無論正負(fù),規(guī)定用存小數(shù))

9、,j為階碼(無論正負(fù),必須是整數(shù)),r是基數(shù) eg:10.0111=0.100111*pow(2,10)41.階碼所占位數(shù)決定實(shí)數(shù)的取值范圍,尾數(shù)所占位數(shù)決定實(shí)數(shù)的精度,尾數(shù)的符號(hào)決定實(shí)數(shù)的正負(fù),階碼和尾數(shù)的字節(jié)大小與編譯器有關(guān)42.float型變量能接收實(shí)型常量的7位有效數(shù)字,double型變量能接收16位43.運(yùn)算符的優(yōu)先級:單目運(yùn)算算術(shù)運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算條件運(yùn)算賦值運(yùn)算算術(shù)運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算條件運(yùn)算賦值運(yùn)算逗號(hào)運(yùn)算9.計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位、百位數(shù)字之和#includevoid main()int x=321;int a,b,c,sum;a=x%10;/a=1b=(x/1

10、0)%10;/b=2c=x/100;/c=3sum=a+b+c;printf(a=%d,b=%d,c=%dnsum=%dn,a,b,c,sum);10.涉及算術(shù)運(yùn)算的復(fù)合賦值運(yùn)算符有5個(gè):+=,-=,*=,/=,%=11.增1運(yùn)算符也稱自增運(yùn)算符,減1運(yùn)算符也稱自減運(yùn)算符,都是一元運(yùn)算符,只有一個(gè)操作數(shù)必須是變量不能是常量或表達(dá)式12.自增自減運(yùn)算符作為前綴時(shí),先執(zhí)行加1或減1然后使用;自增自減運(yùn)算符作為后綴時(shí),先使用再執(zhí)行加1或減1;13.考慮優(yōu)先級與結(jié)合性的實(shí)例m=-n+=m=-(n+)=m=-n,n=n+1;/正面:-和+都是一元運(yùn)算符,優(yōu)先級相同,此時(shí)要考慮結(jié)合性,結(jié)合性都是右結(jié)合的,

11、所以先算+后算-/反面:如果等價(jià)m=(-n)+就不合法了,因?yàn)楸磉_(dá)式不能進(jìn)行自增操作14.scanf函數(shù)和printf函數(shù)都是C的標(biāo)準(zhǔn)輸入/輸出函數(shù),&為取地址運(yùn)算符15.宏常量與宏替換: 1) 在程序中直接使用的常數(shù)稱為幻數(shù),將幻數(shù)定義為宏常量或const常量是為了提高程序的可讀性和可維護(hù)性2) 宏常量也稱符號(hào)常量,沒有數(shù)據(jù)類型,編譯器不對其進(jìn)行類型檢查,只進(jìn)行字符串替換 3) 宏定義一般形式:#define 標(biāo)識(shí)符 字符串。標(biāo)識(shí)符被稱為宏名,宏名與字符串之間可有多個(gè)空白符,不加等號(hào),結(jié)尾不加分號(hào) 4) 宏常量是由宏定義編譯預(yù)處理命令來定義,宏名替換成字符串的過程稱為宏替換,宏替換不做任何語

12、法檢查5) 當(dāng)宏定義是一個(gè)表達(dá)式時(shí),調(diào)用時(shí),是一個(gè)數(shù)就可以直接帶入,而是表達(dá)式也要看成是一個(gè)數(shù)代進(jìn)宏定義表達(dá)式中, 而看成一個(gè)數(shù)這就要求把調(diào)用的數(shù)加上圓括號(hào),為了減少不必要的錯(cuò)誤,最好都加上圓括號(hào)6) 宏替換的過程是將宏名原樣替換成字符串,而不是直接計(jì)算出值,所以要用調(diào)用后的結(jié)果參與其他運(yùn)算就需要把調(diào)用的結(jié)果加上圓括號(hào)7) 例題:#include#define N 2 /N=2#define M N+1 /M=2+1#define NUM 2*M+1 /NUM=2*2+1+1=6void main()int i;for(i=1;i=NUM;i+);printf(%dn,i); /執(zhí)行完空循環(huán),

13、i=7i-; / i=6printf(%dn,i); 8) 例題:#include#define f(x) x*xvoid main()int b;b=f(4+4); /b=4+4*4+4=24,解釋見5)printf(b=%dn,b); 9) 例題:#include#define f(x) x*xvoid main()int b;b=f(4+4)/(2+2); /b=4+4*4+4/(2+2)=21解釋見6)printf(b=%dn,b); 10) 例題:#include#define f(x) x*xvoid main()int b;b=f(4+4); /b=(4+4)*(4+4)=64p

14、rintf(b=%dn,b); 11) 例題:#include#define f(x) (x*x)void main()int b;b=f(4+4)/(2+2); /b=(4+4)*(4+4)/(2+2)=16printf(b=%dn,b);16.const常量 1) const常量只能在定義時(shí)賦初值,因?yàn)榫幾g器將其放在只讀存儲(chǔ)區(qū),不允許在程序中修改2) const常量的定義一般形式:const 類型名 標(biāo)識(shí)符=字符串;/將標(biāo)識(shí)符聲明為具有該數(shù)據(jù)類型的const常量3) const是一種類型修飾符,const常量具有數(shù)據(jù)類型,編譯器要對其進(jìn)行類型檢查17.表達(dá)式中的自動(dòng)類型轉(zhuǎn)換: 1) 表達(dá)式

15、中,操作數(shù)類型相同,運(yùn)算的結(jié)果類型與操作數(shù)類型相同2) 表達(dá)式中,操作數(shù)類型不相同,編譯器自動(dòng)將所有操作數(shù)進(jìn)行類型提升,轉(zhuǎn)換成同一類型,所占字節(jié)最大,再計(jì)算18.賦值中的自動(dòng)類型轉(zhuǎn)換: 1) 賦值運(yùn)算符左側(cè)變量與右側(cè)表達(dá)式類型不同時(shí),發(fā)生自動(dòng)類型轉(zhuǎn)換:右側(cè)表達(dá)式的值轉(zhuǎn)換成左側(cè)變量的類型19.強(qiáng)制類型轉(zhuǎn)換: 1) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符是一元運(yùn)算符2) 強(qiáng)制類型轉(zhuǎn)換也稱強(qiáng)轉(zhuǎn),是將表達(dá)式的值轉(zhuǎn)換為任意類型,并不改變變量本身的數(shù)據(jù)類型3) 強(qiáng)轉(zhuǎn)一般形式:(類型)表達(dá)式4) 演示強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的使用#includevoid main()int m=5;printf(m/2=%dn,m/2);/m=2p

16、rintf(float)(m/2)=%fn,(float)(m/2);/m=2.000000printf(float)m/2=%fn,(float)m/2);/m=2.500000printf(m=%dn,m);/m=5,只是將m強(qiáng)轉(zhuǎn)為實(shí)型數(shù)據(jù),并不改變m的數(shù)據(jù)類型20.常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù): 1) 使用C標(biāo)準(zhǔn)數(shù)學(xué)函數(shù),要在程序開頭加上編譯預(yù)處理命令:#include2) 例:已知三角形三邊長為a,b,c,計(jì)算三角形的面積#include#includevoid main()float a,b,c,s,area;printf(Input a,b,c:);scanf(%f,%f,%f,&a,&b,

17、&c);s=(a+b+c)/2;area=(float)sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%fn,area);21.賦值運(yùn)算符的左側(cè)不能出現(xiàn)表達(dá)式,變量與變量之間可以賦值 例1:若有定義:int a,b,c;下列表達(dá)式中哪一個(gè)是合法的C語言賦值表達(dá)式(C、D) A)a=7+b=c=7 B)a=b+=c=7 C)a=(b=7,c=12) D)a=3,b=a+5,c=b+2 /A.7+b表達(dá)式不能做左值 B.b+表達(dá)式不能做左值 C.逗號(hào)表達(dá)式a=12 D.依次賦值 例2:下面不正確的賦值語句是(B) A)a=+a B)a=b+=10 C)a+=b D)a=

18、1a/D.算術(shù)運(yùn)算符優(yōu)先級高于賦值運(yùn)算符,先算1a再將其結(jié)果賦給a 例3:若有下列定義:int a=3,b=2,c=1;以下選項(xiàng)錯(cuò)誤的賦值表達(dá)式是(A) A)a=(b=4)=3 B)a=b=c+1 C)a=(b=4)+c D)a=1+(b=c=4)/A.先計(jì)算圓括號(hào)里的值等于4,然后按照賦值表達(dá)式的順序從右向左計(jì)算,將3賦值給4這是不對的, 即賦值號(hào)左側(cè)只能是變量,不能出現(xiàn)表達(dá)式b=4 三、 鍵盤輸入和屏幕輸出1.字符常量: 把字符放在一對單引號(hào)內(nèi),適用于多數(shù)可打印字符2.轉(zhuǎn)義字符: 以反斜線()開頭,也是放在一對單引號(hào)內(nèi),適用于控制字符(如回車符,換行符)3.常用的轉(zhuǎn)義字符: 1) n 換行

19、 8) a 響鈴報(bào)警提示音 2) r 回車(不換行) 9) 一個(gè)雙引號(hào) 3) 0 空字符 10) 一個(gè)單引號(hào) 4) t 水平制表 11) 一個(gè)反斜線 5) v 垂直制表 12) ? 問號(hào) 6) b 退格 13) ddd 1到3位八進(jìn)制ASCII碼值所代表的字符 7) f 走紙換頁 14) xhh 1到2位十六進(jìn)制ASCII碼值所代表的字符4.n,是將光標(biāo)移到下一行起始位置,r是將光標(biāo)移到當(dāng)前行的起始位置5.t,是水平制表符,相當(dāng)于按下Tab鍵,每次按下Tab鍵并不是從當(dāng)前光標(biāo)位置向后移動(dòng)一個(gè)Tab寬度,而是移到下一個(gè)制表位實(shí)際移動(dòng)的寬度視當(dāng)前光標(biāo)位置距相鄰的下一個(gè)制表位的距離而定6.制表位,屏

20、幕上的一行被分為若干個(gè)域,相鄰域之間的交接點(diǎn)稱為制表位,每個(gè)域的寬度就是一個(gè)Tab寬度,多數(shù)習(xí)慣上為47.當(dāng)轉(zhuǎn)義序列出現(xiàn)在字符串中時(shí),是按單個(gè)字符計(jì)數(shù)的8.一個(gè)整形數(shù)在內(nèi)存中是以二進(jìn)制形式存儲(chǔ)的,而一個(gè)字符在內(nèi)存中也是以其對應(yīng)的ASCII碼的二進(jìn)制形式存儲(chǔ)的,但char型數(shù)據(jù)在內(nèi)存中只占一個(gè)字節(jié),而int型數(shù)據(jù)在16位系統(tǒng)中占2個(gè)字節(jié),32位系統(tǒng)占4個(gè)字節(jié)9.在ASCII碼取值范圍內(nèi),char型數(shù)據(jù)可以和int型數(shù)據(jù)進(jìn)行混合運(yùn)算,char型數(shù)據(jù)也能以int型輸出,直接輸出其對應(yīng)的ASCII碼的十進(jìn)制值10.字符的輸入/輸出: 1) getchar()和putchar()是標(biāo)準(zhǔn)函數(shù)庫中專門用于字

21、符輸入/輸出的函數(shù),功能是只能輸入/輸出一個(gè)字符 2) 例:從鍵盤輸入一個(gè)大寫英文字母,將其轉(zhuǎn)換為小寫字母顯示在屏幕上#includevoid main()char ch;ch=getchar();/鍵盤輸入一個(gè)字符,再按回車表示輸入結(jié)束,字符存入變量ch,注意:getchar()沒有參數(shù),直接返回讀入的字符ch=ch+32;putchar(ch);/第二次按回車,將顯示轉(zhuǎn)換后的結(jié)果putchar(n);/注意:putchar()內(nèi)一定要有參數(shù),參數(shù)就是待輸出的字符,可以是可打印字符,也可是轉(zhuǎn)義字符11.數(shù)據(jù)的格式化屏幕輸出: 1) 函數(shù)printf()的一般格式:printf(格式控制字符串

22、);或者printf(格式控制字符串,輸出值參數(shù)表); 2) 格式控制字符串包括:格式轉(zhuǎn)換說明符,需要原樣輸出的普通字符 3) 函數(shù)printf()的格式轉(zhuǎn)換說明符: %d 輸出帶符號(hào)十進(jìn)制整數(shù),整數(shù)符號(hào)省略 %u 輸出無符號(hào)十進(jìn)制整數(shù) %o 輸出無符號(hào)八進(jìn)制整數(shù),不輸出前導(dǎo)符0 %x 輸出無符號(hào)十六進(jìn)制整數(shù)(小寫),不輸出前導(dǎo)符0x %X 輸出無符號(hào)十六進(jìn)制整數(shù)(大寫),不輸出前導(dǎo)符0x %c 輸出一個(gè)字符 %s 輸出字符串 %f 以十進(jìn)制小數(shù)形式輸出實(shí)數(shù),包含單,雙精度,隱含6位小數(shù),但并非全是有效數(shù)字,單精度有效7位,雙精度16位 %e 以指數(shù)形式輸出實(shí)數(shù)(小寫e表示指數(shù)部分),小數(shù)點(diǎn)前

23、有且僅有一位非0數(shù)字 %E 以指數(shù)形式輸出實(shí)數(shù)(大寫E表示指數(shù)部分) %g 自動(dòng)選取f或e格式中寬度較小的一種使用,不輸出無意義的0 % 輸出% 4) 輸出值參數(shù)表:需要輸出的數(shù)據(jù)項(xiàng)的列表,可以是變量或表達(dá)式,逗號(hào)隔開,類型與格式轉(zhuǎn)換說明符相匹配 5) 每個(gè)格式轉(zhuǎn)換說明符與輸出值參數(shù)表中的輸出值參數(shù)一一對應(yīng),沒有輸出值參數(shù),格式控制字符串就不需要格式轉(zhuǎn)換說明符 6) 例:從鍵盤輸入一個(gè)大寫英文字母,將其轉(zhuǎn)換為小寫字母和其十進(jìn)制ASCII碼值顯示在屏幕上#includevoid main()char ch;printf(Please enter a key:);ch=getchar();ch=c

24、h+32;printf(%c,%dn,ch,ch);/printf(%c,ch)putchar(ch),printf(n)putchar(n) 7) 函數(shù)printf()中的格式修飾符:在%和格式符中間插入格式修飾符,用于輸出格式的微調(diào),如:指定輸出域?qū)?、精度、左對齊等 英文字母l 修飾格式符d,o,x,u時(shí),用于輸出long型數(shù)據(jù) 英文字母L 修飾格式符f,e,g時(shí),用于輸出long double型數(shù)據(jù) 英文字母h 修飾格式符d,o,x時(shí),用于輸出short型數(shù)據(jù) 輸出域?qū)抦 m為整數(shù),輸出時(shí)占m列,若m0,當(dāng)數(shù)據(jù)寬度小于m時(shí),域內(nèi)右靠齊,左補(bǔ)空格,當(dāng)數(shù)據(jù)寬度大于m時(shí),修飾符失效,按實(shí)際寬度

25、輸出,若m有前導(dǎo)符0,左邊多余位補(bǔ)0;若m0,輸出數(shù)據(jù)在域內(nèi)左靠齊 顯示精度 .n n為大于等于0的整數(shù),精度修飾符位于最小域?qū)捫揎椃?,由圓點(diǎn)和整數(shù)構(gòu)成,對于浮點(diǎn)數(shù),用于指定輸出的浮點(diǎn)數(shù)小數(shù)位數(shù);對于字符串,用于指定從字符串左側(cè)開始截取的子串字符個(gè)數(shù) 8) 使用const常量定義pi,編程從鍵盤輸入圓的周長和面積,使其輸出數(shù)據(jù)保留兩位小數(shù)#includevoid main()const double pi=3.14159;double r,circum,area;printf(Please enter r:);scanf(%lf,&r);circum=2*pi*r;area=pi*r*r;

26、printf(輸出沒有寬度和精度的值:);printf(circum=%f,area=%fn,circum,area);printf(輸出沒有寬度和精度的值:);printf(circum=%7.2f,area=%7.2fn,circum,area);/域?qū)挒?,占7個(gè)字符寬度,小數(shù)點(diǎn)也算一個(gè)字符,精度為2,小數(shù)點(diǎn)后保留2位12.數(shù)據(jù)的格式化鍵盤輸入: 1) 函數(shù)scanf()的一般格式:scanf(格式控制字符串,參數(shù)地址表); 2) 格式控制字符串:包括格式轉(zhuǎn)換說明符,分隔符 3) 格式轉(zhuǎn)換說明符以%開始,以格式字符結(jié)束,用于指定各參數(shù)的輸入格式 4) 函數(shù)scanf()的格式轉(zhuǎn)換說明符:

27、 %d 輸入十進(jìn)制整數(shù) %o 輸入八進(jìn)制整數(shù) %x 輸入十六進(jìn)制整數(shù) %c 輸入一個(gè)字符,空白字符(包括空格、回車、制表符)也作為有效字符輸入 %s 輸入字符串,遇到第一個(gè)空白字符(包括空格、回車、制表符)時(shí)結(jié)束 %f或%e 輸入實(shí)數(shù),以小數(shù)或指數(shù)形式輸入均可 % 輸入一個(gè)% 5) 參數(shù)地址表:由若干變量的地址組成的列表,用逗號(hào)分隔6) 函數(shù)scanf()中的格式修飾符:在%和格式符中間插入格式修飾符 英文字母l 加在格式符d,o,x,u之前,用于輸入long型數(shù)據(jù);加在f,e之前,用于輸入double型數(shù)據(jù) 英文字母L 加在格式符f,e之前,用于輸入long double型數(shù)據(jù) 英文字母h

28、加在格式符d,o,x時(shí),用于輸入short型數(shù)據(jù) 輸出域?qū)抦 m為正整數(shù),指定輸入數(shù)據(jù)的寬度,系統(tǒng)自動(dòng)按此寬度截取所需數(shù)據(jù) 顯示精度 .n n為0或正整數(shù),scanf()沒有精度格式修飾符,輸入時(shí)不能規(guī)定精度 忽略輸入修飾符* 表示對應(yīng)的輸入項(xiàng)在讀入后不賦給相應(yīng)的變量 7) 函數(shù)scanf()輸入數(shù)值型數(shù)據(jù)時(shí),被認(rèn)為輸入結(jié)束的幾種情況:遇空格符、回車符、制表符;達(dá)到輸出域?qū)?;遇非法字符輸?) 如果函數(shù)scanf()的格式控制字符串中存在除格式轉(zhuǎn)換說明符以外的其他字符,必須將這些字符原樣輸入#includevoid main()int a,b;scanf(%d %d,&a,&b); /以空格作

29、為分隔符,等價(jià)于scanf(%d%d,&a,&b),等價(jià)于scanf(%d%d,&a,&b),printf(a=%d,b=%dn,a,b);/實(shí)際輸入時(shí),空格、回車符、制表符都可作為分隔符,即輸入:12空格34 12回車34 12制表符34均可, #includevoid main()int a,b;scanf(%d,%d,&a,&b);/輸入時(shí)必須以逗號(hào)作為分隔符,即只能輸入:12,34printf(a=%d,b=%dn,a,b);#includevoid main()int a,b;scanf(a=%d,b=%d,&a,&b);/輸入時(shí)必須將a=和b=原樣輸入,即只能輸入:a=12,b=3

30、4printf(a=%d,b=%dn,a,b); #includevoid main()int a,b;scanf(%2d%2d,&a,&b);/輸入時(shí)將前兩位數(shù)讀入存到a中,接著兩位存到b中,然后結(jié)束讀取,即輸入:1234,或123456結(jié)果一樣printf(a=%d,b=%dn,a,b); #includevoid main()int a,b;scanf(%d %d,&a,&b);printf(a=%d,b=%dn,a,b);/輸出a=12,b=34#includevoid main()int a,b;scanf(%d%*c%d,&a,&b);/任意字符都可作為分隔符,即輸入:12,34或

31、12?34或12+34結(jié)果都一樣printf(a=%d,b=%dn,a,b);#includevoid main()int a,b;scanf(%2d%*2d%d,&a,&b);/忽略兩位,輸入123456 printf(a=%d,b=%dn,a,b);/輸出a=12,b=56對于程序#includevoid main()int a,b;scanf(%d %d,&a,&b);printf(a=%d,b=%dn,a,b);如果輸入12 34a回車,則結(jié)果a=12,b=3,程序在遇到非法字符a時(shí),會(huì)導(dǎo)致程序輸入終止,此時(shí)a會(huì)讀入12,b會(huì)讀入3如果輸入123a回車,則結(jié)果a=123,b=-8589

32、93460,程序在遇到非法字符a時(shí),會(huì)導(dǎo)致程序輸入終止,此時(shí)a會(huì)讀入123,而b未能讀入指定數(shù)據(jù)項(xiàng)數(shù)如果在scanf()函數(shù)中忘記在變量前加取地址運(yùn)算符&,會(huì)導(dǎo)致非法內(nèi)存訪問13.%c格式符使用幾種情況: 1) 用%c格式讀入字符時(shí),空格字符和轉(zhuǎn)義字符(包括回車)都會(huì)被當(dāng)做有效字符讀入 例:鍵盤輸入一個(gè)整數(shù)加法算式:操作數(shù)1+操作數(shù)2,輸出:操作數(shù)1+操作數(shù)2=計(jì)算結(jié)果#include void main() int data1,data2; char op; /輸入:12空格+空格3 回車/輸出:12 -858993460=-858993448printf(Enter data1+data2

33、n);/輸入:12空格3 回車/輸出:12 3=15scanf(%d%c%d,&data1,&op,&data2);/輸入:12+3 回車/輸出:12+3=15printf(%d%c%d=%dn,data1,op,data2,data1+data2); 2) 先輸入一個(gè)數(shù)據(jù)后再輸入字符型變量時(shí),輸入一個(gè)數(shù)據(jù)后,輸入的回車符將被當(dāng)做有效字符讀給字符型變量 例:編程從鍵盤先后輸入int型、char型和float型數(shù)據(jù),要求每輸入一個(gè)數(shù)據(jù)就顯示這個(gè)數(shù)據(jù)的類型和數(shù)據(jù)值#includevoid main()int a;char b;float c;printf(Please input an integ

34、er:);scanf(%d,&a);printf(integer:%dn,a);/在輸入一個(gè)整型數(shù)據(jù)后,輸入的回車符被當(dāng)做有效字符讀給了字符型變量b了 printf(Please input a character:);scanf(%c,&b);printf(chracter:%cn,b);printf(Please input a float number:);scanf(%f,&c);printf(float:%fn,c);14.%c格式符存在問題的解決方法 1) 用函數(shù)getchar()將數(shù)據(jù)輸入時(shí)存入緩沖區(qū)中的回車符讀入,以避免被后面的字符型變量作為有效字符讀入#includevoid

35、 main()int a;char b;float c;printf(Please input an integer:);scanf(%d,&a);printf(integer:%dn,a);getchar();/將存于緩沖區(qū)中的回車符讀入,避免在后面作為有效字符讀入/函數(shù)getchar()的返回值是一個(gè)回車符,已經(jīng)避免了錯(cuò)誤,不需要再將其賦給字符型變量使用printf(Please input a character:);scanf(%c,&b);printf(chracter:%cn,b);printf(Please input a float number:);scanf(%f,&c);

36、printf(float:%fn,c); 2) 在%c前面加一個(gè)空格,將前面數(shù)據(jù)輸入時(shí)存于緩沖區(qū)的回車符讀入,避免被后面的字符型變量作為有效字符讀入#includevoid main()int a;char b;float c;printf(Please input an integer:);scanf(%d,&a);printf(integer:%dn,a);printf(Please input a character:);scanf( %c,&b);/在%c前面加空格,將存于緩沖區(qū)中的回車符讀入printf(chracter:%cn,b);printf(Please input a fl

37、oat number:);scanf(%f,&c);printf(float:%fn,c);/解釋:在%c前加空格為什么能將存于緩沖區(qū)中的回車符讀入因?yàn)槿绻瘮?shù)scanf()的格式控制字符串中存在除格式轉(zhuǎn)換說明符以外的其他字符,必須將這些字符原樣輸入,所以在%c前加空格,就必須在輸入字符型數(shù)據(jù)前先原樣輸入空格,而空格,回車符,制表符在函數(shù)scanf()輸入數(shù)值型數(shù)據(jù)時(shí)都代表輸入結(jié)束,由實(shí)踐可知,空格符、回車符、制表符在輸入時(shí)等效所以,緩沖區(qū)中的回車將代替需要原樣輸入的空格,因此,實(shí)際上,在%c前增加空格或者Tab鍵都可以完成,并且與增加的數(shù)量無關(guān),且可以混合增加 3)*經(jīng)典例題:編程實(shí)現(xiàn)鍵盤任

38、意輸入字符,統(tǒng)計(jì)字母、數(shù)字、空格、其他字符數(shù)量首選字符串的方法:#include#define N 100int main()char aN;int i,m=0,n=0,b=0,c=0;printf(請輸入字符:n);gets(a); for(i=0;ai!=0;i+)if(ai=a&ai=A&ai=0&ai=9) n+;else if(ai= ) b+;else c+;printf(字母個(gè)數(shù):%dn,m);printf(數(shù)字個(gè)數(shù):%dn,n);printf(空格個(gè)數(shù):%dn,b);printf(其他字符個(gè)數(shù):%dn,c);return 0;單個(gè)字符輸入的方法,但是要解決緩沖區(qū)的問題#incl

39、udeint main()char ch;int a,b,c,d;a=b=c=d=0;printf(請輸入字符:n);doch=getchar();getchar();/清除緩沖區(qū)的回車鍵,不然會(huì)當(dāng)做第二個(gè)字符讀入if(ch!=)/用Tab鍵控制輸入結(jié)束,他在程序中只會(huì)出現(xiàn)一次并且統(tǒng)計(jì)一次, /然后結(jié)束,所以要去掉它,可以使用if語句,也可在前面初始化為d=-1if(ch=a&ch=A&ch=0&ch賦值運(yùn)算符,先判斷a=b?是否正確正確則為真,把1賦給m,|是或運(yùn)算,前面已經(jīng)為真,所以|后面的就不會(huì)再運(yùn)算了,結(jié)果就為真所以m=1,n=0不變 2)int a,b,m,n;初值依次為4,3,2,

40、1,經(jīng)計(jì)算m=(a=b)&(n=mn)后,m,n的值為(C)A) 1,1 B) 1,0 C) 0,1 D) 0,0/ a=b為假,&是并,前面已經(jīng)為假,后面就不會(huì)再運(yùn)算了,結(jié)果就為假,把0賦給m,即m=0,n=1不變 四、 選擇控制結(jié)構(gòu)1.沃思提出“數(shù)據(jù)結(jié)構(gòu)+算法=程序”只在面向過程的語言(如C語言)成立2.算法的正確性衡量方法: 1)有窮性 2)確定性 3)有效性 4)允許沒有輸入或者有多個(gè)輸入 5)必須有一個(gè)或者多個(gè)輸出3.算法的描述方法: 1)自然語言描述 2)流程圖描述 3)NS結(jié)構(gòu)化流程圖描述 4)偽碼描述4.關(guān)系表達(dá)式:用作判斷條件,結(jié)果只有真和假,(n%2!=0)等價(jià)于(n%2)

41、,0表示假,非0表示真5.分支結(jié)構(gòu):當(dāng)條件P成立時(shí),執(zhí)行A操作,否則執(zhí)行B操作;如果B操作為空,即為單分支結(jié)構(gòu);如果B操作不為空,即為雙分支結(jié)構(gòu);如果B操作中又包含另一選擇結(jié)構(gòu),則構(gòu)成多分支選擇結(jié)構(gòu);6.單分支例題:計(jì)算輸出兩整數(shù)最大值單分支(一般形式):if(表達(dá)式P) 語句A#includevoid main()int a,b,max;printf(Enter a,b:);scanf(%d%d,&a,&b);if(ab) /單分支:if(表達(dá)式P) 語句Amax=a; if(a=b) /單分支:if(表達(dá)式P) 語句Amax=b;printf(max=%dn,max);7.雙分支例題:計(jì)算

42、輸出兩整數(shù)最大值雙分支(一般形式):if(表達(dá)式P) 語句1 else 語句2#includevoid main()int a,b,max;printf(Enter a,b:);scanf(%d%d,&a,&b);if(ab) max=a; else max=b;printf(max=%dn,max);8.條件運(yùn)算符是C語言中唯一的三元運(yùn)算符,需要三個(gè)操作數(shù)9.條件運(yùn)算符例題:計(jì)算輸出兩整數(shù)最大值條件運(yùn)算符(一般形式):表達(dá)式1?表達(dá)式2:表達(dá)式3含義:若表達(dá)式1為非0,則結(jié)果為表達(dá)式2的值,否則是表達(dá)式3的值#includevoid main()int a,b,max;printf(Ente

43、r a,b:);scanf(%d%d,&a,&b);max=ab?a:b; printf(max=%dn,max);10.多分支控制條件語句(一般形式): if(表達(dá)式1) 語句1 else if(表達(dá)式2) 語句2.else if(表達(dá)式m) 語句melse 語句m+111.條件語句在語法上只允許每個(gè)條件分支中帶一條語句,而要在分支里處理多條語句就要使用花括號(hào),構(gòu)成復(fù)合語句12.隨機(jī)數(shù)的使用方法: 1) 符號(hào)常量RAND_MAX在頭文件#include中定義,標(biāo)準(zhǔn)C規(guī)定RAND_MAX不大于雙字節(jié)整數(shù)的最大值32767 2)隨機(jī)函數(shù)rand()產(chǎn)生的是一個(gè)在0RAND_MAX之間的整數(shù),即0,32767之間的整數(shù) 3) 利用求余運(yùn)算rand()%b可將函數(shù)rand()生成的隨機(jī)數(shù)變化到0,b-1 4) 利用rand()%b+a可將隨機(jī)數(shù)的取值范圍平移

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論