c語(yǔ)言概要 第一章、概述 1、c語(yǔ)言的基本知識(shí) 1.1、c語(yǔ)言的執(zhí)行步驟 編輯-程序代碼的錄入,生成源程序*.c 編譯-語(yǔ)法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj (語(yǔ)法或邏輯錯(cuò)誤,從第一個(gè)開始改,變量定義,語(yǔ)句格式,表達(dá)式格式等) 鏈接-與其他目標(biāo)程序或庫(kù)鏈接裝配,生成可執(zhí)行程序*.exe 執(zhí)行 1.2、main函數(shù)的基本知識(shí) main()函數(shù)的位置 c程序總是從main( )函數(shù)開始執(zhí)行 一個(gè)c程序可以包含一個(gè)主函數(shù),即main()函數(shù);也可以包含一個(gè)main()函數(shù)和若干其它函數(shù) 1.3、c程序的結(jié)構(gòu) 函數(shù)與主函數(shù) 程序由一個(gè)或多個(gè)函數(shù)組成 必須有一個(gè)且只能有一個(gè)主函數(shù)main() 程序執(zhí)行從main開始,在main中結(jié)束,其他函數(shù)通過(guò)嵌套調(diào)用得以執(zhí)行 程序語(yǔ)句 C程序由語(yǔ)句組成 用“;”作為語(yǔ)句終止符 注釋 // 或 /* */ 為注釋,不能嵌套 不產(chǎn)生編譯代碼 1.4、c 程序書寫的規(guī)則 習(xí)慣用小寫字母,大小寫敏感 不使用行號(hào),無(wú)程序行概念:通常一個(gè)語(yǔ)句占一行 可使用空行和空格 常用鋸齒形的書寫格式;同一層次結(jié)構(gòu)的語(yǔ)句上下對(duì)齊。
第二章、基本數(shù)據(jù)類型與運(yùn)算 2.1、c程序的數(shù)據(jù)類型 注意類型和變量含義的不同(類型是固定好的名字,變量是自己起的名字) 變量占用的存儲(chǔ)空間 數(shù)據(jù)類型 基本類型:整型、字符型、浮點(diǎn)型(單精度型,雙精度型) 構(gòu)造類型:數(shù)組類型、結(jié)構(gòu)體類型 指針類型 空類型 注意基本類型賦初值的方式 基本數(shù)據(jù)類型的表示形式 整形數(shù)據(jù) 十進(jìn)制:以非0數(shù)字開頭,如:123,-9,0 八進(jìn)制;以0數(shù)字開頭,如:0123,067 十六進(jìn)制:以0x開頭,如:0x123,0xff 實(shí)型數(shù)據(jù) 十進(jìn)制:必須帶小數(shù)點(diǎn),如:123.0,-9.0 指數(shù)形式;如:1.23E3,0.9e-2,5e2 字符型數(shù)據(jù) 普通字符:如:'a','2','H','#' 轉(zhuǎn)義字符:如:'\n','\167','\xlf,'\\' (實(shí)現(xiàn)幾列的對(duì)齊:指定寬度。如%100\ '\t'制表位) (字符串長(zhǎng)度。
“abc\n\t\\” strlen 6; sizeof 7) 基本數(shù)據(jù)類型的存儲(chǔ)長(zhǎng)度 整型 Int 字節(jié)數(shù) 2 位數(shù) 16 數(shù)的表示范圍 -32768—32767 Short 2 16 -32768—32767 Long 4 32 -2147483648—2147483647 實(shí)型 Float 4 32 3.4e-38---3.4e38 Double 8 64 1.7e-308---1.7e308 字符型 Char 1 8 -128----127 2.2、標(biāo)識(shí)符命名規(guī)則 C語(yǔ)言標(biāo)志符命名規(guī)則 標(biāo)識(shí)符有數(shù)字,字母,下劃線組成 標(biāo)識(shí)符的首字符必須為字母和下劃線 標(biāo)識(shí)符不能為c語(yǔ)言的保留字(關(guān)鍵字) 如:auto extern sizeof float static case for struct char goto switch continue in typedef const if union default long unsigned do register void double return else short while enum signed 算術(shù)運(yùn)算符 + - * / % 關(guān)系運(yùn)算符 > = <= != 邏輯運(yùn)算符 ! && || 位運(yùn)算符 <> ~ | ^ & 賦值運(yùn)算符 = 及其擴(kuò)展賦值運(yùn)算符 條件運(yùn)算符 ? : 逗號(hào)運(yùn)算符 , 指針運(yùn)算符 * & 求字節(jié)數(shù)運(yùn)算符 sizeof 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 (類型) 分量運(yùn)算符 . -> 下標(biāo)運(yùn)算符 [ ] 其他 如函數(shù)調(diào)用運(yùn)算符() 運(yùn)算符的優(yōu)先級(jí) 由高到低:?jiǎn)文窟\(yùn)算符,算數(shù)運(yùn)算符,關(guān)系運(yùn)算符,賦值運(yùn)算符 說(shuō)明:?jiǎn)文窟\(yùn)算符:自增運(yùn)算符,自減運(yùn)算符,類型裝換運(yùn)算符。結(jié)合方向:自右至左 如:++--I 先—i.。
算術(shù)運(yùn)算 結(jié)合方向自左至右 2.3基本運(yùn)算和表達(dá)式 關(guān)系表達(dá)式和邏輯表達(dá)式 (a>b)&&(x>y) (a==b)||(x==y) !=a||(a>b) A&&b.a為0.不執(zhí)行b A||b a為1.不執(zhí)行b 在 c 中邏輯運(yùn)算結(jié)果:1代表“真”,0代表“假”; 判斷一個(gè)表達(dá)式是否真:0代表“假”,非0代表“真” 條件表達(dá)式 逗號(hào)表達(dá)式 如:k=5,k++ 逗號(hào)值為5;k為6. 表達(dá)式1?表達(dá)式2 :表達(dá)式3 K=5>6 ? 1 : 0 2.4、混合運(yùn)算的數(shù)據(jù)類型轉(zhuǎn)換 2/3+0.5 雙精度浮點(diǎn)型 第三章、順序結(jié)構(gòu)程序設(shè)計(jì) 3.1、c語(yǔ)句的分類 簡(jiǎn)單語(yǔ)句 表達(dá)式語(yǔ)句 表達(dá)式+分號(hào) 空語(yǔ)句 只有分號(hào)的語(yǔ)句 復(fù)合語(yǔ)句 用花括號(hào)將若干語(yǔ)句括起來(lái) 流程控制語(yǔ)句 選擇語(yǔ)句 if ,switch 循環(huán)語(yǔ)句 while, do while , for 轉(zhuǎn)移語(yǔ)句 break ,continue ,return goto 3.2、格式輸入函數(shù)scanf 一般形式:scanf(“格式控制字符串“,地址列表); 使用scanf函數(shù)時(shí),需要注意: 格式字符的個(gè)數(shù)必須與輸入項(xiàng)的個(gè)數(shù)相同,數(shù)據(jù)類型必須一一對(duì)應(yīng),非格式字符串(說(shuō)明性的)要原封不動(dòng)的輸入。 輸入實(shí)行數(shù)據(jù)時(shí),可以不帶小數(shù)點(diǎn),即按整型數(shù)據(jù)輸入 數(shù)值型數(shù)據(jù)與字符或字符串混合輸入時(shí),需要注意輸入方式。
3.3、格式輸出函數(shù)printf Printf(“格式控制字符串“,輸出列表); 指定輸出格式,由格式字符串和非格式字符串兩種組成,非格式字符串照原樣輸出。 %[標(biāo)志][輸出最小寬度][.精度][長(zhǎng)度]類型 標(biāo)志:- 左對(duì)齊;+ 右對(duì)齊; %f, %d, %c, %s 3.4、其他輸入輸出函數(shù) Putchar getchar puts gets 第四章、選擇結(jié)構(gòu)程序設(shè)計(jì) If選擇結(jié)構(gòu) 單分支 If(表達(dá)式) 語(yǔ)句 雙分支 If(表達(dá)式) 語(yǔ)句1 Else 語(yǔ)句2 多分支 If (表達(dá)式1) 語(yǔ)句1 Else if(表達(dá)式2) 語(yǔ)句2 。
Else if(表達(dá)式m) 語(yǔ)句m Else 語(yǔ)句n Switch(表達(dá)式) { Case 常量表達(dá)式1:語(yǔ)句1;break; Case 常量表達(dá)式2:語(yǔ)句2;break; 。
Case 常量表達(dá)式m:語(yǔ)句m;break; Default:語(yǔ)句n;break; } 注意break的使用 第五章、循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 循環(huán)三要素 初始條件 ;終止條件 ;在初始條件和終止條件間反復(fù)做某件事情(循環(huán)體) While(表達(dá)式) 語(yǔ)句 Do 語(yǔ)句 While(表達(dá)式)。
(第六版) Bradley L. Jones, Peler Aitken 著. 信達(dá)工作室 譯. 人民郵電出版社 這本書對(duì)初學(xué)者很好, 如果有點(diǎn)基礎(chǔ)那就更好了. 建議選擇譚浩強(qiáng)譚老師的書,簡(jiǎn)單易學(xué),理論與實(shí)踐結(jié)合的很好,而且如果能認(rèn)真學(xué)的話,你會(huì)發(fā)現(xiàn)你的C語(yǔ)言基礎(chǔ)非常的實(shí)。
也不是說(shuō)其他的書不好,但是有些書只是為了讓讀者入門,沒(méi)有前途呀。 先讀譚浩強(qiáng)的《C語(yǔ)言程序設(shè)計(jì)》,這是公認(rèn)的中文入門級(jí)教材。
但是書中的代碼風(fēng)格不敢恭維??赐赀@本,推薦《21天學(xué)通C語(yǔ)言》,這本書比較好,個(gè)人感覺(jué)。
看完這兩本,你就可以進(jìn)階C++了。 C語(yǔ)言只要把基礎(chǔ)打好就好,你要是想精通的話,最好是精通C++,這樣比較有前途。
但不要操之過(guò)急。
一、C語(yǔ)言的結(jié)構(gòu) 1、程序的構(gòu)成,MAIN函數(shù)和其他函數(shù) 2、頭文件,數(shù)據(jù)說(shuō)明,函數(shù)的開始和結(jié)束標(biāo)志 3、源程序的書寫格式 4、C語(yǔ)言的風(fēng)格 二、數(shù)據(jù)類型及其運(yùn)算 1、C的數(shù)據(jù)類型(基本類型,構(gòu)造類型,指針類型,空類型)及其定義方法。
2、C運(yùn)算符的種類、運(yùn)算優(yōu)先級(jí)和結(jié)合性。 3、不同類型數(shù)據(jù)間的轉(zhuǎn)換與運(yùn)算。
4、C表達(dá)式類型(賦值表達(dá)式,算術(shù)表達(dá)式,關(guān)系表達(dá)式,邏輯表達(dá)式,條件表達(dá)式,逗號(hào)表達(dá)式)和求值規(guī)則。 三、基本語(yǔ)句 1、表達(dá)式語(yǔ)句,空語(yǔ)句,復(fù)合語(yǔ)句。
2、數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用。 3、復(fù)合語(yǔ)句。
4、GOTO語(yǔ)句和語(yǔ)句標(biāo)號(hào)的使用。 四、選擇結(jié)構(gòu)程序設(shè)計(jì) 1、用IF語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)。
2、用SUITCH語(yǔ)句實(shí)現(xiàn)多分枝選擇結(jié)構(gòu)。 3、選擇結(jié)構(gòu)的嵌套。
五、循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 1、FOR循環(huán)結(jié)構(gòu)。 2、WHILE和DO WHILE循環(huán)結(jié)構(gòu)。
3、CONTINUE語(yǔ)句和BREAK語(yǔ)句。 4、循環(huán)的嵌套。
五、循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 1、FOR循環(huán)結(jié)構(gòu)。 2、WHILE和DO WHILE循環(huán)結(jié)構(gòu)。
3、CONTINUE語(yǔ)句和BREAK語(yǔ)句。 4、循環(huán)的嵌套。
六、數(shù)組的定義和引用 1、一維數(shù)組和多維數(shù)組的定義、初始化和引用。 2、字符串與字符數(shù)組。
七、函數(shù) 1、庫(kù)函數(shù)的正確調(diào)用。 2、函數(shù)的定義方法。
3、函數(shù)的類型和返回值。 4、形式參數(shù)和實(shí)在參數(shù),參數(shù)值的傳遞。
5、函數(shù)的正確調(diào)用,嵌套調(diào)用,遞歸調(diào)用。 6、局部變量和全局變量。
7、變量的存儲(chǔ)類別(自動(dòng),靜態(tài),寄存器,外部),變量的作用域和生存期。 8、內(nèi)部函數(shù)與外部函數(shù) 八、編譯預(yù)處理 1、宏定義:不帶參數(shù)的宏定義;帶參數(shù)的宏定義。
2、"文件包含"處理 九、指針 1、指針與指針變量的概念,指針與地址運(yùn)算符。 2、變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針變量。
通過(guò)指針引用以上各類型數(shù)據(jù)。 3、用指針作函數(shù)參數(shù)。
4、返回指針值的指針函數(shù)。 5、指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)。
十、結(jié)構(gòu)體(即"結(jié)構(gòu)" )與共用體(即" 聯(lián)合" ) 1、結(jié)構(gòu)體和共用體類型數(shù)據(jù)的定義方法和引用方法。 2、用指針和結(jié)構(gòu)體構(gòu)成鏈表,單向鏈表的建立、輸出、刪除與插入。
十一、位運(yùn)算 1、位運(yùn)算符的含義及使用。 2、簡(jiǎn)單的位運(yùn)算。
十二、文件操作 只要求緩沖文件系統(tǒng)(即高級(jí)磁盤I/O系統(tǒng)),對(duì)非標(biāo)準(zhǔn)緩沖文件系統(tǒng)(即低級(jí)磁盤I/O系統(tǒng))不要求。 1、文件類型指針(FILE類型指針)。
2、文件的打開與關(guān)閉(FOPEN,FCLOSE)。 3、文件的讀寫(FPUTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINT,FSCANF函數(shù)),文件的定位(REWIND,FSEEK函數(shù))。
基本語(yǔ)法介紹預(yù)處理命令把小寫字母轉(zhuǎn)換成大寫字母chara,b;a='x';b='y';a=a-32;b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);復(fù)合賦值語(yǔ)句有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼C語(yǔ)言中的空語(yǔ)句:while(getchar!='\n');//這里包含了空循環(huán)體scanf與printf:scanf輸入數(shù)據(jù)可以指定數(shù)據(jù)字段的寬度,但不能規(guī)定數(shù)據(jù)的精度,而printf則可以printf(“%3,2f”,a);//這里的3.2表示按實(shí)數(shù)形式輸出,輸出寬度為3,如果輸出的數(shù)不足3,位,則按實(shí)際寬度輸出,四舍五入保留兩位小數(shù)預(yù)處理命令宏定義(1)不帶參數(shù)的宏定義#definePI3.1415926//不用加分號(hào)(2)帶參數(shù)的宏定義#defineMAN(a,b)((a)>(b)?(a):(b))在語(yǔ)句塊內(nèi)定義的變量稱之為局部變量,又稱為內(nèi)部變量,僅在定義它的語(yǔ)句塊內(nèi)有效,并且擁有自己獨(dú)立的存儲(chǔ)空間。
全局變量:在函數(shù)之外定義的變量成為全局變量。如果在同一個(gè)源文件中,全局變量和局部變量同名,則在局部變量的作用范圍內(nèi),全局變量不起作用,即被“屏蔽”。
說(shuō)明:(1)一個(gè)函數(shù)中既可以使用本函數(shù)的局部變量,又可以使用有效的全局變量。(2)利用全局變量可以增加函數(shù)聯(lián)系的渠道,從而得到一個(gè)以上的返回值(3)全局變量一般第一個(gè)字母用大寫表示(4)建議在一般情況下不要使用全局變量,因?yàn)槿肿兞恳恢闭加么鎯?chǔ)空間,降低ile函數(shù)的通用性和程序的清晰性,容易出錯(cuò)。
變量的存儲(chǔ)類型:(1)自動(dòng)型變量autointi=1;auto關(guān)鍵字只能用于定義局部變量,為默認(rèn)的類型(2)寄存器型變量register(3)靜態(tài)型變量static該變量只有在所在的函數(shù)內(nèi)有效,退出該函數(shù)時(shí)該變量的值仍然保留,下次進(jìn)入后仍然可以使用。退出程序時(shí)值才消失。
(4)外部型變量externC程序在編譯時(shí)當(dāng)遇到extern,先在本文件中找外部變量的定義,如果找到,就在本文件中擴(kuò)展作用域,如果找不到就在連接時(shí)從其他的文件中找到外部變量的定義如果找到,就將作用域擴(kuò)展到本文件,否則按出錯(cuò)處理。在高級(jí)語(yǔ)言的學(xué)習(xí)中一方面應(yīng)數(shù)量掌握該語(yǔ)言的語(yǔ)法,因?yàn)樗撬惴▽?shí)現(xiàn)的基礎(chǔ),另一方面必須認(rèn)識(shí)到算法的重要性,加強(qiáng)思維訓(xùn)練,以便寫出高質(zhì)量的程序。
getchar()getch()getche()函數(shù)和putchar()putch()函數(shù)putchar(c)putch(c)把單個(gè)字符c輸出到標(biāo)準(zhǔn)設(shè)備上getchar()getche()getch()函數(shù)用于從終端輸入數(shù)據(jù)getchar()按enter鍵之后才接受數(shù)據(jù),只接收第一個(gè)數(shù)據(jù)getch()和getche()在輸入一個(gè)字符后立刻被函數(shù)接受,不用按enter鍵。getch()不回顯輸入的數(shù)據(jù)getche()顯示輸入的數(shù)據(jù)指針與數(shù)組一維數(shù)組二維數(shù)組字符數(shù)組二維字符串指針與一維數(shù)組一維數(shù)組:不允許對(duì)數(shù)組的長(zhǎng)度進(jìn)行動(dòng)態(tài)定義數(shù)組必須先定義后使用數(shù)組的定義:inti[10]intb[]={1,2,3,0,0,0}等價(jià)于intb[6]={1,2,3}字符數(shù)組:字符數(shù)組是由若干個(gè)有效字符構(gòu)成且以字符'\0'作為結(jié)束標(biāo)志的一個(gè)字符序列。
字符數(shù)組的定義:chara[10];字符數(shù)組的初始化:對(duì)字符數(shù)的各個(gè)元素分別進(jìn)行初始化chara[3]={'a','b'};/*余下的自動(dòng)補(bǔ)'\0',這時(shí)字符數(shù)組就變成了字符串*/用字符串常量來(lái)給字符數(shù)組進(jìn)行初始化chara[13]="helloworld!"字符數(shù)組的輸入輸出:charc[6](1)用格式符“%c”逐個(gè)輸入輸出字符:scanf("%c",&c[1]);printf("%c",c[1]);(2)用格式符“%s”整個(gè)輸入輸出字符串:scanf("%s",c);printf("%s",c);字符數(shù)組與字符串的區(qū)別:字符數(shù)組用來(lái)存放和處理字符數(shù)組且不加結(jié)束標(biāo)識(shí)符就“\0”時(shí),則在程序中只能逐個(gè)引用字符數(shù)組中的各個(gè)字符,而不能一次引用整個(gè)字符數(shù)組。而字符串則可以對(duì)其引用整個(gè)數(shù)組。
其操作的方式一個(gè)是數(shù)組元素,一個(gè)是數(shù)組名。字符串處理函數(shù):(1)輸入字符串函數(shù)char*gets(char*str);//stdio.h在使用gets()輸入字符串時(shí),可以包括空格在內(nèi)的字符,在回車時(shí),自動(dòng)驕傲字符串結(jié)束標(biāo)志'\0'賦予字符數(shù)組的最后一個(gè)元素。
(2)輸出字符串函數(shù)intputs(char*str);//stdio.h在使用puts()輸出字符串時(shí),將字符串結(jié)束標(biāo)志'\0'轉(zhuǎn)換成'\n'輸出。(3)字符串復(fù)制函數(shù)char*strcpy(char*strl,char*str2);//string.h不能使用‘=’賦值語(yǔ)句對(duì)字符數(shù)組整體賦值,只能使用strcpy()處理。
(4)字符串比較函數(shù)intstrcmp(char*str1,char*str2);//string.h字符串比較不能使用if(str1==str2)的形式,只能使用strcmp();(5)字符串長(zhǎng)度測(cè)量函數(shù)unsignedintstrlen(char*str);不包括字符串結(jié)束字符'\0'(6)找字符或字符串位置函數(shù)查找字符的位置:char*strchr(char*str,charch);查找字符串的位置:char*strstr(char*str1,charstr2);指針可以簡(jiǎn)單的認(rèn)為“指針”就是地址,地址就是指針。一個(gè)變量的地址只能使用&符號(hào)獲得。
指針變量:在C語(yǔ)言中指針被用來(lái)標(biāo)識(shí)號(hào)內(nèi)存單元的地址,如果把這個(gè)地址用一個(gè)變量來(lái)保存,則這中噢噢那個(gè)變量就成為指指針變量。如指針變量pi只想變量i,那么pi就表示變量i的地址,*pi就表示變量i的值,pi=&i。
i=3與*pi=3等價(jià)指針變量的使用:先定義,后使用。定義的一般形式:數(shù)據(jù)類型*指針變量名;指針變量與普通變量建立聯(lián)系的方法(為指針賦值):指針變量名=&普通變量名;說(shuō)明:(1)由于數(shù)組名就是該數(shù)組的首地址,所以指針變量與數(shù)組建。
1,C語(yǔ)言的運(yùn)算符和優(yōu)先級(jí)
2,分支結(jié)構(gòu)程序設(shè)計(jì)
3,循環(huán)結(jié)構(gòu)程序
4,數(shù)組
5,函數(shù)
6,指針
7,字符類型和字符串
8,字符串與指針
9,指針數(shù)組、二級(jí)指針、指向一維數(shù)組的指針、指向函數(shù)的指針
10,返回指針的函數(shù)、數(shù)組名做函數(shù)參數(shù)
11,結(jié)構(gòu)體、共用體、枚舉、自定義類型、變量存儲(chǔ)類別、工程文件
12,文件、宏、主函數(shù)帶形參
13,鏈表、位運(yùn)算、考試環(huán)境
14,排序、強(qiáng)制類型轉(zhuǎn)換
最低0.27元/天開通百度文庫(kù)會(huì)員,可在文庫(kù)查看完整內(nèi)容>
原發(fā)布者:ofhyeiu2
C語(yǔ)言最重要的知識(shí)點(diǎn)總體上必須清楚的:1)程序結(jié)構(gòu)是三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。2)讀程序都要從main()入口,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇),有且只有一個(gè)main函數(shù)。3)計(jì)算機(jī)的數(shù)據(jù)在電腦中保存是以二進(jìn)制的形式.數(shù)據(jù)存放的位置就是他的地址.4)bit是位是指為0或者1。byte是指字節(jié),一個(gè)字節(jié)=八個(gè)位.概念??嫉降模?、編譯預(yù)處理不是C語(yǔ)言的一部分,不占運(yùn)行時(shí)間,不要加分號(hào)。C語(yǔ)言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。誤的,一定不能出現(xiàn)分號(hào)。3、每個(gè)C語(yǔ)言程序中main函數(shù)是有且只有一個(gè)。4、在函數(shù)中不可以再定義函數(shù)。5、算法:可以沒(méi)有輸入,但是一定要有輸出。第一章C語(yǔ)言的基礎(chǔ)知識(shí)第一節(jié)、對(duì)C語(yǔ)言的基礎(chǔ)認(rèn)識(shí)1、C語(yǔ)言編寫的程序稱為源程序,又稱為編譯單位。2、C語(yǔ)言書寫格式是自由的,每行可以寫多個(gè)語(yǔ)句,可以寫多行。3、一個(gè)C語(yǔ)言程序有且只有一個(gè)main函數(shù),是程序運(yùn)行的起點(diǎn)。第二節(jié)、2、每個(gè)C語(yǔ)言程序?qū)懲旰?,都是先編譯,后鏈接,最后運(yùn)行。(.c---(.obj---(.exe)這個(gè)過(guò)程中注意.c和.obj文件時(shí)無(wú)法運(yùn)行的,只有.exe文件才可以運(yùn)行。(??迹。ǔ绦蚓庉?程序編譯-程序連接-程序運(yùn)行)第三節(jié)、標(biāo)識(shí)符1、標(biāo)識(shí)符(必考內(nèi)容):合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯(cuò)了。并且第一個(gè)必須為字母或則是下劃線。第一個(gè)為數(shù)字就錯(cuò)了預(yù)定義標(biāo)識(shí)符:背誦
1.C提供了三種主要的預(yù)處理功能,分別是__宏定義_______、___文件包含______、____條件編譯____。
2.C語(yǔ)言中,數(shù)組元素下標(biāo)下限為___0_____。
3.數(shù)組名作函數(shù)參數(shù)傳遞時(shí)是__數(shù)組首地址______傳遞。變量作函數(shù)參數(shù)時(shí)是_值_______傳遞,
4.一個(gè)編輯好的*.C源程序,必須經(jīng)過(guò)編譯、_連接_______、后才能運(yùn)行。
5.在C語(yǔ)言中可以用__逐個(gè)引用______法和________法引用數(shù)組元素。
6.C語(yǔ)言的程序結(jié)構(gòu)有_順序___、_選擇___、循環(huán)____三種。
7.在C中,Char類型變量值可以賦值給___int_____類型變量。
8.使指針P指向數(shù)組int a[ ]的首址,寫作 __p=a______ ,*(P+1)是a[ _1__ ]的值
9.所謂指針是指_______;指針變量是用于存放_(tái)__變量地址___的變量;字符串的指針是指__字符串的首地址________ ;函數(shù)的指針是指__函數(shù)首地址____________。
10.在函數(shù)調(diào)用中,一個(gè)函數(shù)無(wú)論直接還是間接地調(diào)用自身,該調(diào)用稱為__遞歸_____調(diào)用。
/%C3%EE%D2%F4%C4%F1/blogc語(yǔ)言 C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。
它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。
因此,它的應(yīng)用范圍廣泛。 C語(yǔ)言對(duì)操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語(yǔ)言明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用C語(yǔ)言編寫的。
C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫。它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。
常用的C語(yǔ)言IDE(集成開發(fā)環(huán)境)有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,TurboC等等。
C語(yǔ)言的發(fā)展歷史 C語(yǔ)言的原型ALGOL 60語(yǔ)言。(也稱為A語(yǔ)言) 1963年,劍橋大學(xué)將ALGOL 60語(yǔ)言發(fā)展成為CPL(Combined Programming Language)語(yǔ)言。
1967年,劍橋大學(xué)的Matin Richards 對(duì)CPL語(yǔ)言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了BCPL語(yǔ)言。 1970年,美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson將BCPL進(jìn)行了修改,并為它起了一個(gè)有趣的名字“B語(yǔ)言”。
意思是將CPL語(yǔ)言煮干,提煉出它的精華。并且他用B語(yǔ)言寫了第一個(gè)UNIX操作系統(tǒng)。
而在1973年,B語(yǔ)言也給人“煮”了一下,美國(guó)貝爾實(shí)驗(yàn)室的D.M.RITCHIE在B語(yǔ)言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語(yǔ)言,他取了BCPL的第二個(gè)字母作為這種語(yǔ)言的名字,這就是C語(yǔ)言。 為了使UNIX操作系統(tǒng)推廣,1977年Dennis M.Ritchie 發(fā)表了不依賴于具體機(jī)器系統(tǒng)的C語(yǔ)言編譯文本《可移植的C語(yǔ)言編譯程序》。
1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《C語(yǔ)言程序》(The C Programming Language),從而使C語(yǔ)言成為當(dāng)時(shí)世界上流行最廣泛的高級(jí)程序設(shè)計(jì)語(yǔ)言。 1988年,隨著微型計(jì)算機(jī)的日益普及, C語(yǔ)言出現(xiàn)了許多版本。
由于沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),使得這些C語(yǔ)言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國(guó)國(guó)家標(biāo)準(zhǔn)研究所(ANSI)為C語(yǔ)言制定了一套ANSI標(biāo)準(zhǔn), 成為現(xiàn)行的C語(yǔ)言標(biāo)準(zhǔn)3.C語(yǔ)言的主要特點(diǎn) 。
C語(yǔ)言發(fā)展迅速, 而且成為最受歡迎的語(yǔ)言之一, 主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語(yǔ)言編寫的。
用C語(yǔ)言加上一些匯編語(yǔ)言子程序, 就更能顯示C語(yǔ)言的優(yōu)勢(shì)了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。 C語(yǔ)言版本 目前最流行的C語(yǔ)言有以下幾種: ·Microsoft C 或稱 MS C ·Borland Turbo C 或稱 Turbo C ·AT&T C 這些C語(yǔ)言版本不僅實(shí)現(xiàn)了ANSI C標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴(kuò)充。
C語(yǔ)言的優(yōu)點(diǎn) 1. 簡(jiǎn)潔緊湊、靈活方便 C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫自由,主要用小寫字母表示。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。
C 語(yǔ)言可以象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。 2. 運(yùn)算符豐富 C的運(yùn)算符包含的范圍很廣泛,共有種34個(gè)運(yùn)算符。
C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。
3. 數(shù)據(jù)結(jié)構(gòu)豐富 C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。
并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能, 支持多種顯示器和驅(qū)動(dòng)器。
且計(jì)算功能、邏輯判斷功能強(qiáng)大。 4. C是結(jié)構(gòu)式語(yǔ)言 結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。
這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?便于使用、維護(hù)以及調(diào)試。C語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。
5. C語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大 雖然C語(yǔ)言也是強(qiáng)類型語(yǔ)言,但它的語(yǔ)法比較靈活,允許程序編寫者有較大的自由度。 6. C語(yǔ)言允許直接訪問(wèn)物理地址,可以直接對(duì)硬件進(jìn)行操作 因此既具有高級(jí)語(yǔ)言的功能,又具有低級(jí)語(yǔ)言的許多功能,能夠象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來(lái)寫系統(tǒng)軟件。
7. C語(yǔ)言程序生成代碼質(zhì)量高,程序執(zhí)行效率高 一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。 8. C語(yǔ)言適用范圍大,可移植性好 C語(yǔ)言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng), 如DOS、UNIX,也適用于多種機(jī)型。
C語(yǔ)言的缺點(diǎn) 1. C語(yǔ)言的缺點(diǎn)主要是表現(xiàn)在數(shù)據(jù)的封裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上做的有很大缺陷,這也是C和C++的一大區(qū)別。 2. C語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。
從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌握。 [C語(yǔ)言指針] 指針就是C語(yǔ)言的一。
(這是別人回答我的問(wèn)題,感覺(jué)很有幫助你可以了解了解)如何學(xué)好c語(yǔ)言 教了多年《C程序設(shè)計(jì)》課程,大多學(xué)生覺(jué)的這門課程難學(xué)。
其實(shí),按照我們現(xiàn)在的教學(xué)大綱和教學(xué)要求,只要同學(xué)們掌握一些方法,克服心理上畏難、不輕言放棄,是完全可以學(xué)好的。 《C程序設(shè)計(jì)》的內(nèi)容很豐富,按照我們現(xiàn)在的教學(xué)大綱,教學(xué)的主要內(nèi)容是基礎(chǔ)知識(shí)、四種結(jié)構(gòu)的的程序設(shè)計(jì)、函數(shù)與數(shù)組的應(yīng)用和一些簡(jiǎn)單的算法。
在學(xué)習(xí)時(shí),同學(xué)們應(yīng)該把主要精力放在這些部分,通過(guò)實(shí)踐(練習(xí)和上機(jī)調(diào)試等熟練掌握。當(dāng)然,在初學(xué)C語(yǔ)言時(shí),可能會(huì)遇到有些問(wèn)題理解不透,或者表達(dá)方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運(yùn)算符等),這就要求不氣餒,不明白的地方多問(wèn)多想,鼓足勇氣進(jìn)行學(xué)習(xí),待學(xué)完后面的章節(jié)知識(shí),前面的問(wèn)題也就迎刃而解了,這一方面我感覺(jué)是我們同學(xué)最欠缺,大多學(xué)不好的就是因?yàn)橐婚_始遇到困難就放棄,曾經(jīng)和好多同學(xué)談他的問(wèn)題,回答是聽不懂、不想聽、放棄這樣三個(gè)過(guò)程,我反問(wèn),這節(jié)課你聽過(guò)課嗎?回答又是沒(méi)有,根本就沒(méi)聽過(guò)課,怎么說(shuō)自己聽不懂呢?相應(yīng)的根本就沒(méi)學(xué)習(xí),又談何學(xué)的好? 學(xué)習(xí)C語(yǔ)言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學(xué)習(xí)知識(shí)的重要方法,就是說(shuō),學(xué)習(xí)后面的知識(shí),不要忘了回頭弄清遺留下的問(wèn)題和加深理解前面的知識(shí),這是我們學(xué)生最不易做到的,然而卻又是最重要的。
比如:在C語(yǔ)言中最典型的是關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)思,不管是那種教材,一開始就強(qiáng)調(diào)這種方法,這時(shí)也許你不能充分體會(huì),但是學(xué)到函數(shù)時(shí),再回頭來(lái)仔細(xì)體會(huì),溫故知新,理解它就沒(méi)有那么難了。學(xué)習(xí)C語(yǔ)言就是要經(jīng)過(guò)幾個(gè)反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識(shí)。
那么,我們?nèi)绾螌W(xué)好《C程序設(shè)計(jì)》呢? 一.學(xué)好C語(yǔ)言的運(yùn)算符和運(yùn)算順序 這是學(xué)好《C程序設(shè)計(jì)》的基礎(chǔ),C語(yǔ)言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計(jì)語(yǔ)言。在表達(dá)式方面較其它程序語(yǔ)言更為簡(jiǎn)潔,如自加、自減、逗號(hào)運(yùn)算和三目運(yùn)算使表達(dá)式更為簡(jiǎn)單,但初學(xué)者往往會(huì)覺(jué)的這種表達(dá)式難讀,關(guān)鍵原因就是對(duì)運(yùn)算符和運(yùn)算順序理解不透不全。
當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。在學(xué)習(xí)中,只要我們對(duì)此合理進(jìn)行分類,找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來(lái)用起來(lái)得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。
先要明確運(yùn)算符按優(yōu)先級(jí)不同分類,《C程序設(shè)計(jì)》運(yùn)算符可分為15種優(yōu)先級(jí),從高到低,優(yōu)先級(jí)為1 ~ 15,除第2、3級(jí)和第14級(jí)為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級(jí)運(yùn)算符的運(yùn)算順序。下面我們通過(guò)幾個(gè)例子來(lái)說(shuō)明: (1) 5*8/4%10 這個(gè)表達(dá)式中出現(xiàn)3種運(yùn)算符,是同級(jí)運(yùn)算符,運(yùn)算順序按從左至右結(jié)合,因此先計(jì)算5 *8=40,然后被4除,結(jié)果為10,最后是%(求余數(shù))運(yùn)算,所以表達(dá)式的最終結(jié)果為10%10 = 0; (2)a = 3;b = 5;c =++ a* b ;d =a + +* b; 對(duì)于c=++a*b來(lái)說(shuō),按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運(yùn)算,所以a的值4參與運(yùn)算,C的值計(jì)算式為4*5=20而不是3*5=15了;而對(duì)于d=a++*b來(lái)說(shuō),由于a + +為后置運(yùn)算,所以a值為4參與運(yùn)算,使得d的值仍為20,而a參與運(yùn)算后其值加1,值為5。
這個(gè)例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20; (3)(a = 3,b = 5,b+ = a,c = b* 5) 例子中的“,”是逗號(hào)結(jié)合運(yùn)算,上式稱為逗號(hào)表達(dá)式,自左向右結(jié)合,最后一個(gè)表達(dá)式的結(jié)果值就是逗號(hào)表達(dá)式的結(jié)果,所以上面的逗號(hào)表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。 (4)a=5;b=6;c=a>b?a:b; 例中的a>b?a:b是一個(gè)三目運(yùn)算,它的功能是先做關(guān)系運(yùn)算a>b部分,若結(jié)果為真,則取問(wèn)號(hào)后a的值,否則取冒號(hào)后b的值,因此c的值應(yīng)該為6,這個(gè)運(yùn)算可以用來(lái)代替if…else…語(yǔ)句的簡(jiǎn)單應(yīng)用。
二.學(xué)好C語(yǔ)言的四種程序結(jié)構(gòu) (1)順序結(jié)構(gòu) 順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問(wèn)題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。 例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個(gè)問(wèn)題就好象交換兩個(gè)杯子水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序?yàn)椋?c = a; a = b; b = c; 執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯(cuò)誤。
順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑r,計(jì)算s = 3.14159*r*r,輸出圓的面積s。不過(guò)大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語(yǔ)句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
(2) 分支結(jié)構(gòu) 順序結(jié)構(gòu)的程序雖然能解決計(jì)算、輸出等問(wèn)題,但不能做判斷再選擇。對(duì)于要先做判斷再選擇的問(wèn)題就要使用分支結(jié)構(gòu)。
分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁(yè)面生成時(shí)間:4.103秒