C語言基礎(chǔ)知識考研復(fù)習(xí)篇市公開課一等獎省賽課微課金獎?wù)n件_第1頁
C語言基礎(chǔ)知識考研復(fù)習(xí)篇市公開課一等獎省賽課微課金獎?wù)n件_第2頁
C語言基礎(chǔ)知識考研復(fù)習(xí)篇市公開課一等獎省賽課微課金獎?wù)n件_第3頁
C語言基礎(chǔ)知識考研復(fù)習(xí)篇市公開課一等獎省賽課微課金獎?wù)n件_第4頁
C語言基礎(chǔ)知識考研復(fù)習(xí)篇市公開課一等獎省賽課微課金獎?wù)n件_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C基礎(chǔ)知識專題一:1/54熱身練習(xí):1.已知各變量類型說明以下,則以下不符合C語言語法表示式是

。 intk,a,b; unsignedlongw=5; doublex=1.42; A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3)

2/54熱身練習(xí):2.設(shè)x、y、t均為int型變量,則執(zhí)行語句:x=y=3;t=++x||++y;后,x值為

,y值為

。A)不定值

B)4 C)3 D)83/54熱身練習(xí):3.有以下定義,若要求a1,a2,c1,c2值分別為10,20,A和B,當(dāng)從第一列開始輸入數(shù)據(jù)時,正確數(shù)據(jù)輸入方式是

inta1,a2;charc1,c2; scanf(“%d%d”,&a1,&a2); scanf(“%c%c”,&c1,&c2); A)1020AB<CR> B)1020<CR>AB<CR> C)1020AB<CR>D)1020AB<CR>4/54一、C語言特點1、語言簡練、緊湊,使用方便、靈活;一共有32個關(guān)鍵字,9種控制語句,主要用小寫字母表示。autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizeofstructswitchtypedefunionunsignedvoidvolatilewhile5/54一、C語言特點九種控制語句:if()~else~for()~while()~do~while()cotinuebreakswitchgotoreturn6/54一、C語言特點2、運算符豐富:共有34種運算符。

算術(shù)運算符、關(guān)系運算符、邏輯運算符、位操作運算符、賦值運算符、條件運算符、逗號運算符、指針運算符、求字節(jié)數(shù)運算符、特殊運算符等。3、數(shù)據(jù)結(jié)構(gòu)豐富:C數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、指針類型、空類型等。7/54一、C語言特點4、含有結(jié)構(gòu)化控制語句;5、語法限制不太嚴(yán)格,程序設(shè)計自由度大;6、C語言能進(jìn)行位操作,能實現(xiàn)匯編語言大部分功效,能夠直接對硬件進(jìn)行操作;7、生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高;8、用C語言編寫程序可移植性好。8/54二、C語言詞匯在C語言中使用詞匯分為六類:標(biāo)識符:變量名、函數(shù)名、標(biāo)號等統(tǒng)稱為標(biāo)識符

標(biāo)識符只能是字母、數(shù)字、下劃線組成字符串,而且第一個字符必須是字母或下劃線,用戶定義標(biāo)識符不應(yīng)與關(guān)鍵字相同。

關(guān)鍵字:由C語言要求含有特定意義字符串運算符:與變量、函數(shù)一起組成表示式,實現(xiàn)運算功效分隔符:逗號和空格

