




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、怎樣學習c語言 很多人對學習c語言感到無從下手,經常問我同一個問題:究竟怎樣學習c語言?我是一個教師,已經開發了很多年的程序,和很多剛剛起步的人一樣,學習的第一個計算機語言就是c語言。經過這些年的開發,我深深的體會到c語言對于一個程序設計人員多么的重要,如果不懂c語言,你想寫底層程序這幾乎聽起來很可笑,不懂c語言,你想寫出優秀高效的程序,這簡直就是天方夜譚。為什么c語言如此重要呢? 第一:c語言語法結構很簡潔精妙,寫出的程序也很高效,很便于描述算法,大多數的程序員愿意使用c語言去描述算法本身,所以,如果你想在程序設計方面有所建樹,就必須去學它。 第二:c語言能夠讓你深入系統底層,你知道的操作系
2、統,哪一個不是c語言寫的?所有的windows,unix,linux,mac,os/2,沒有一個里外的,如果你不懂c語言,怎么可能深入到這些操作系統當中去呢?更不要說你去寫它們的內核程序了。 第三:很多新型的語言都是衍生自c語言,c+,java,c#,j#,perl.哪個不是呢?掌握了c語言,可以說你就掌握了很多門語言,經過簡單的學習,你就可以用這些新型的語言去開發了,這個再一次驗證了c語言是程序設計的重要基礎。還有啊,多說一點:即使現在招聘程序員,考試都是考c語言,你想加入it行業,那么就一定要掌握好c語言。那么究竟怎樣學習c語言呢?1:工欲善其事,必先利其器這里介紹幾個學習c語言必備的東東
3、: 一個開發環境,例如turbo?c?2.0,這個曾經占據了dos時代開發程序的大半個江山。但是現在windows時代,用turbo?c有感覺不方面,編輯程序起來很吃力,并且拖放,更沒有函數變量自動感應功能,查詢參考資料也不方便。建議使用visual c+,這個東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。 一本學習教程,現在c語言教材多如牛毛,但推薦大家使用c語言程序設計譚浩強主編 第二版 清華大學出版社,此書編寫的很適合初學者,并且內容也很精到。 除此以外,現在有很多輔助學習的軟件,畢竟現在是window時代了,學習軟件多如牛毛,不象我們當初學習,只有讀書做題這么老套。我向大家推薦一
4、個“集成學習環境(c語言)”,里邊的知識點總結和例程講解都非常好,還有題庫測試環境,據說有好幾千題,甚至還有一個windows下的trubo?c,初學者甚至不用裝其它的編譯器,就可以練習編程了,非常適合初學者。還有一個“c語言學習系統”軟件,不過感覺只是一個題庫系統,如果你覺得題做的不夠,不妨也可以試試。2:葵花寶典 學習計算機語言最好的方法是什么?答曰:讀程序。 沒錯,讀程序是學習c語言入門最快,也是最好的方法。如同我,現在學習新的j#,c#等其他語言,不再是抱著書本逐行啃,而是學習它們的例程。當然,對于沒有學過任何計算機語言的初學者,最好還是先閱讀教程,學習完每一章,都要認真體會這一章的所
5、有概念,然后不放過這一章中提到的所有例程,然后仔細研讀程序,直到每一行都理解了,然后找幾個編程題目,最好是和例程類似的或一樣的,自己試圖寫出這段已經讀懂的程序,不要以為例程你已經讀懂了,你就可以寫出和它一樣的程序,絕對不一定,不相信你就試一試吧,如果寫不出來,也不要著急,回過頭來再繼續研究例程,想想自己為什么寫不出來,然后再去寫這段程序,反反復復,直到你手到擒來為止,祝賀你,你快入門了。3:登峰造極 寫程序的最高境界其實就是掌握各種解決問題的手段(數據結構)和解決問題的方法(算法)。? 是不是寫出底層程序就是程序設計高手呢?非也,寫底層程序,無非是掌握了硬件的結構,況且硬件和硬件還不一樣,要給
6、一個芯片寫驅動程序,無非就是掌握這塊芯片的各種寄存器及其組合,然后寫值讀值,僅此而已。這不過是熟悉一些io函數罷了。 那么怎樣才算精通程序設計呢?怎樣才能精通程序設計呢?舉個例子:你面前有10個人,找出一個叫“張三”的人,你該怎么辦?第一種方法:直接對這10個人問:“誰叫張三”。第2種方法:你挨個去問“你是不是張三?”,直到問到的這個人就是張三。第三種方法:你去挨個問一個人“你認不認識張三,指給我看”。不要小看這個問題,你說當然會選第一種方法,沒錯恭喜你答對了,因為這個方法最快,效率最高,但是在程序設計中找到解決問題的最優方法和你用的手段卻是考驗一個程序員程序設計水平的重要標志,而且是不容易達
7、到的。剛才這個問題類似于數據結構和算法中的:map數據結構,窮舉查找和折半查找。所以掌握好數據結構和一些常用算法,是登峰造極的必然之路。 c語言學習要領 c語言學習要領1、計算機語言挺枯燥的,如何提起興趣 答:首先要明確學習的目標,沒有明確的學習目標就沒有學習動力。給自己定一個目標,比如這次一定通過計算機等級考試,或者這個月學習完做個東西出來等等。其次,確定了目標之后,要認真去做,多上機操作實踐,遇到不懂的要多跟教師和其他學員交流,千萬不能放棄。當自己編的一段小程序運行通過,或攻下一道難題,自己就會獲得一種成就感,可能還會很興奮,也就漸漸有了興趣。最后,要把所學的知識運用到實際問題當中,這樣既
8、可以鞏固所學的知識,不至于完學了就忘,還可以根據實際需要拓展知識面。這樣良性循環,興趣也會越來越濃。 2、有學員來信問到:我的電腦里安裝的turbo?c(970k)不能正常的編譯,現象是:在編譯過程中,提示沒有錯誤也沒有警告,按任意鍵返回,可是在電腦上不能生成obj文件,有時提示:unable to open input filecos.obj,我的朋友從他們學校的pc上拷貝回來的程序也出現這個問題?!在他們學校卻很正常,這是怎么回事?這個問題一直在困擾我,使我的學習不能進行下去!請幫我解決。謝謝!答:這需要重新設置options-directories中的include目錄和lib目錄,設為
9、你c的安裝目錄就可以了。記住要保存喲!3、#includemain()int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf(%fn,x);這個程序的結果是27.000000為什么我一直算的是28.000000呢?請指教 答:main() int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf(%fn,x);m/2=3;因為m是整形所以結果為整形不是3.5而是3同樣1/2不是0.5而是0。要改的話,x=(float)m/2+n*a/b+1.0/2.0; 結果為28.00004、有些人
10、說我的程序很難讓人看懂,請問如何將程序寫得規范、簡潔明了答:這是編程中重要的一點,要養成良好的編程習慣。請看一個例題:程序很簡單,是用turbo c編一個時鐘程序。具體如下:/* module:clock.cjust a test of my programming ability */#includemath.h#includedos.h#includestdio.h#includegraphics.hmain()char s30;int gdriver,gmode;int cosh,sinh,cosm,sinm,coss,sins;struct ;time t;char keydown=0
11、;int x=300,y=160,r=40;clrscr();gdriver=9; gmode=1;initgraph(&gdriver,&gmode,a:);/*需要說明的是,第三個參數a:是egavga.bgi這個文件的路徑*/* install the graphic device.the third parameter is the path of the driver*/setbkcolor(0);setcolor(white);while(1)circle(x,y,r);/*paintthecircle*/line(x,y+r-10,x,y+r-12);line(x+r-4,y,x
12、+r,y);line(x-r,y,x-r+4,y);line(x,y-r+10,x,y-r+10+2); /* draw the fout scales */gettime(&t);sprintf(s,the current time is %2d:%02d:%02dn,t.ti_hour,t.ti_min,t.ti_sec,t);outtextxy(0,0,s); /* out put the current time */outtextxy(0,10,this clock is written by lijun); /*?show the auther */coss=(int)(r-10)
13、*cos(t.ti_sec*3.14f/30-3.14f/2)+x);sins=(int)(r-10)*sin(t.ti_sec*3.14f/30-3.14f/2)+y);cosm=(int)(r-19)*cos(t.ti_min*3.14f/30-3.14f/2)+x);sinm=(int)(r-19)*sin(t.ti_min*3.14f/30-3.14f/2)+y);cosh=(int)(r-28)*cos(t.ti_hour+(float)(t.ti_min)/60)*3.14f/6-3.14f/2)+x);sinh=(int)(r-28)*sin(t.ti_hour+(float)(
14、t.ti_min)/60)*3.14f/6-3.14f/2)+y);/* calculate the position of the three points */setcolor(14);line(x,y,coss,sins);setcolor(13);line(x,y,cosm,sinm);setcolor(10);line(x,y,cosh,sinh);setcolor(15);/* draw the points */sleep(1);clrscr(); keydown=kbhit();/* check whether key down */if(keydown)close
15、graph();/* close graphic device */exit(0); 第一章c語言概論 第一章c語言概論語言的發展過程語言是在70年代初問世的。一九七八年由美國電話電報公司(at&t)貝爾實驗室正式發表了語言。同時由b.w.kernighan和d.m.ritchit合著了著名的“the c programming language”一書。通常簡稱為k&r,也有人稱之為k&r標準。但是,在k&r中并沒有定義一個完整的標準c語言,后來由美國國家標準學會在此基礎上制定了一個c 語言標準,于一九八三年發表。通常稱之為ansi c。當代最優秀的程序設計語 早期的c語言主要是用于unix系
16、統。由于語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,c開始進入其它操作系統,并很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。語言的特點 語言是一種結構化語言。它層次清晰,便于按模塊化方式組織程序,易于調試和維護。語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便于實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由于語言實現了對硬件的編程操作,因此語言集高級語言和低級語言的功能于一體。既可用于系統軟件的開發,也適合于應用軟件的開發。此外,語言還具有效率高,可移植性強等特點。因此廣泛地移植到了
17、各類各型計算機上,從而形成了多種版本的語言。語言版本 目前最流行的語言有以下幾種: microsoft c 或稱 ms c borland turbo c 或稱 turbo c at&t c 這些語言版本不僅實現了ansi c標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。面向對象的程序設計語言 在c的基礎上,一九八三年又由貝爾實驗室的bjarne strou-strup推出了c+。 c+進一步擴充和完善了語言,成為一種面向 對象的程序設計語言。c+目前流行的最新版本是borland c+4.5,symantec c+6.1,和microsoft visualc+ 2.0。c+提出了
18、一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。和但是,c是c+的基礎,c+語言和語言在很多方面是兼容的。因此,掌握了語言,再進一步學習c+就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。源程序的結構特點為了說明語言源程序結構的特點,先看以下幾個程序。這幾個程 序由簡到難,表現了語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個c源程序的基本部分和書寫格式。main()printf(c語言世界www
19、.,您好!n); main是主函數的函數名,表示這是一個主函數。每一個c源程序都必須有,且只能有一個主函數(main函數)。函數調用語句,printf函數的功能是把要輸出的內容送到顯示器去顯示。printf函數是一個由系統定義的標準函數,可在程序中直接調用。#include#includemain()double x,s;printf(input number:n);scanf(%lf,&x);s=sin(x);printf(sine of %lf is %lfn,x,s);每行注釋include稱為文件包含命令擴展名為.h的文件也稱為頭文件或首部文件定義兩個實數變量,以被后面
20、程序使用顯示提示信息從鍵盤獲得一個實數x求x的正弦,并把它賦給變量s顯示程序運算結果main函數結束 程序的功能是從鍵盤輸入一個數x,求x的正弦值,然后輸出結果。在main()之前的兩行稱為預處理命令(詳見后面)。預處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括號或引號內指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統提供的,其擴展名為.h。因此也稱為頭文件或首部文件。語言的頭文件中包括了各個標準庫函數的函數原型。因此,凡是在程序中調用一個庫函數時,都必須包含該函數原型所在的頭文件。在本例中,使用了三個庫函數:輸入函數scanf,正弦函數si
21、n,輸出函數printf。sin函數是數學函數,其頭文件為math.h文件,因此在程序的主函數前用include命令包含了math.h。scanf和printf是標準輸入輸出函數,其頭文件為stdio.h,在主函數前也用include命令包含了stdio.h文件。需要說明的是,c語言規定對scanf和printf這兩個函數可以省去對其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#include。同樣,在例1.1中使用了printf函數,也省略了包含命令。在例題中的主函數體中又分為兩部分,一部分為說明部分,另一部分執行部分。說明是指變量的類型說明。例題中未使用任何變量,因此無說明部分
22、。語言規定,源程序中所有用到的變量都必須先說明,后使用,否則將會出錯。這一點是編譯型高級程序設計語言的一個特點,與解釋型的basic語言是不同的。說明部分是c源程序結構中很重要的組成部分。本例中使用了兩個變量x,s,用來表示輸入的自變量和sin函數值。由于sin函數要求這兩個量必須是雙精度浮點型,故用類型說明符double來說明這兩個變量。說明部分后的四行為執行部分或稱為執行語句部分,用以完成程序的功能。執行部分的第一行是輸出語句,調用printf函數在顯示器上輸出提示字符串,請操作人員輸入自變量x的值。第二行為輸入語句,調用scanf函數,接受鍵盤上輸入的數并存入變量x中。第三行是調用sin
23、函數并把函數值送到變量s中。第四行是用printf 函數輸出變量s的值,即x的正弦值。程序結束。printf(input number:n);scanf(%lf,c10f10&x);s=sin(x);printf(sine of %lf is %lfn,c10f10x,s); 運行本程序時,首先在顯示器屏幕上給出提示串input number,這是由執行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數,如5,按下回車鍵,接著在屏幕上給出計算結果。輸入和輸出函數在前兩個例子中用到了輸入和輸出函數scanf和 printf,在第三章中我們要詳細介紹。這里我們先簡單介紹一下它們的格式,以便下面使用
24、。scanf和 printf這兩個函數分別稱為格式輸入函數和格式輸出函數。其意義是按指定的格式輸入輸出值。因此,這兩個函數在括號中的參數表都由以下兩部分組成:“格式控制串”,參數表 格式控制串是一個字符串,必須用雙引號括起來,它表示了輸入輸出量的數據類型。各種類型的格式表示法可參閱第三章。在printf函數中還可以在格式控制串內出現非格式控制字符,這時在顯示屏幕上將原文照印。參數表中給出了輸入或輸出的量。當有多個量時,用逗號間隔。例如:printf(sine of %lf is %lfn,x,s); 其中%lf為格式字符,表示按雙精度浮點數處理。它在格式串中兩次現,對應了x和s兩個變量。其余字
25、符為非格式字符則照原樣輸出在屏幕上int max(int a,int b);main()int x,y,z;printf(input two numbers:n);scanf(%d%d,&x,&y);z=max(x,y);printf(maxmum=%d,z);int max(int a,int b)if(ab)return a;else return b;此函數的功能是輸入兩個整數,輸出其中的大數。/*函數說明*/*主函數*/*變量說明*/*輸入x,y值*/*調用max函數*/*輸出*/*定義max函數*/*把結果返回主調函數*/ 上面例中程序的功能是由用戶輸入兩個整數,程序執行后輸出其中較
26、大的數。本程序由兩個函數組成,主函數和max 函數。函數之間是并列關系??蓮闹骱瘮抵姓{用其它函數。max 函數的功能是比較兩個數,然后把較大的數返回給主函數。max 函數是一個用戶自定義函數。因此在主函數中要給出說明(程序第三行)。可見,在程序的說明部分中,不僅可以有變量說明,還可以有函數說明。關于函數的詳細內容將在第五章介紹。在程序的每行后用/*和*/括起來的內容為注釋部分,程序不執行注釋部分。上例中程序的執行過程是,首先在屏幕上顯示提示串,請用戶輸入兩個數,回車后由scanf函數語句接收這兩個數送入變量x,y中,然后調用max函數,并把x,y 的值傳送給max函數的參數a,b。在max函數
27、中比較a,b的大小,把大者返回給主函數的變量z,最后在屏幕上輸出z的值。源程序的結構特點1.一個語言源程序可以由一個或多個源文件組成。2.每個源文件可由一個或多個函數組成。3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。4.源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括號“”之后不能加分號。6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。書寫程序時應遵循的規則從書寫清晰,便于閱讀,理解,維
28、護的角度出發,在書寫程序時 應遵循以下規則:1.一個說明或一個語句占一行。2.用 括起來的部分,通常表示了程序的某一層次結構。一般與該結構語句的第一個字母對齊,并單獨占一行。3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。語言的字符集字符是組成語言的最基本的元素。語言字符集由字母,數字,空格,標點和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。1.字母小寫字母az共26個,大寫字母az共26個2.數字09共10個3.空白符空格符、制表符、換行符等統稱為空
29、白符。空白符只在字符常量和字符串常量中起作用。在其它地方出現時,只起間隔作用, 編譯程序對它們忽略。因此在程序中使用空白符與否,對程序的編譯不發生影響,但在程序中適當的地方使用空白符將增加程序的清晰性和可讀性。4.標點和特殊字符語言詞匯在語言中使用的詞匯分為六類:標識符,關鍵字,運算符,分隔符,常量,注釋符等。1.標識符在程序中使用的變量名、函數名、標號等統稱為標識符。除庫函數的函數名由系統定義外,其余都由用戶自定義。c 規定,標識符只能是字母(az,az)、數字(09)、下劃線()組成的字符串,并且其第一個字符必須是字母或下劃線。以下標識符是合法的:a,x, 3x,book 1,sum5以下
30、標識符是非法的:3s 以數字開頭s*t 出現非法字符*-3x 以減號開頭bowy-1 出現非法字符-(減號) 在使用標識符時還必須注意以下幾點:(1)標準c不限制標識符的長度,但它受各種版本的c 語言編譯系統限制,同時也受到具體機器的限制。例如在某版本c 中規定標識符前八位有效,當兩個標識符前八位相同時,則被認為是同一個標識符。(2)在標識符中,大小寫是有區別的。例如book和book 是兩個不同的標識符。(3)標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號。因此,命名應盡量有相應的意義,以便閱讀理解,作到“顧名思義”。2.關鍵字關鍵字是由語言規定的具有特定意義的字符串,通常也稱
31、為保留字。用戶定義的標識符不應與關鍵字相同。語言的關鍵字分為以下幾類:(1)類型說明符用于定義、說明變量、函數或其它數據結構的類型。如前面例題中用到的int,double等(2)語句定義符用于表示一個語句的功能。如例1.3中用到的if else就是條件語句的語句定義符。(3)預處理命令字用于表示一個預處理命令。如前面各例中用到的include。3.運算符語言中含有相當豐富的運算符。運算符與變量,函數一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成。4.分隔符在語言中采用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數參數表中,分隔各個變量??崭穸嘤糜谡Z句各單詞之間,作間隔符。在
32、關鍵字,標識符之間必須要有一個以上的空格符作間隔, 否則將會出現語法錯誤,例如把int a;寫成 inta;c編譯器會把inta當成一個標識符處理,其結果必然出錯。5.常量c 語言中使用的常量可分為數字常量、字符常量、字符串常量、符號常量、轉義字符等多種。在第二章中將專門給予介紹。 6.注釋符c 語言的注釋符是以“/*”開頭并以“*/”結尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調試結束后再去掉注釋符。 第二章c語言的數據類型
33、 第二章c語言的數據類型在第一課中,我們已經看到程序中使用的各種變量都應預先加以說明,即先說明,后使用。對變量的說明可以包括三個方面:數據類型存儲類型作用域 在本課中,我們只介紹數據類型說明。其它說明在以后各章中陸續介紹。所謂數據類型是按被說明量的性質,表示形式,占據存儲空間的多少,構造特點來劃分的。在語言中,數據類型可分為:基本數據類型,構造數據類型,指針類型,空類型四大類。1.基本數據類型基本數據類型最主要的特點是,其值不可以再分解為其它類型。也就是說,基本數據類型是自我說明的。2.構造數據類型構造數據類型是根據已定義的一個或多個數據類型用構造的方法來定義的。也就是說,一個構造類型的值可以
34、分解成若干個“成員”或“元素”。每個“成員”都是一個基本數據類型或又是一個構造類型。在c語言中,構造類型有以下幾種:數組類型結構類型聯合類型3.指針類型指針是一種特殊的,同時又是具有重要作用的數據類型。其值用來表示某個量在內存儲器中的地址。雖然指針變量的取值類似于整型量,但這是兩個類型完全不同的量,因此不能混為一談。4.空類型在調用函數值時,通常應向調用者返回一個函數值。這個返回的函數值是具有一定的數據類型的,應在函數定義及函數說明中給以說明,例如在例題中給出的max函數定義中,函數頭為: int max(int a,int b);其中“int ”類型說明符即表示該函數的返回值為整型量。又如在
35、例題中,使用了庫函數 sin,由于系統規定其函數返回值為雙精度浮點型,因此在賦值語句s=sin (x);中,s 也必須是雙精度浮點型,以便與sin函數的返回值一致。所以在說明部分,把s說明為雙精度浮點型。但是,也有一類函數,調用后并不需要向調用者返回函數值, 這種函數可以定義為“空類型”。其類型說明符為void。在第五章函數中還要詳細介紹。在本章中,我們先介紹基本數據類型中的整型、浮點型和字符型。其余類型在以后各章中陸續介紹。對于基本數據類型量,按其取值是否可改變又分為常量和變量兩種。在程序執行過程中,其值不發生改變的量稱為常量,取值可變的量稱為變量。它們可與數據類型結合起來分類。例如,可分為
36、整型常量、整型變量、浮點常量、浮點變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經說明而直接引用的,而變量則必須先說明后使用。整型量整型量包括整型常量、整型變量。整型常量就是整常數。在語言中,使用的整常數有八進制、十六進制和十進制三種。整型常量1.八進制整常數八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為07。八進制數通常是無符號數。以下各數是合法的八進制數:015(十進制為13)0101(十進制為65)0177777(十進制為65535)以下各數不是合法的八進制數:256(無前綴0) 03a2(包含了非八進制數碼)-0127(出現了負號)2.十六進制整常
37、數十六進制整常數的前綴為0x或0x。其數碼取值為09,af或af。以下各數是合法的十六進制整常數:0x2a(十進制為42)0xa0 (十進制為160)0xffff (十進制為65535)以下各數不是合法的十六進制整常數:5a (無前綴0x)0x3h (含有非十六進制數碼)3.十進制整常數十進制整常數沒有前綴。其數碼為09。以下各數是合法的十進制整常數:237 -568 65535 1627以下各數不是合法的十進制整常數:023 (不能有前導0)23d (含有非十進制數碼)在程序中是根據前綴來區分各種進制數的。因此在書寫常數時不要把前綴弄錯造成結果不正確。4.整型常數的后綴在16位字長的機器上,
38、基本整型的長度也為16位,因此表示的數的范圍也是有限定的。十進制無符號整常數的范圍為065535,有符號數為-32768+32767。八進制無符號數的表示范圍為00177777。十六進制無符號數的表示范圍為0x00xffff或0x00xffff。如果使用的數超過了上述范圍,就必須用長整型數來表示。長整型數是用后綴“l”或“l”來表示的。例如:十進制長整常數 158l (十進制為158) 358000l (十進制為-358000)八進制長整常數 012l (十進制為10) 077l (十進制為63)0200000l (十進制為65536)十六進制長整常數 0x15l (十進制為21) 0xa5l
39、 (十進制為165)0x10000l (十進制為65536) 長整數158l和基本整常數158 在數值上并無區別。但對158l,因為是長整型量,編譯系統將為它分配4個字節存儲空間。而對158,因為是基本整型,只分配2 個字節的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。無符號數也可用后綴表示,整型常數的無符號數的后綴為“u”或“u”。例如: 358u,0x38au,235lu 均為無符號數。前綴,后綴可同時使用以表示各種類型的數。如0xa5lu表示十六進制無符號長整數a5,其十進制為165。整型變量整型變量可分為以下幾類:1.基本型類型說明符為int,在內存中占2個字節,其取值為基本
40、整常數。2.短整量類型說明符為short int或shortc110f1。所占字節和取值范圍均與基本型相同。3.長整型類型說明符為long int或long ,在內存中占4個字節,其取值為長整常數。4.無符號型類型說明符為unsigned。無符號型又可與上述三種類型匹配而構成:(1)無符號基本型 類型說明符為unsigned int或unsigned。(2)無符號短整型 類型說明符為unsigned short(3)無符號長整型 類型說明符為unsigned long各種無符號類型量所占的內存空間字節數與相應的有符號類型量相同。但由于省去了符號位,故不能表示負數。 下表列出了turbo c中各
41、類整型量所分配的內存字節數及數的表示范圍。類型說明符數的范圍 分配字節數int -3276832767 short int -3276832767 signed int -3276832767 unsigned int 065535 long int -21474836482147483647unsigned long 04294967295 整型變量的說明變量說明的一般形式為: 類型說明符 變量名標識符,變量名標識符,.; 例如:int a,b,c; (a,b,c為整型變量)long x,y; (x,y為長整型變量)unsigned p,q; (p,q為無符號整型變量)在書寫變量說明時,應注
42、意以下幾點:1.允許在一個類型說明符后,說明多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。2.最后一個變量名之后必須以“;”號結尾。3.變量說明必須放在變量使用之前。一般放在函數體的開頭部分。practice /1int a,b;short int c;short d=100;a=d-20;b=a+d;c=a+b+d;d=d-a+c-b;vtablea,2,0b,2,0c,2,0d,2,100of vtablevupdate1,0;2,03,04,1001,802,1803,3604,200of vupdateof practicepractice /2
43、int a=5;int b=9;long int c;long d;c=a+b-7;d=a*b*c;c=d*d*d;a=c-d;vtablea,2,5b,2,9c,4,0d,4,0of vtablevupdate1,52,93,04,03,74,3153,312558751,-5112of vupdateof practicepractice /3int a=6,b=19;unsigned int c;int d;c=a-b+7;d=b*c;a=b+c+d;b=-a;vtablea,2,6b,2,19c,2,0d,2,0of vtablevupdate1,6;2,193,04,03,65530
44、4,-1141,-1012,101of vupdateof practicevoid main()long x,y;int a,b,c,d;x=5;y=6;a=7;b=8;c=x+a;d=y+b;printf(c=x+a=%d,d=y+b=%dn,c,d);將main說明為返回void,即不返回任何類型的值x,y被定義為long型a,b,c,d被定義為int型5-x6-y7-a8-bx+a-cy+b-d顯示程序運行結果 of long x,y;int a,b,c,d;c=x+a;d=y+b; 從程序中可以看到:x, y是長整型變量,a, b是基本整型變量。它們之間允許進行運算,運算結果為長整型
45、。但c,d被定義為基本整型,因此最后結果為基本整型。本例說明,不同類型的量可以參與運算并相互賦值。其中的類型轉換是由編譯系統自動完成的。有關類型轉換的規則將在以后介紹。實型量實型常量實型也稱為浮點型。實型常量也稱為實數或者浮點數。在語言中,實數只采用十進制。它有二種形式: 十進制數形式指數形式1.十進制數形式由數碼0 9和小數點組成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均為合法的實數。2.指數形式由十進制數,加階碼標志“e”或“e”以及階碼(只能為整數,可以帶符號)組成。其一般形式為a e n (a為十進制數,n為十進制整數)其值為 a*10,n如: 2.1e5 (等于2.1*10,5), 3.7e-2 (等于3.7*10,)-2*)0.5e7 (等于0.5*10,7), -2.8e-2 (等于-2.8*10,)-2*)以下不是合法的實數 345 (無小數點)e7 (階碼標志e之前無數字) -5 (無階碼標志)53.-e3 (負號位置不對)2.7e (無階碼)標準允許浮點數使用后綴。后綴為“f”或“f”即表示該數為浮點數。如356f和356.是等價的。例2.2說明了這種情況:void main()printf(%fn%fn,356.,356f);void 指明main不返回任何值利用printf顯示結果結束實型變量實型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧化解青春期叛逆:家長教育指南
- 在線客服系統維護合同(2篇)
- 病房管理制度
- 河南省洛陽市2024-2025學年高一下學期期中考試地理試題(原卷版+解析版)
- 以數據說話區塊鏈在IP價值評估中的應用
- AI算法在醫療領域的道德與法律問題研究
- 從理論到實踐全面掌握區塊鏈技術應用技巧
- 2025年胃腸解痙藥項目合作計劃書
- 利用辦公自動化的理念與技術研究現代辦公方式創新升級趨勢分析
- 互聯網醫療中的AI技術監管框架構建
- 藥品研發合作協議書
- ANPQP概要-主要表單介紹及4M變更流程
- 2023年山東司法警官職業學院招聘考試真題
- 氯乙酸安全技術說明書MSDS
- 農村集體土地租賃合同范本村集體土地房屋租
- 電焊煙塵職業危害培訓課件
- 2024年內蒙古通遼新正電工技術服務有限公司招聘筆試參考題庫附帶答案詳解
- 《公司法培訓》課件
- 印章可疑情況管理制度
- 基于單片機的汽車超載控制系統的設計
- 靜電噴涂設備操作規程
評論
0/150
提交評論