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