常量:數(shù)字常量、字符常量、字符串常量、符號常量、轉(zhuǎn)義字符注釋符:“/*”開頭并以“*/”結(jié)尾串9/54三、數(shù)據(jù)類型數(shù)據(jù)類型基本類型結(jié)構(gòu)類型指針類型空類型整型實型(浮點型)字符型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型單精度實型雙精度實型基本整型長整型短整型無符號整型10/54(一)基本類型分類及特點【注】帶*號表示數(shù)據(jù)類型與機(jī)器硬件相關(guān)11/54(二)變量在內(nèi)存中存放形式1、整型數(shù)據(jù)在內(nèi)存中以補(bǔ)碼形式存放正數(shù):原碼即為補(bǔ)碼(該數(shù)二進(jìn)制數(shù))負(fù)數(shù):(1)取絕對值(2)求絕對值二進(jìn)制形式(3)將二進(jìn)制按位取反(4)再加上1,可得補(bǔ)碼注意:若給出一個數(shù)在內(nèi)存中存放形式,先看最高位來判斷是正負(fù)數(shù)。1111111111110110-10在機(jī)器內(nèi)存中存放形式12/54(二)變量在內(nèi)存中存放形式求-10補(bǔ)碼過程:10原碼:0000000000001010按位取反:1111111111110101再加1,得-10補(bǔ)碼:111111111111011013/54(二)變量在內(nèi)存中存放形式有符號整型變量:最大表示32767無符號整型變量:最大表示655350111111111111111111111111111111114/54(二)變量在內(nèi)存中存放形式處理整型數(shù)據(jù)溢出問題如:inta=32767,b;b=a+1;printf(“%d”,b);01111111111111111000000000000000b=-3276815/54(二)變量在內(nèi)存中存放形式

2、實型數(shù)據(jù)在內(nèi)存中存放形式實型數(shù)據(jù)普通占4個字節(jié)(32位)內(nèi)存空間。按指數(shù)形式存放。實數(shù)3.14159在內(nèi)存中存放形式以下:+.3141591類型說明符比特數(shù)(字節(jié)數(shù))有效數(shù)字?jǐn)?shù)范圍float32(4)6~710-38~1038

double64(8)15~1610-308~10308

longdouble128(16)18~1910-4932~104932

16/54三、數(shù)據(jù)類型——變量main(){floata;doubleb;a=33333.33333;

b=33333.33333333333333;printf("%f\n%f\n",a,b);}因為a是單精度浮點型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位后之后均為無效數(shù)字。b是雙精度型,有效位為十六位。但TurboC要求小數(shù)后最多保留六位,其余部分四舍五入。doubled=12.3456789;printf(“%lf”,d);17/54三、數(shù)據(jù)類型——常量1、整數(shù)常量十進(jìn)制整數(shù):帶符號,0~9組成,第一位數(shù)字為非零(除零外)-456八進(jìn)制整數(shù):0~7組成,最高位用0引導(dǎo)0123=(123)8=(83)10十六進(jìn)制整數(shù):0~9及a~f或A~F組成,最高位用0x或0X引導(dǎo),0x123=(123)16=(291)10整數(shù)常量后加字母u或U表示該數(shù)為無符號型,加字母l或L表示該數(shù)為長整型

12345u123L18/54三、數(shù)據(jù)類型——常量2、實型常量在C中有兩種表示方法:十進(jìn)制小數(shù)形式:0.0、25.0、300.、-267.8230等。注意,必須有小數(shù)點。

指數(shù)形式:me

n(或mEn)表示m*10

n(這里m為非0實數(shù),n為整數(shù))。如:12.3E-2表示12.3*10-2

在C編譯系統(tǒng)中,將浮點型常量作為雙精度來處理

以下不是正當(dāng)實數(shù),請說明理由:345E7-553.-E32.7E19/54三、數(shù)據(jù)類型——常量3、字符常量-轉(zhuǎn)義字符20/54三、數(shù)據(jù)類型——常量3、字符常量-轉(zhuǎn)義字符\ddd輸出一到三位八進(jìn)制數(shù)所對應(yīng)字符\xhh輸出一到兩位16進(jìn)制數(shù)所對應(yīng)字符比如:chara=‘\101’,b=‘\x41’;putchar(a);putchar(b);答案:AA21/54三、數(shù)據(jù)類型——常量字符常量就是一個普通整數(shù),也可參加各種數(shù)學(xué)運算每個字符含有一個0~255之間數(shù)值,可從ASCII表查出注意:’5’和整數(shù)5區(qū)分’5’ASCII碼值是53思索:’

6’—’2’值是多少?22/54例題:小寫字母轉(zhuǎn)換為大寫字母#include<stdio.h>main(){

charch='b';printf("%c,%d\n",ch,ch);

ch='b'-32;

printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){

charch='b';printf("%c,%d\n",ch,ch);

ch='b'-('a'-'A')

;

printf("%c,%d\n",ch,ch);}b,98B,66

b,98B,66

相當(dāng)于97-6523/54三、數(shù)據(jù)類型——常量

4、字符串常量用雙引號括住由0個或多個字符組成字符序列"Iamastring"""表示空字符串除注釋外,是唯一能夠出現(xiàn)漢字地方C語言內(nèi)部用’\0’表示字符串結(jié)束"x"和’x’是不一樣<string.h>里定義了一系列專門字符串處理函數(shù)轉(zhuǎn)義字符也可在字符串中使用24/54實踐挑戰(zhàn):1、設(shè):char*s=“\ta\017\bc”;則strlen(s)值為()。(04南師大)2、在一個32位系統(tǒng)中(如WindowsXP),若定義char*s="010\010\\010\n";則sizeof(s)值為(),strlen(s)值為()答案:1、5

2、2

925/54sizeof到底是什么?C語言關(guān)鍵字,并非函數(shù)計算類型占用字節(jié)數(shù)兩種語法形式sizeof(類型)結(jié)果為類型占用字節(jié)數(shù)sizeof(表示式)結(jié)果為表示式值所屬類型占用字節(jié)數(shù)普通都使用sizeof(變量名)

26/54strlen()到底是什么?strlen()是函數(shù),返回字符串中所包含字符個數(shù)。注:統(tǒng)計時不包含’\0’兩種語法形式strlen(字符串)如:strlen(“abcd”);strlen(字符指針變量);char*s=“abc";stelen(s);27/54三、數(shù)據(jù)類型——常量宏常量也稱符號常量普通采取全大寫字母表示宏定義不是語句,而是一個編譯預(yù)處理命令格式以下:#define

標(biāo)識符字符串使用時,將標(biāo)識符用字符串完全替換28/54正確實例:計算圓周長和面積#include<stdio.h>#definePI3.14159#defineR5.3main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}area=88.247263circumference=33.300854相當(dāng)于執(zhí)行#include<stdio.h>main(){

printf("area=%f\n",3.14159*5.3*5.3);

printf("circumference=%f\n",2*3.14159

*5.3);}宏替換29/54錯誤實例

:計算圓周長和面積#include<stdio.h>#definePI3.14159;#defineR5.3;main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}相當(dāng)于執(zhí)行#include<stdio.h>main(){

printf("area=%f\n",3.14159;*5.3;*5.3;);

printf("circumference=%f\n",2*3.14159;*5.3;);}語法錯誤30/54實踐挑戰(zhàn):3、在C語言中,宏定義#definePI3.14159中,用宏名PI代替了一個()(南師大06)A.單精度數(shù)B.雙精度數(shù)C.字符序列D.常量答案:C31/54枚舉(Enumeration)常量

enumweeks{SUN,MON,TUE,WED,THU,FRI,SAT};/*申明了一個枚舉類型*/

enumweekstoday;/*用上面類型定義變量*/

today=TUE;/*變量today只能在上面定義范圍內(nèi)取值*/enumresponse{no,yes,none};enumresponseanswer;answer=yes;

enumresponse{no=-1,yes=1,none=0};其值為2其值為132/54四、運算符常見運算符算術(shù)運算符賦值運算符類型強(qiáng)轉(zhuǎn)(強(qiáng)制類型轉(zhuǎn)換)關(guān)系運算符邏輯運算符增1和減1位運算符33/54四、運算符運算符有三個屬性:運算元數(shù):最少1個,最多3個-1;3>2?3:2優(yōu)先級:結(jié)合性:即指運算符與運算元結(jié)合方向,用于指導(dǎo)同級運算表示式:運算元與運算符組合式

a*b/c-2.2+'A'簡化后優(yōu)先級:1一級運算符2單變量運算符

3算術(shù)運算符4位運算符5關(guān)系運算符6位邏輯運算符7邏輯運算符8條件運算符

9賦值運算符

