




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言知識點(diǎn)總結(jié)C語言知識點(diǎn)總結(jié) 1一、常量2二、標(biāo)識符2三、變量2四、表達(dá)式3五、輸入輸出函數(shù)4六、C語言的語句 5七、C程序的基本結(jié)構(gòu)5八、選擇結(jié)構(gòu)語句5if(表達(dá)式)語句1else語句2 5條件運(yùn)算符 表達(dá)式1?表達(dá)式2 :表達(dá)式36switch 語句6九、循環(huán)結(jié)構(gòu)6for循環(huán)語句 6while 循環(huán)語句do while 循環(huán)語句 6十、數(shù)組7十一、字符串函數(shù)7十二、函數(shù)8十三、指針9十四、宏定義10十五、結(jié)構(gòu)體,共用體,枚舉類型 10十六、Turbo C的使用12一、常量數(shù)字常量i. 普通數(shù)字:1, 35, 2.7ii. 指數(shù)形式:2.45e-2等價于2.45*10-2注意e大小寫皆可
2、,e前面的數(shù)字 不能省,就算是1也不能省,后面的數(shù)字一定要是整數(shù)iii. 長整型,單精度浮點(diǎn)型:3235L,32.5F分別表示3235是長整型數(shù)據(jù), 32.5是單精度浮點(diǎn)型左,若不寫上 L, F則表示3235是整型,32.5是 雙精度浮點(diǎn)型,L,F(xiàn)大小寫皆可字符常量i. 普通字符常量:用單引號把一個字符括起來,如A,ii. 轉(zhuǎn)義字符常量:一對單引號括起來并以“開頭的字符序列,如n(回 車)、123(8進(jìn)制123對應(yīng)的字符),(x23(16進(jìn)制23對應(yīng)的字符)字符串常量用一對雙引號把一個字符序列括起來,如“ ABCef ”,系統(tǒng)存放字符串 常量,每個字符分配一個字節(jié),各字符所占字節(jié)緊鄰,并且字符
3、串末尾 會給再開一個字節(jié)里面放一個0(做為結(jié)束標(biāo)志。符號常量定義格式#define符號常量名 符號常量值,如#define N 20則定義了符 號常量N,其值為20,注意符號常量名和符號常量值之間是用空格隔開, 而不是寫上二號,#define和符號常量名之間也有空格的。二、標(biāo)識符命名規(guī)則以數(shù)字,字母,下劃線這三類字符組成,但 只能以字母或下劃線開頭, 而不能也數(shù)字開頭,另外不能將關(guān)鍵字做為標(biāo)識符。32個關(guān)鍵字表在 P365附錄B變量名,函數(shù)名,符號常量名全都是標(biāo)識符三、變量變量的定義格式類型名變量名;如int a;定義了一個整型常量a。變量名是由人類隨便定義的,符合命 名規(guī)則的前提下,愛寫啥就
4、寫啥。所以什么flag ,cc,y1或者函數(shù)名fun,find 等全部是自定的用來做為名字而已,沒有更特別的意義。類型名int整型,long長整型:用于存放整數(shù),只是數(shù)值范圍不同float單精度浮點(diǎn)型double雙精度浮點(diǎn)型:用于存放實(shí)數(shù),數(shù)值范圍, 精度不同char字符型:用于存放字符變量賦值,初始化int a=3;定義的同時初始化a=6*9;定義后在程序中進(jìn)行賦值變量的值只有在賦值操作時才會被改變,即將其放在等號左邊時才會改變它的值, 或自增自減操作:a=5,a+,a-,像a+3并未改變a的值,只是使用了 a 的值而已.自增自減運(yùn)算變量+,+變量,變量-,-變量 使變量的值自增1或自減1
5、等價于 變量=變量+1 變量=變量-1+,-放于變量前后效果的區(qū)別: 當(dāng)自增自減運(yùn)算做為表達(dá)式的一部分時,+,-放在變量前面是先自增自減再使用變量的值,放在變量后面則是先使用變量的值,再自增自減。如 x=3; printf( %d”,+x);則相當(dāng)于執(zhí)行了 +x; printf( %d”,x);這樣的操作 所以打印出4再如 x=3; printf( %d”,x+);則相當(dāng)于執(zhí)行了 printf( %d”,x); x+;這樣的操 作,則打印出3,當(dāng)然最后x的值還是4。四、表達(dá)式運(yùn)算符和運(yùn)算對象一個運(yùn)算符都有若干個運(yùn)算對象,如+必然要跟兩個運(yùn)算對象才能進(jìn)行 加法運(yùn)算:3+5C語言里稱需要跟n個運(yùn)算
6、對象的運(yùn)算符為n元運(yùn)算符。 一元運(yùn)算符有:!,(類型名)二元運(yùn)算符有:+,-,*,/,%(求余),=,+=,-=,*=,/=,%=, , =,=(等 于),!=(不等于),&(且),|(或)多元運(yùn)算符有:, 運(yùn)算符的優(yōu)先級和結(jié)合性i. 優(yōu)先級:同一個運(yùn)算對象左右兩邊若同時有兩個運(yùn)算符,則這兩個運(yùn)算 符優(yōu)先級高的先進(jìn)行運(yùn)算。ii. 結(jié)合性:若同一個運(yùn)算對象左右兩邊的兩個運(yùn)算符優(yōu)先級相同,則根據(jù)結(jié)合性判斷先進(jìn)行哪個運(yùn)算,自左自右結(jié)合性的先算左邊的運(yùn)算符,自 右自左的先算右邊的運(yùn)算符。iii. 各運(yùn)算符的優(yōu)先級和結(jié)合性見 P365附錄C 強(qiáng)制類型轉(zhuǎn)換格式:(類型名)表達(dá)式。將后跟的表達(dá)式的值的數(shù)據(jù)類
7、型轉(zhuǎn)換為與圓 括號內(nèi)的類型名一致的類型。注意類型名一定要用()括起來。算術(shù)表達(dá)式i. 算術(shù)運(yùn)算符:+,-,*,/,%(求余)ii. 由算術(shù)運(yùn)算符加上運(yùn)算對象構(gòu)成 算術(shù)表達(dá)式,如3+3*6-9/2iii. 值:跟我們小學(xué)時學(xué)的一樣,就是表達(dá)式的計算結(jié)果iv. 整數(shù)除以整數(shù)結(jié)果取整數(shù)部分,故1/3得到的值是0v. 5%3結(jié)果為2,想想小學(xué)除法,求余得到的是余數(shù)不是商。賦值表達(dá)式i. 賦值運(yùn)算符:=,+=,-=,*=,/=,%=ii. 賦值表達(dá)式:變量=表達(dá)式,如x=3+6,x+=6-9,x+=x*=3+4注意等號 左邊只能是變量iii. 復(fù)合賦值運(yùn)算符的運(yùn)算:以/=為例:x/=表達(dá)式 等價于x=x
8、/(表達(dá)式)iv. 值:=號左邊的變量最終的值關(guān)系表達(dá)式i. 關(guān)系運(yùn)算符: , =,=(等于),!=(不等于)ii. 由關(guān)系運(yùn)算符加上運(yùn)算對象構(gòu)成 關(guān)系表達(dá)式,如3=4, 2=aiii. 值:滿足相應(yīng)運(yùn)算符所指定的關(guān)系的值為1,否則為0邏輯表達(dá)式i. 邏輯運(yùn)算符:&(且),|(或),!(非)ii. 由邏輯運(yùn)算符加上運(yùn)算對象構(gòu)成 邏輯表達(dá)式,如3&4, x|!yiii. 值:滿足相應(yīng)運(yùn)算符所指定的關(guān)系的值為1,否則為0iv. 進(jìn)行|或運(yùn)算時,若|左邊的表達(dá)式值為1,則不再對右邊的表達(dá)式 進(jìn)行運(yùn)算。v. 進(jìn)行&且運(yùn)算時,若&左邊的表達(dá)式值為0,則不再對右邊的表達(dá)式 進(jìn)行運(yùn)算。逗號表達(dá)式i. 逗號運(yùn)
9、算符:,ii. 用逗號將各種表達(dá)式連續(xù)起來構(gòu)成逗號表達(dá)式,如3+4,a=9,8*aiii. 值:組成逗號表達(dá)式的各個表達(dá)式中的最后一個的值,如上例為8*a題目:P71117 P81833五、輸入輸出函數(shù)scanf(格式控制串”變量地址表列);如 scanf( %d%c%d”,&a,&ch,&b);seanf( %4f”,&x);i. 格式控制串可控制截取用戶輸入的前幾個字符給變量,但不能控制輸入幾位小數(shù)給變量,如不能寫成seanf( %4.2f”,&x);ii. 第二個參數(shù)給的是地址,即要么是&+變量名或數(shù)組元素名的形式,要 么就是一個數(shù)組名或指針變量名,如 int *p,a; p=&a; s
10、canf( %d”,p);iii. 考試時注意看題目給你寫好的scanf的格式1. 若其格式控制串內(nèi)各格式符用“,”隔開如scanf(%d, %c,%d”,&a,&ch,&b);那輸入時也要用逗號隔開,如此例輸 入時應(yīng):3,+,52. 若是這種格式scanf( %d %d”,&a,&b);則輸入時應(yīng):3 5;3. 若是這種格式scanf( %d%c%d”,&a,&ch,&b);則輸入時應(yīng)3+5,若寫成3+ 5則a=3,ch= (空格),b=任意值(自己上機(jī)運(yùn)行看看結(jié)果)printf(格式控制串”輸出項(xiàng)表列);如float x=7.5; printf( %8.2f”,x);此處的意思是將x打印出
11、來,且占8列, 保留兩位小數(shù)。自己上機(jī)運(yùn)行看看效果。常用格式符匯總:i. %d :輸入輸出整型數(shù)據(jù),ld :輸入輸出長整型數(shù)據(jù)ii. %c:輸入輸出字符型數(shù)據(jù)iii. %f:輸出單(雙)精度浮點(diǎn)型數(shù)據(jù),輸入單精度型數(shù)據(jù)。%lf :輸入雙精度型數(shù)據(jù)iv. %s:輸入輸出一個字符串,用printf輸出字符串時,輸出項(xiàng)書寫時可 為字符串常量,或字符數(shù)組名。如 printf( %s”,”hello”;或char str10= ” hello”;pri ntf( %s”,str);v. %u :輸入輸出無符號整型,%o :輸入輸出八進(jìn)制數(shù),%x:輸入輸出十六進(jìn)制數(shù)getchar();函數(shù)調(diào)用后返回用戶輸
12、入的一個字符,故需再定義一個變量來存放這個 字符,即使用時應(yīng)char c; c=getchar();意思就是接收用戶輸入的一個字 符,并將其賦值給變量coputchar(字符常量或字符變量名);女口 char c=A putchar(c);或 putchar( A ;都會向屏幕輸出字符 A。六、C語言的語句表達(dá)式語句:由表達(dá)式末尾加上分號構(gòu)成。函數(shù)調(diào)用語句:由函數(shù)調(diào)用表達(dá)式加上分號構(gòu)成。空語句:;選擇結(jié)構(gòu)語句:if語句switch語句循環(huán)語句:for語句 while語句do while語句復(fù)合語句:用花括號將以上任意語句括起來構(gòu)成一條復(fù)合語句。七、C程序的基本結(jié)構(gòu)void main()聲明部分
13、:用來定義變量和聲明自定義函數(shù)的原型,需以“;”結(jié)尾,如int x;執(zhí)行語句部分:第六點(diǎn)里介紹的各種語句,如 x=3; printf( %d”,x);main函數(shù)外可寫自定義函數(shù)。女口int max()return 0;八、選擇結(jié)構(gòu)語句if(表達(dá)式)語句1 else語句2如果if語句的圓括號內(nèi)的表達(dá)式值為非 0,則執(zhí)行語句1,值為0則執(zhí)行語 句2oi. 表達(dá)式可為任意表達(dá)式,if語句執(zhí)行的實(shí)質(zhì)是判斷表達(dá)式的值是否為0來決定執(zhí)行語句1還是語句2o另外請?jiān)诖颂幈磉_(dá)嚴(yán)重關(guān)切,不管是高 手還是菜鳥經(jīng)常會把判斷兩個數(shù)相等的符號“=”寫成了一個等號“=” 成為了賦值運(yùn)算,這樣的寫法不會引發(fā)編譯錯誤,但結(jié)果
14、會與原意大 大不同,所以考試前請?jiān)偃嵝炎约?。ii. 語句1和語句2都只能是一個語句,若要跟多條語句,切記用一對 括起來,構(gòu)成復(fù)合語句;也不要隨便在圓括號后加“;”,因“;” 構(gòu)成一條空語句,這會使后面跟的語句1不再屬于if語句的組成部分。iii. if語句的三種結(jié)構(gòu)1. 單邊:if(表達(dá)式)語句2. 雙邊:if(表達(dá)式)語句1 else語句23. 多層(重點(diǎn)掌握):if(表達(dá)式1)語句1else if(表達(dá)式2)語句2else if(表達(dá)式3)語句3else語句n條件運(yùn)算符 表達(dá)式1?表達(dá)式2 :表達(dá)式3若表達(dá)式1的值非0,則取表達(dá)式2的值做為整個表達(dá)式的值,否則取表達(dá) 式3的值為整個表達(dá)式
15、的值。如34? 1:2該表達(dá)式的值為2switch語句switch(表達(dá)式)case表達(dá)式1 :語句case表達(dá)式2:語句case表達(dá)式n:語句default:語句語句執(zhí)行過程:先計算表達(dá)式的值,然后判斷該值與表達(dá)式1到表達(dá)式n中的哪個相等,若與表達(dá)式i的值相等,則執(zhí)行表達(dá)式i后的所有語句,當(dāng)遇 到break;語句時結(jié)束整個switch語句的執(zhí)行。表達(dá)式1到表達(dá)式n的值都 不相等的情況下執(zhí)行default后跟的語句。每個case后可跟多條語句。九、循環(huán)結(jié)構(gòu)for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句語句執(zhí)行過程:1. 計算表達(dá)式12. 判斷表達(dá)式2的值是否為0,若為0,語句執(zhí)
16、行結(jié)束,若不為0,進(jìn)入 步驟33. 執(zhí)行循環(huán)體語句(需注意的是循環(huán)體語句只能有一個語句,若要包含多個語句要用一對括起來,構(gòu)成一條復(fù)合語句,此處也不要隨便加上“”,因一個“;”可構(gòu)成一條空語句,這會使得后面真正的循環(huán)體語句不屬于for循環(huán)語句的部分)。進(jìn)入步驟44. 計算表達(dá)式3,然后重新進(jìn)入步驟2while循環(huán)語句do while循環(huán)語句i. while(表達(dá)式)循環(huán)體語句執(zhí)行過程:1. 判斷表達(dá)式的值是否為非0,若是進(jìn)入步驟2,否則結(jié)束語句執(zhí)行。2. 執(zhí)行循環(huán)體語句,重新回到步驟1。ii. do循環(huán)體語句while(表達(dá)式);執(zhí)行過程:1. 執(zhí)行循環(huán)體語句,進(jìn)入步驟22. 判斷表達(dá)式的值是否
17、為非0,若是重新回到步驟1,否則結(jié)束語句執(zhí)行。這里要注意的地方跟for語句一樣,即循環(huán)體語句只能有一個語句,若要 包含多個語句要用一對括起來,構(gòu)成一條復(fù)合語句,此處也不要隨便加 上“;”,因一個“;”可構(gòu)成一條空語句,這會使得后面真正的循環(huán)體語 句不屬于while循環(huán)語句的部分,另外do while循環(huán)的while(表達(dá)式)后 是要加“;”的。break語句:放在循環(huán)體內(nèi)實(shí)現(xiàn)的功能是結(jié)束其所在的那層循環(huán)的執(zhí)行。十、數(shù)組定義格式:數(shù)據(jù)類型數(shù)組名整型常量;如int a10;定義了一個整型數(shù)組,數(shù)組名為a,這個數(shù)組含有10個元素。引用數(shù)組元素:格式:數(shù)組名下標(biāo)切記下標(biāo)值從0開始。下標(biāo)可為常量,表達(dá)式
18、,變量等,如 int i=3 ;a0=5 ; a3*2=9 ;ai=7 ;初始化:數(shù)據(jù)類型 數(shù)組名整型常量=數(shù)據(jù)表列;將數(shù)據(jù)表列的各個值 依次賦值給數(shù)組的各個元素。如int a5=0,1,2,3,4;則數(shù)組a各元素a0到 a4的值分別為0, 1, 2,3, 4遍歷數(shù)組元素數(shù)組定義后,我們 不能對數(shù)組進(jìn)行整體的操作,如int a10;不能用a=3這樣 的操作將數(shù)組的各元素都賦值為3;而只能一個一個元素的進(jìn)行賦值,如a0=3;a1=3;a2=3a9=3 ;當(dāng)然此時我們就可以借助于一個for循環(huán)來控制下標(biāo)的變化從而對數(shù)組的各個元素進(jìn)行賦值for(i=0;i y ? x : y ;return ( z
19、 );注意點(diǎn):1. 函數(shù)類型是指返回值的類型,即要與return語句后跟的表達(dá)式的值的類型一致。 若函數(shù)類型為void則說明該函數(shù)無返回值,即函數(shù)體里不能出現(xiàn)return語句。2. 形式參數(shù)列表里定義的變量要記得給它們指定類型,而且如果同時要定義多 個,應(yīng)在每個前面都分別指定類型名,而不能寫成int x,y;3. 函數(shù)體里能寫的語句跟 main函數(shù)一樣,在開頭可定義所需要的變量,后面跟 上一堆執(zhí)行語句。函數(shù)調(diào)用流程以上面的函數(shù)為例,在main函數(shù)進(jìn)行調(diào)用:void mai n() int a,b,c;scanf(“d%”,&a,&b);printf( “ %d ,max(a,b);或 c=ma
20、x(a,b);printf(“%d ,c)以上兩種方法 都會在屏幕中打印出a, b間的較大值。調(diào)用函數(shù)的格式函數(shù)名(實(shí)際參數(shù)列表);調(diào)用的時候像什么函數(shù)類型,形式參 數(shù)的類型就不要加上去了。 max(a,b)中max就是函數(shù)名,寫上變量名a,b是實(shí)際 參數(shù)列表,執(zhí)行這個調(diào)用語句時,會先把a(bǔ),b的值給相應(yīng)位置的形式參數(shù)即執(zhí)行 了 x=a,y=b這樣的操作,然后開始執(zhí)行max函數(shù)的函數(shù)體的語句。當(dāng)max函數(shù)體 里執(zhí)行到一個return語句時,則max函數(shù)結(jié)束執(zhí)行,將return后的表達(dá)式的值 返回給main函數(shù)調(diào)用max函數(shù)的那個位置,即若上面a=3,b=5則max(a,b)return 后的表達(dá)
21、式的值應(yīng)該是5也就是說執(zhí)行完max后把5返回到調(diào)用max的位置可看 成printf( “%d , 5);或另一種解法的c=5。十三、指針指針變量的聲明:類型名*指針變量名; 通過指針變量訪問它所指向的普通變量的值先將普通變量的地址賦值給指針變量,再通過指針運(yùn)算符*得到普通變量的值。int *p,x,y;x=3;p=&x;則printf( %d”,*p);會打印出3即x的值 y=*p ;則y的值變?yōu)?*p=5 ;則x的值變?yōu)?指針變量加上(減去)一個位移的效果若指針變量存入的是數(shù)組元素的地址,則其加一減一得到的是那個數(shù)組元素下一個或前一個元素的地址。int a10; p=&a3;*p得到的是a3
22、的值。若p+;此時p存放的是a4的地址&a4; *p得到的就是a4的值。 或p-;此時p存放的是a2的地址&a2,*p得到的就是a2的值。 行指針i. 主要是對于二維數(shù)組來說的,二維數(shù)組每行都有自己的地址,第0行地址用數(shù)組名表示,第i行地址為數(shù)組名+i ;而想要得到二維數(shù)組里 一個元素的地址,必需先得到其所在行的地址,然后再由那個地址得到 元素的地址,比如說int a34;定義了一個二維數(shù)組,該二維數(shù)組 第0行的地址為a,第1行的地址為a+1,第2行的地址為a+2,想從 行的地址得到元素的地址,需在行地址前加上指針運(yùn)算符“*”,即*a就是第0行首個元素的地址即a00的地址,而a02的地址就是在
23、 a00的地址基礎(chǔ)上加上位移量2,即*a+2,然后想得到a02這個元 素的值呢就再加上一個指針運(yùn)算符“ *”,即*(*a+2),類似地,想得到 a22這個元素的值呢就是*(*(a+2)+2)ii. 定義行指針變量:類型名(*變量名)數(shù)組長度;如int (*p)4,a34; p=a;此時就可把p當(dāng)成a來用,用法同上所述。 判斷是否合法訪問數(shù)組元素:若是指針法訪問,判斷指針后跟的是否地址; 若是下標(biāo)法訪問,判斷下標(biāo)有無越界。函數(shù)指針:函數(shù)名即為函數(shù)的地址(指針)i. 函數(shù)指針變量的定義:類型名(*變量名)(形參列表);如int (*p)();ii. 賦值:指針變量=函數(shù)名;設(shè)有個函數(shù)其函數(shù)名為ma
24、x,則要將該函數(shù)的地址給p的話只要執(zhí)行如下語句即可p = max;指針數(shù)組:指針數(shù)組的數(shù)組元素都是指針變量,是用來存放變量的地址的, 定義格式為 類型名*變量名數(shù)組長度;如int * p10;指向指針的指針:指針變量也是一種變量,故在內(nèi)存中也有對應(yīng)的一個地址, 而要存放指針變量的地址,就要求助于用來存放指針變量的地址的指針變 量,定義格式 類型名*變量名;女口 int *p1; int *p2; int a=3;可進(jìn)行賦值 p仁&a; p2=&p1;則 a、*p1 和 *p2 的值都是 3.十四、 宏定義無參宏定義#define標(biāo)識符 值定義后,出現(xiàn)所定義的標(biāo)識符的地方都將以定義時指定的值來代
25、替。#define M 2+3mai n() int x;x=M*M; 則x的值為2+3*2+3=11若想得到的結(jié)果是(2+3)*(2+3)則 定義時也寫成這樣 #defi ne M (2+3)注意#define、標(biāo)識符、值之間都要用空格隔開,且宏定義結(jié)尾不需加 分號。帶參宏定義 #define標(biāo)識符(參數(shù)表)值#define S(x,y) x*ymain () int a=3,b=4,c=5,d=6;printf(a*b=%dn, S(a,b);此時會打印出 a*b=12printf(a+b*c+d=%dn , S(a+b,c+d);此時會打印出 a+b*c+d=29,帶 參宏定義執(zhí)行時是將
26、a+b這樣一個表達(dá)式代替x, c+d這樣一個表達(dá)式代 替y,所以S(a+b,c+d)進(jìn)行的是a+b*c+d的運(yùn)算,而不是將a+b的值給x, c+d的值給y然后再做x*y,這點(diǎn)跟函數(shù)調(diào)用傳遞參數(shù)是不一樣的。自定義類型名typedef:對已存在的類型名取一個外號。i. 基本格式:typedef原類型名 新類型名;ii. typedef int INTEGER;則 int a,b;等價于 INTEGER a,b;iii. typedef int NUM10;則 int a10;等價于 NUM a; a 即為一個有 10 個元素的數(shù)組的數(shù)組名。iv. typedef int * INTEGER;貝U
27、int *a,*b;等價于 INTEGER a,b;十五、結(jié)構(gòu)體,共用體,枚舉類型結(jié)構(gòu)體i.結(jié)構(gòu)體類型的定義及變量的定義struct結(jié)構(gòu)體名類型成員1;類型成員2;類型成員n;變量名;如struct stude nt long num;char n ame10;int score4;st1;定義類型時同時定義變量struct stude nt st2定義類型后,用類型名定義變量還有一種struct long num;char n ame10;int score4;st3;不給類型名,直接定義變量ii. 結(jié)構(gòu)體變量所占字節(jié)數(shù):各成員各占字節(jié)數(shù)之和,如以上st1,st2,st3的 字節(jié)數(shù)皆為10+
28、20+2*4=38iii. 結(jié)構(gòu)體變量初始化:struct student a=20030001,張三, 70,75,80,85;iv. 結(jié)構(gòu)體數(shù)組定義及初始化:struct student a3=20030001,zhang,89,90,91,92, 20030002,liu,68,69,70,71, 20030003,li,57,58,59,60 ;v. 結(jié)構(gòu)體變量成員的訪問1. 結(jié)構(gòu)體變量名.成員名 如st1.num2. 使用結(jié)構(gòu)體類型的指針:(*結(jié)構(gòu)體指針名).成員 或 結(jié)構(gòu)體指針名-成員名struct student *st; st=&st1; st-num 或(*st).num 共
29、用體i.共用體類型的定義及變量的定義union共用體名類型成員名1;類型成員名n;變量的定義與結(jié)構(gòu)體類似,也有三種方法。union dataint i;char ch;float f;d1;定義類型時同時定義變量union data d2;定義類型后,用類型名定義變量unionint i;char ch;float f;d3;不給類型名,直接定義變量ii. 共用體變量所占字節(jié)數(shù):各成員所占字節(jié)數(shù)的最大值,如上d1,d2,d3所占字節(jié)數(shù)皆為4.(單精度浮點(diǎn)型變量所占字節(jié)數(shù)最多為4).iii. 共用體變量成員的訪問1. 共用體變量名.成員名 如dl.i2. 使用共用體類型的指針:(*共用體指針名)
30、.成員 或 共用體指針名-成員名union data *dd; dd=&d1; dd-i 或(*dd).iiv. 共用體成員的值:由于共用體各成員共用同一段內(nèi)存區(qū),故同一時刻只有一個成員的值是正確的。如d1.i=5;d1.ch=a;則此時dl.i的值就不 是5 了,而是其他值了, d1.ch的值是枚舉類型i. 枚舉類型的定義:enum枚舉名枚舉元素名1,枚舉元素名2,枚舉元素名n;ii. 枚舉元素的值:默認(rèn)值分別為0、1、n-1。枚舉元素的值也可在定義時重指定,對 于沒有指定值的元素,按順序加1女口 enum weekdaysun=7,mon=1,tue,wend,thur,fri,sat則
31、sun值為 7,mon 值為1,tue值為2,we nd值為3,thur值為4,fri值為5,sat值為6十六、 Turbo C的使用菜單激活:F10菜單切換:左右方向鍵在不同菜單間切換,上下方向鍵在同一個菜單不同選 項(xiàng)間切換。載入文件:兩種方法:1.找到源文件所在位置,直接將其拉到Turbo C快捷方式上;2. F3運(yùn)行程序:ctrl+F9看程序運(yùn)行結(jié)果:alt+F5進(jìn)入編輯狀態(tài):菜單Edit保存:F2插入狀態(tài)切換:Insert鍵【新增自編程序3】統(tǒng)計數(shù)組內(nèi)小寫字母出現(xiàn)次數(shù)main()char a50=abcdefghijklmnopqrstuvwxyz; int cnt26,i,word,
32、time;for(i=0;i26;i+)cnti=0;for(i=0;i50;i+)cntai-97+;for(i=0;i26;i+);printf(n);for(i=0;i26;i+)word=97+i;printf(word=%c=%d(time) ,word,cnti);printf(n);z改寫成你要輸入的數(shù)字個數(shù))【新增自編程序2】定義一數(shù)組 輸入z個數(shù)并求平均值(將程序中的所有字母#include float fun(int *p,int n)float avg;int sum=0,i;for(i=0;in;i+)sum+=pi;avg=1.0*sum/n;return avg;m
33、ain()int *k,az,average;for(k=a;k-a z;k+)scanf(%d,k);fun(a,z);printf(average=%fn,fun(a,z);【新增自編程序1】輸入5個數(shù) 為一個數(shù)組,并輸出此數(shù)組及最大的數(shù)。(數(shù)組長度可隨意變更,例:輸入6個數(shù),即把程序中數(shù)字5,改成6即可!)#include #define M 5main()int aM,i,max;for(i=0;iM;i+) scanf(%d,a+i);for(i=0;iM;i+) printf(M,ai);printf(n);for(i=0;imax) max=ai; printf(max=%dn,
34、max);【程序1】題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?1. 程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。2. 程序源代碼:main()int i,j,k;printf(n);for(i=1;i5;i+)/ *以下為三重循環(huán)*/for(j=1;j5;j+)for (k=1;k2)sum+;printf(It is the %dth day.,sum);【程序2】題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸岀。1程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果xy則將x與y
35、的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果xz則將x與z的值進(jìn)行交換,這樣能使x最小。2.程序源代碼:main()int x,y,z,t;scanf(%d%d%d, &x,&y,& z);if (xy)t=x;x=y;y=t;if(xz)t=z;z=x;x=t;if(yz)t=y;y=z;z=t; printf(small to big: %d %d %dn,x,y,z);【程序3】題目:用*號輸岀字母C的圖案。1. 程序分析:可先用*號在紙上寫岀字母C,再分行輸岀2. 程序源代碼:#include stdio.hmain()printf(Hello C-world!n);printf( *n
36、);printf( *n);printf( * n);printf( *n);【程序4】題目:打印岀所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù) 本身。例如:153是一個“水仙花數(shù)”,因?yàn)?53=1的三次方+ 5的三次方+ 3的三次方。1程序分析:利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,十位,百位。2.程序源代碼:main()int i,j,k,n;printf(water flowernumber is:);for(n=100;n=90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。1. 程序分析:(ab)?a:b這是條件運(yùn)
37、算符的基本例子。2. 程序源代碼:main()int score;char grade;printf(please input a scoren);scanf(%d, &score);grade=score=90?A:(score=60?B:C);printf(%d belongs to %c,score,grade);【程序17】題目:輸入一行字符,分別統(tǒng)計岀其中英文字母、空格、數(shù)字和其它字符的個數(shù)。1. 程序分析:利用while語句,條件為輸入的字符不為n.2. 程序源代碼:#include stdio.hmain()char c;int letters=0,space=0,digit=0
38、,others=0;printf(please input some characters、);while(c=getchar()!=n)if(c=a&c=A&c=0&c=9)digit+;elseothers+;printf(all in all:char=%d space=%d digit=%d thers=%dn,letters, space,digit,others);【程序18】2+22+222+2222+22222(此時例如6=1 + 2 + 3.編程題目:求 s=a+aa+aaa+aaaa+aa.a勺值,其中 a是一個數(shù)字。例女口共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制。1. 程序
39、分析:關(guān)鍵是計算岀每一項(xiàng)的值。2. 程序源代碼:main()int a,n,count=1;long int sn=0,tn=0;printf(please input a and nn);scanf(%d,%d, &a,&n);printf(a=%d,n=%dn,a,n);while(count=n)tn=tn+a;sn=sn+tn;a=a*10;+count;printf(a+aa+.=%ldn,sn);【程序19】題目:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)” 找出1000以內(nèi)的所有完數(shù)。1. 程序分析:請參照程序 -上頁程序14.2. 程序源代碼:main()static
40、int k10;int i,j,n,s;for(j=2;j1000;j+)n=-1;s=j;for(i=1;i if(j%i)=0)n+;s=s-i;kn=i;if(s=0)for(i=0;i printf(%d,ki); printf(%dn,kn);【程序20】題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經(jīng)過多少米?第 10次反彈多高?1. 程序分析:見下面注釋2. 程序源代碼:main()float sn=100.0,hn=sn/2;int n;for(n=2;n0)x仁(x2+1)*2;x2=x1;day-;printf(the t
41、otal is %dn,x1);【程序22】題目:兩個乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為 a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊(duì)賽手的名單。1. 程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素數(shù),反之是素數(shù)。2. 程序源代碼:main()char i,j,k;for(i=x;iv=z;i+)for(j=x;jv=z;j+)if(i!=j)for(k=x;k=z;k+) if(i!=k&j!=k) if(i!=x&k!=x &k!=z)printf(
42、order is a-%ctb-%ctc-%cn,i,j,k);【程序23】題目打印岀如下圖案(菱形)*1. 程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一個規(guī)律,利用雙重for循環(huán),第一層控制行,第二層控制列。2. 程序源代碼:main()int i,j,k;for(i=0;i=3;i+)for(j=0;j=2-i;j+)printf();for(k=0;k=2*i;k+)printf(*);printf(n);for(i=0;i=2;i+)for(j=0;jv=i;j+) printf();for(k=0;k=4-2*i;k+) printf(*);printf(n);【程序
43、24】20項(xiàng)之和。題目:有一分?jǐn)?shù)序列:2/1, 3/2 , 5/3, 8/5, 13/8, 21/13求出這個數(shù)列的前1. 程序分析:請抓住分子與分母的變化規(guī)律。2. 程序源代碼:main()int n,t,number=20;float a=2,b=1,s=0;for(n=1;n=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf(sum is %9.6fn,s);【程序25】題目:求 1+2!+3!+.+20!的和1. 程序分析:此程序只是把累加變成了累乘2. 程序源代碼:main()float n,s=0,t=1;for(n=1;n=20;n+)t*=n;s+=
44、t;printf(1+2!+3!.+20!=%en,s);【程序26】題目:利用遞歸方法求5!。1程序分析:遞歸公式:fn=fn_1*4!2.程序源代碼:#include stdio.hmain()int i;int fact();for(i=0;i5;i+)printf(40:%d!=%dn,i,fact(i);int fact(j)int j;int sum;if(j=0)sum=1;elsesum=j*fact(j-1);return sum;【程序27】題目利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印岀來1. 程序分析:2. 程序源代碼:#include stdio.hmain()int i=5;void palin(int n);printf(40:);palin(i);printf(n);void palin(n)int n;char next;if(n=1)next=getchar();printf(nO:); putchar(next); else next=getchar(); palin(n-l);putchar(next);【程序28】題目:有5個人坐在一起,問第五個人多少歲?他說比第 4個人大2歲。問第4個人歲數(shù),他說比第 3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 卒中健康管理課件
- 華師版小學(xué)信息技術(shù)課件
- 嘉興舟山中考數(shù)學(xué)試卷
- 杭州小學(xué)畢業(yè)班數(shù)學(xué)試卷
- 濟(jì)南高一聯(lián)考 數(shù)學(xué)試卷
- 2022-2027年中國赤鏈蛇養(yǎng)殖行業(yè)市場調(diào)研及投資規(guī)劃建議報告
- 2023-2029年中國螺旋波紋管行業(yè)市場深度評估及投資策略咨詢報告
- 中國西洋跳棋行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 2025年中國紅目鏡行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年中國農(nóng)業(yè)生物技術(shù)行業(yè)市場發(fā)展現(xiàn)狀及投資方向研究報告
- 如何做好一名合格醫(yī)生
- 【生態(tài)文明建設(shè)評價分析的國內(nèi)外文獻(xiàn)綜述3200字】
- 大數(shù)據(jù)在橋梁結(jié)構(gòu)健康監(jiān)測中的應(yīng)用研究
- 2025年中醫(yī)藥現(xiàn)代化國際市場拓展:新加坡市場潛力分析報告
- 2025年河南省中考?xì)v史試卷及答案
- 福建漳州安然燃?xì)庥邢薰菊衅腹P試題庫2025
- 充電站可行性研究報告
- 公司安全事故隱患內(nèi)部舉報、報告獎勵制度
- 《光伏發(fā)電工程預(yù)可行性研究報告編制規(guī)程》(NB/T32044-2018)中文版
- 身份證籍貫自動對照自動生成
- 商場全年促銷活動計劃表
評論
0/150
提交評論