10逗號運算符高低34/54四、運算符—基本算術(shù)運算符操作符作用舉例-減、單目取負(fù)3-2,-4+加、單目取正3+2,+4*乘3*2/除3/2%求余或取模(兩側(cè)均應(yīng)為整型數(shù))6%4++加1++a,a++--減1--a,a--當(dāng)兩個整數(shù)相除時,其結(jié)果為整數(shù),即舍去小數(shù)部分。如:10/3=3;35/54四、運算符賦值運算符及賦值表示式簡單賦值運算符用“=”表示屬于雙目運算符優(yōu)先級較低,僅高于逗號含有右結(jié)合性由“=”連接式子稱為賦值表示式功效是計算表示式值再賦予左邊變量a=b=c=5可了解為a=(b=(c=5))賦值表示式值就是“=”號右側(cè)值

x=(a=5)+(b=8)

36/54四、運算符復(fù)合賦值運算符

在賦值符“=”之前加上其它二目運算符可組成復(fù)合賦值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=

比如:

a+=5等價于a=a+5x*=y+7等價于x=x*(y+7)

r%=p等價于r=r%p能提升編譯效率并產(chǎn)生質(zhì)量較高目標(biāo)代碼37/54自動類型轉(zhuǎn)換相同類型數(shù)據(jù)運算結(jié)果,還是該類型不一樣類型數(shù)據(jù)運算結(jié)果,是兩種類型中取值范圍大那種double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高38/54自動類型轉(zhuǎn)換取值范圍小類型賦值給取值范圍大類型是安全

doubled;floatf=1.5;d=f;反之是不安全若大類型值在小類型能容納范圍之內(nèi),則平安無事

doubled=1.5;floatf;f=d;若浮點數(shù)轉(zhuǎn)為整數(shù),會丟失小數(shù)部分,非四舍五入inti;floatf=1.64;i=f;(i值為1)反之,轉(zhuǎn)換后結(jié)果必定是錯誤,詳細(xì)結(jié)果與機(jī)器和實現(xiàn)方式相關(guān)doubled=123.456789e100;floatf;f=d;39/54Example:

intx=10; floaty; y=(float)x;

(float)10

10.000000x10y??10.000000消除從大到小警告

x=(int)y;經(jīng)過下面方式把表示式值轉(zhuǎn)為任意類型

(類型)表示式不改變x強(qiáng)制類型轉(zhuǎn)換40/54Example:

inttotal,number; floataverage; … average=total/number;

15/2

7total15number2average??7.000000兩個整數(shù)運算結(jié)果還是整數(shù),不是浮點數(shù)強(qiáng)制類型轉(zhuǎn)換41/54Example:

inttotal,number; floataverage; … average=(float)total/number;

15.000000/2

7.500000total15number2average??7.500000強(qiáng)制類型轉(zhuǎn)換42/54增一和減一運算符n++,n--,++n,--n++讓參加運算變量加1,--讓參加運算變量減1作為后綴(postfix)運算符時,先取n值,然后加/減1m=n++;m=n;n++;43/54n++,n--,++n,--n++讓參加運算變量加1,--讓參加運算變量減1作為后綴(postfix)運算符時,先取n值,然后加/減1作為前綴(prefix)運算符時,先加/減1,然后取n值m=++n;n++;

m=n;增一和減一運算符44/54比如:j=++i-2i5等價于:i=i+1;j=i–2;j??46增一和減一運算符45/54比如:j=i++-2i5等價于:j=i–2;i=i+1;j??36增一和減一運算符46/54例:輸出結(jié)果和變量a值?inta=3;printf("%d",-a++);a3等價于:printf("%d",-a);a=a+1;4增一和減一運算符47/54例題:main(){inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);printf("%d,%d,%d,%d",p,q,i,j);}解析:對p=(i++)+(i++)+(i++)應(yīng)了解為三個i相加,故P值為15。然后i再自增1三次相當(dāng)于加3故i最終值為8。而對于q值則不然,q=(++j)+(++j)+(++j)應(yīng)了解為q先自增1,再參加運算,因為q自增1三次后值為8,三個8相加和為24,j最終值仍為8。48/54四、運算符逗號運算符和逗號表示式

功效是把兩個表示式連接起

溫馨提示

  • 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

提交評論