




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C程序設計
(第二版)新世紀計算機基礎教育叢書叢書主編譚浩強C程序設計
(第二版)新世紀計算機基礎教育叢書叢書1總目錄第1章C語言概述第2章程序的靈魂——算法第3章數據類型、運算符與表達式第4章最簡單的C程序設計——順序程序設計第5章選擇結構程序設計第6章循環控制第7章數組第8章函數總目錄第1章C語言概述2第9章預處理命令第10章指針第11章結構體與共用體第12章位運算第13章文件第14章C++對C的擴充第15章C++的面向對象基礎第16章常見錯誤和程序調試第9章預處理命令3第1章
C語言概述1.1C語言出現的歷史背景1.2C語言的特點1.3
簡單的C程序介紹1.4C程序的上機步驟1.5
習題第1章C語言概述1.1C語言出現的歷史背景41.1C語言出現的歷史背景C語言是國際上廣泛流行的計算機高級語言,既可用來寫系統軟件,也可用來寫應用軟件。C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL60。1960年出現的ALGOL60是一種面向問題的高級語言,它離硬件比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎上接近硬件一些,但規模比較大,難以實現。1967年英國劍橋大學的MatinRichards對CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言。1970年美國貝爾實驗室的1.1C語言出現的歷史背景C語言是國際上廣泛流行的計算機5
KenThompson以BCPL語言為基礎,又做了進一步簡化,設計出了很簡單的而且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫了第一個UNIX操作系統,在PDP7上實現。1971年在PDP11/20上實現了B語言,并寫了UNIX操作系統。但B語言過于簡單,功能有限。KenThompson以BCPL語言為基礎,又做了進61972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬件),又克服了它們的缺點(過于簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的。1972年至1973年間,貝爾實驗室的D.M.Ritchie71972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬件),又克服了它們的缺點(過于簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的。1972年至1973年間,貝爾實驗室的D.M.Ritchie8后來,C語言多次做了改進,但主要還是在貝爾實驗室內部使用。直到1975年UNIX第6版公布后,C語言的突出優點才引起人們的普遍注意。1977年出現了不依賴于具體機器的C語言編譯文本《可移植C語言編譯程序》,使C移植到其他機器時所需做的工作大大簡化了,這也推動了UNIX操作系統迅速地在各種機器上實現。例如VAX、AT&T等計算機系統都相繼開發了UNIX。隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對孿生兄弟,在發展過程中相輔相成。1978年以后,C語言已先后移植到大、中、小、微型機上,已獨立于UNIX和PDP了。現在C語言已風靡全世界,成為世界上后來,C語言多次做了改進,但主要還是在貝爾實驗室內部使用。直9應用最廣泛的幾種計算機語言之一。以1978年發表的UNIX第7版中的C編譯程序為基礎,BrianW.Kernighan和DennisM.Ritchie(合稱K&R)合著了影響深遠的名著《TheCProgrammingLanguage》,這本書中介紹的C語言成為后來廣泛使用的C語言版本的基礎,它被稱為標準C。1983年,美國國家標準化協會(ANSI)根據C語言問世以來各種版本對C的發展和擴充,制定了新的標準,稱為ANSIC。ANSIC比原來的標準C有了很大的發展。K&R在1988年修改了他們的經典著作《TheCProgrammingLanguage》,按照ANSIC標準重新寫了該書。1987年,ANSI又公布了新標準——87ANSIC。應用最廣泛的幾種計算機語言之一。以1978年發表的UNIX101990年,國際標準化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISOC的標準(ISO9899—1990)。目前流行的C編譯系統都是以它為基礎的。本書的敘述基本上以ANSIC為基礎。目前廣泛流行的各種版本C語言編譯系統雖然基本部分是相同的,但也有一些不同。在微型機上使用的有MicrosoftC、TurboC、QuickC、BORLANDC等,它們的不同版本又略有差異。因此,讀者應了解所用的計算機系統所配置的C編譯系統的特點和規定(可以參閱有關手冊)。1990年,國際標準化組織ISO(International111.2C語言的特點一種語言之所以能存在和發展,并具有生命力,總是有其不同于(或優于)其他語言的特點。C語言的主要特點如下。
(1)語言簡潔、緊湊,使用方便、靈活。C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。下面將C與PASCAL語言做一比較。
(2)運算符豐富。C的運算符包含的范圍很廣泛,共有34種運算符。C把括號、賦值、強制類型轉換等都作為運算符處理,從而使C的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其他高級語言中難以實現的運算。1.2C語言的特點一種語言之所以能存在和發展,并具有生命12(3)數據結構豐富,具有現代化語言的各種數據結構。C的數據類型有整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構(如鏈表、樹、棧等)的運算。尤其是指針類型數據,使用起來比PASCAL更為靈活、多樣。(4)具有結構化的控制語句(如if…else語句、while語句、do…while語句、switch語句、for語句)。用函數作為程序的模塊單位,便于實現程序的模塊化。C是良好的結構化語言,符合現代編程風格的要求。(3)數據結構豐富,具有現代化語言的各種數據結構。C的數據13(5)語法限制不太嚴格,程序設計自由度大。例如對數組下標越界不做檢查,由程序編寫者自己保證程序的正確。對變量的類型使用比較靈活,例如整型數據與字符型數據可以通用。一般的高級語言語法檢查比較嚴,能檢查出幾乎所有的語法錯誤。而C語言允許程序編寫者有較大的自由度,因此,放寬了語法檢查。程序員應當仔細檢查程序,保證其正確,而不要過分依賴C編譯程序去查錯。“限制”與“靈活”是一對矛盾。限制嚴格,就失去靈活性;而強調靈活,就必然放松限制。一個不熟練的編程人員,編一個正確的C程序可能會比編一個其他高級語言程序難一些。也就是說,對用C語言的人,要求對程序設計更熟練一些。(5)語法限制不太嚴格,程序設計自由度大。例如對數組下標越14(6)C語言能進行位(bit)操作,能實現匯編語言的大部分功能,可以直接對硬件進行操作。因此C既具有高級語言的功能,又具有低級語言的許多功能,可用來寫系統軟件。C語言的這種雙重性,使它既是成功的系統描述語言,又是通用的程序設計語言。有人把C稱為“高級語言中的低級語言”或“中級語言”,意為兼有高級和低級語言的特點。按此觀點可將各語言分類如下:(6)C語言能進行位(bit)操作,能實現匯編語言的大部15高級:BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2;中級:C,FORTH,宏匯編;低級:匯編語言一般仍習慣將C語言稱為高級語言,因為C程序也要通過編譯、連接才能得到可執行的目標程序,這是和其他高級語言相同的。C的以上特點,讀者現在也許還不能深刻理解,待學完C以后再回顧一下,就會有比較深的體會。我們從應用的角度出發對C語言和其他傳統的高級語言作一簡單比較。高級:BASIC,FORTRAN,COBOL,PASCAL16從掌握語言的難易程度來看,C語言比其他語言難一些。BASIC是初學者入門的較好的語言,FORTRAN也比較好掌握。對科學計算多用FORTRAN或PL/Ⅰ;對商業和管理等數據處理領域,用COBOL為宜。C語言雖然也可用于科學計算和管理領域,但并不理想,C的特長不在這里。對操作系統和系統實用程序以及需要對硬件進行操作的場合,用C語言明顯地優越于其他高級語言,有的大型應用軟件也用C語言編寫。從教學角度,由于PASCAL是世界上第一個結構化語言,而曾被認為是計算機專業的比較理想的教學語言。目前在數據結構等課程中一般用PASCAL語言舉例。但PASCAL語言難以推廣到各實際應用領域,從掌握語言的難易程度來看,C語言比其他語言難一些。BASIC17到目前為止基本上只是教學語言。C語言也是理想的結構化語言,且描述能力強,同樣適于教學。操作系統課程多結合UNIX講解,而UNIX與C不可分,因此,C語言已經成為被廣泛使用的教學語言。C除了能用于教學外,還有廣泛的應用領域,因此更有生命力。PASCAL和其他高級語言的設計目標是通過嚴格的語法定義和檢查來保證程序的正確性,而C則是強調靈活性,使程序設計人員能有較大的自由度,以適應寬廣的應用面。總之,C語言對程序員要求較高。程序員使用C語言編寫程序會感到限制少,靈活性大,功能強,可以編寫出任何類型的程序。現在,C語言已不僅用來編寫系統軟件,也用來編寫應用軟件。學習和使用C的人已越來越多。到目前為止基本上只是教學語言。C語言也是理想的結構化語言,181.3簡單的C程序介紹下面先介紹幾個簡單的C程序,然后從中分析C程序的特性。例1.1main(){printf("ThisisaCprogram.\n");}本程序的作用是輸出以下一行信息:Thisisacprogram.其中main表示“主函數”。每一個C程序都必須有一個main函數。函數體由大括弧{}括起來。本例中主函數內只有一個輸出語句,printf是C語言中的輸出函數(詳見第4章)。雙引號(雙括號)內的字符串原樣輸出?!癨n”是換行符,即在輸出“Thisisacprogram.”后回車換行。語句最后有一分號。1.3簡單的C程序介紹下面先介紹幾個簡單的C程序,然后從19例1.2main()/*求兩數之和*/{inta,b,sum;/*這是定義變量*/a=123;b=456;/*以下3行為C語句*/sum=a+b;printf("sumis%d/n",sum);}本程序的作用是求兩個整數a和b之和sum。/*……*/表示注釋部分,為便于理解,我們用漢字表示注釋,當然也可以用英語或漢字拼音作注釋。注釋只是給人看的,對編譯和運行不起作用。注釋可以加在程序中任何位置。第2行是聲明部分,定義變量a和b,指定a和b為整型(int)變量。第3行是兩個賦值語句,使a和b的值分別為123和例1.220
456。第4行使sum的值為a+b,第5行中“%d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數據類型和格式(詳見第4章),“%d”表示“以十進制整數形式輸出”。在執行輸出時,此位置上代以一個十進制整數值。printf函數中括弧內最右端sum是要輸出的變量,現在它的值為579(即123+456之值)。因此輸出一行信息為sumis579例1.3main()/*主函數*/{inta,b,c;/*聲明部分,定義變量*/scanf("%d,%d",&a,&b);/*輸入變量a和b的值*/456。第4行使sum的值為a+b,第5行中“%d”是輸入21c=max(a,b);/*調用max函數,將得到的值賦給c*/printf("max=%d",c);/*輸出c的值*/}intmax(intx,inty)/*定義max函數,函數值為整型,形式參數x,y為整型*/{intz;/*max函數中的聲明部分,定義本函數中用到的變量z為整型*/if(x>y)z=x;elsez=y;return(z);/*將z的值返回,通過max帶回調用處*/}c=max(a,b);/*調用max函數,將得到的值賦22本程序包括兩個函數:主函數main和被調用的函數max。max函數的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調函數main。返回值是通過函數名max帶回到main函數的調用處。main函數中的scanf是“輸入函數”的名字(scanf和printf都是C系統提供的標準輸入輸出函數)。程序中scanf函數的作用是輸入a和b的值。&a和&b中的“&”的含義是“取地址”,此scanf函數的作用是將兩個數值分別輸入到變量a和b的地址所標志的單元中,也就是輸入給變量a和b。這種形式是與其他語言不同的。它相當于BASIC語言中的INPUTa,b或PASCAL語言中的Read(a,b)。&a和&b前面的“%d,%d”的含義與前相同,本程序包括兩個函數:主函數main和被調用的函數max。ma23只是現在用于“輸入”。它指定輸入的兩個數據按十進制整數形式輸入。關于scanf函數詳見第4章。main函數中第4行為調用max函數,在調用時將實際參數a和b的值分別傳送給max函數中的形式參數x和y。經過執行max函數得到一個返回值(即max函數中變量z的值),把這個值賦給變量c。然后輸出c的值。printf函數中雙引號內的“max=%d”,在輸出時,其中“%d”將由c的值取代之,“max=”原樣輸出。程序運行情況如下:8,5(輸入8和5給a和b)max=8(輸出c的值)只是現在用于“輸入”。它指定輸入的兩個數據按十進制整數形式24本例用到了函數調用、實際參數和形式參數等概念,我們只做了很簡單的解釋。讀者如對此不大理解,可以先不予以深究,在學到以后有關章節時,問題自然迎刃而解。在此介紹此例子,無非是使讀者對C程序的組成和形式有一個初步的了解。通過以上幾個例子,可以看到:(1)C程序是由函數構成的。一個C源程序至少包含一個main函數,也可以包含一個main函數和若干個其他函數。因此,函數是C程序的基本單位。被調用的函數可以是系統提供的庫函數(例如printf和scanf函數),也可以是用戶根據需要自本例用到了函數調用、實際參數和形式參數等概念,我們只做了很簡25
己編制設計的函數(例如,例1.3中的max函數)。C的函數相當于其他語言中的子程序,用函數來實現特定的功能。程序中的全部工作都是由各個函數分別完成的。編寫C程序就是編寫一個個函數。C的函數庫十分豐富,ANSIC建議的標準庫函數中包括100多個函數,TurboC和MSC4.0提供300多個庫函數。C的這種特點使得容易實現程序的模塊化。(2)一個函數由兩部分組成:①函數的首部,即函數的第一行。包括函數名、函數類型、函數屬性、函數參數(形參)名、參數類型。例如,例1.3中的max函數的首部為intmax(intx,
inty)↓↓↓↓↓↓函數類型函數名函數參數類型函數參數名函數參數類型函數參數名己編制設計的函數(例如,例1.3中的max函數)。C的函26一個函數名后面必須跟一對圓括弧,函數參數可以沒有,如main()。②函數體,即函數首部下面的大括弧{……}內的部分。如果一個函數內有多個大括弧,則最外層的一對{}為函數體的范圍。函數體一般包括:·聲明部分:在這部分中定義所用到的變量,如例1.3中main函數中的“inta,b,c;”。在第8章中還將會看到,在聲明部分中要對所調用的函數進行聲明。執行部分:由若干個語句組成。一個函數名后面必須跟一對圓括弧,函數參數可以沒有,如mai27當然,在某些情況下也可以沒有聲明部分(例如,例1.1)。甚至可以既無聲明部分,也無執行部分。如:dump(){}它是一個空函數,什么也不干,但這是合法的。(3)一個C程序總是從main函數開始執行的,而不論main函數在整個程序中的位置如何(main函數可以放在程序最前頭,也可以放在程序最后,或在一些函數之前,在另一些函數之后)。(4)C程序書寫格式自由,一行內可以寫幾個語句,一個語句可以分寫在多行上。C程序沒有行號,當然,在某些情況下也可以沒有聲明部分(例如,例1.1)。甚至28也不像FORTRAN或COBOL那樣嚴格規定書寫格式(語句必須從某一列開始書寫)。(5)每個語句和數據定義的最后必須有一個分號。分號是C語句的必要組成部分。例如:c=a+b;分號不可少。即使是程序中最后一個語句也應包含分號(這是和PASCAL語言不同的)。(6)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數scanf和printf等函數來完成的。C對輸入輸出實行“函數化”。由于輸入輸出操作牽涉到具體的計算機設備,把輸入輸出操作放在函數中處理,就可以使C語言本身的規模較小,也不像FORTRAN或COBOL那樣嚴格規定書寫格式(語句29編譯程序簡單,很容易在各種機器上實現,程序具有可移植性。當然,不同的C語言系統需要對函數庫中的函數作不同的處理。不同的C系統除了提供函數庫中的標準函數外,還按照硬件的情況提供一些專門的函數。因此不同的系統所提供的函數個數和功能是有所不同的。(7)可以用/*……*/對C程序中的任何部分作注釋。一個好的、有使用價值的源程序都應當加上必要的注釋,以增加程序的可讀性。編譯程序簡單,很容易在各種機器上實現,程序具有可移植性。當301.4C程序的上機步驟我們已經看到了一些用C語言編寫的程序。為了使計算機能按照人們的意志進行工作,必須根據問題的要求,編寫出相應的程序。所謂程序,就是一組計算機能識別和執行的指令。每一條指令使計算機執行特定的操作。程序可以用高級語言(例如QBASIC,FORTRAN,PASCAL,C等)編寫。用高級語言編寫的程序稱為“源程序”(sourceprogram)。從根本上說,計算機只能識別和執行由0和1組成的二進制的指令,而不能識別和執行用高級語言寫的指令。為了使計算機能執行高級語言源程序,必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進制形式的“目標程序”,然后將該目標程序與系統的函數庫和其他目標程序連接起來,形成可執行的目標程序。1.4C程序的上機步驟我們已經看到了一些用C語言編寫的程31圖1.1圖1.132在編好一個C源程序后,如何上機運行呢?在紙上寫好一個程序后,要經過以下幾個步驟:上機輸入與編輯源程序對源程序進行編譯與庫函數連接運行目標程序這樣幾個步驟。以上過程如圖1.1所示。其中實線表示操作流程,虛線表示文件的輸入輸出。例如,編輯后得到一個源程序文件f.c,然后在進行編譯時再將源程序文件f.c輸入,經過編譯得到目標程序文件f.obj,再將目標程序文件f.obj輸入內存,與系統提供的庫函數等連接,得到可執行的目標程序文件f.exe,最后把f.exe調入內存并使之運行。在了解了C語言的初步知識后,讀者最好上機運行一個C程序,以建立對C程序的初步認識。在編好一個C源程序后,如何上機運行呢?在紙上寫好一個程序后33下面分別就三種不同的環境下運行C程序作一簡單介紹。1.用TurboC運行C程序的步驟TurboC是在微機上廣泛使用的編譯程序。它具有方便、直觀、易用的界面和豐富的庫函數。它向用戶提供一個集成環境,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,使用十分方便。為了能使用TurboC,必須先將TurboC編譯程序裝入磁盤的某一目錄下,例如放在C盤根目錄下一級TC子目錄下。下面分別就三種不同的環境下運行C程序作一簡單介紹。34圖1.2(1)調用TurboC程序。如果用戶的當前目錄是TurboC編譯程序所在的子目錄(例如TC子目錄),只需從鍵盤鍵入“tc”命令即可:圖1.2(1)調用TurboC程序。如果用戶的當前目錄35C:\TC>tc屏幕上出現TurboC集成環境,見圖1.2所示。從圖1.2可以看到在集成環境的上部,有一行“主菜單”,其中包括下面8個菜單項:FileEditRunCompileProjectOptionDebugbreak/watch用戶可以通過以上菜單項來選擇使用TurboC集成環境所提供的TurboC的各項主要功能。以上8個菜單項分別代表:文件操作、編輯、運行、編譯、項目文件、選項、調試、中斷/觀察等功能。用鍵盤上的“←”和“→”鍵可以選擇菜單條中所需要的菜單項,被選中的項以“反相”圖1.3形式顯示C:\TC>tc36
(例如主菜單中的各項原來以白底黑字顯示,被選中時改為以黑底白字顯示)。此時若按回車鍵,就會出現一個下拉菜單。例如在選中“File”菜單并按回車鍵后,屏幕上“File”下面出現下拉菜單,見圖1.3所示。它是一個子菜單,提供多項選擇??梢杂谩啊辨I選擇所需要的項。例如選擇“New”處,并按回車鍵,表示要建立一個新的C源程序。
圖1.3(例如主菜單中的各項原來以白底黑字顯示,被選中時改為以黑底37如果選擇“Load”,并按回車鍵,表示要調入一個已有的源文件,此時屏幕上出現一個對話框(見圖1.4)。要求你輸入該文件的名字。用戶可輸入該文件名,例如:tc1.c,如果已存在此文件,則系統會將此文件調入內存并顯示在屏幕上。此時自動轉為編輯(Edit)狀態。如果原來不存在此文件名,則系統會建立一個以指定的名字命名的新文件。圖1.4如果選擇“Load”,并按回車鍵,表示要調入一個已有的38(2)編輯源文件。在編輯(Edit)狀態下可以根據需要輸入或修改源程序。(3)編譯源程序。選擇“Compile”菜單并在其下拉菜單中選擇“CompiletoOBJ”,則進行編譯,得到一個后綴為.obj的目標程序(為方便起見,在一般書刊中,以上菜單的選擇以“Compile/CompiletoOBJ”表示)。然后再選菜單“Compile/LinkEXEfile”,進行連接操作,可得到一個后綴為.exe的可執行文件。也可以將編譯和連接合為一個步驟進行。選菜單“Compile/MakeEXEfile”或按“F9”鍵,即可一次完成編譯和連接。在屏幕上會顯示編譯或連接時有無錯誤和有幾個錯誤,見圖1.5所示。此時按任何一個鍵,圖1.5所顯示的“編譯信息框”會(2)編輯源文件。在編輯(Edit)狀態下可以根據需要輸39圖1.5
消失,屏幕上會恢復顯示源程序,光標停留在出錯之處。在屏幕的下半部分顯示出有錯誤的行和錯誤的原因。根據此信息修改源程序。修改完畢認為無錯后,再按“F9”,再次進行編譯和連接,如此反復進行到不顯示出錯為止。圖1.5消失,屏幕上會恢復顯示源程序,光標停留在出錯之40(4)執行程序。按“F10”鍵,在窗口上部的主菜單中某一項處出現“反相”顯示(黑色亮塊)。FileEditRunCompileProjectOptionDebugBreak/watch用“→”鍵將亮塊移到“Run”,按回車鍵,在其下拉菜單中選擇“Run”項,或直接按Ctrl+F9鍵,系統就會執行已編譯好的目標文件。此時,TC集成環境窗口消失,屏幕上顯示出程序運行時輸出的結果。如果程序需要輸入數據(如例1.3),則應在此時,從鍵盤輸入所需數據,然后程序會接著執行,輸出結果。如果發現運行結果不對,要重新修改源程序,可以再按“F10”鍵,并用“←”使亮塊移到“Edit”處,(4)執行程序。按“F10”鍵,在窗口上部的主菜單中某41
按回車鍵,即進入編輯狀態,可以根據需要修改源程序,并重復上述(2),(3),(4)步,直到得到正確結果為止。(5)可以用“Alt”和“X”鍵(同時按此兩鍵),脫離TurboC,回到DOS命令狀態。此時,可以用DOS命令顯示源程序和運行程序:C>TYPEtc1.c(列出源程序清單)C>tc1(執行目標程序tc1.exe)如果想再修改源程序,可以重新執行步驟(1),并輸入源程序文件名即可。按回車鍵,即進入編輯狀態,可以根據需要修改源程序,并重422.在UNIX操作系統下運行C程序的步驟(1)用編輯程序(如UNIX系統的文本行編輯程序ed,或屏幕編輯程序vi)將源程序輸入計算機,經修改認為無誤后,存入文件系統。設用戶將源文件定名為f.c(C源程序的后綴一般定為“.c”)。(2)編譯。調用C編譯程序cc對源文件進行編譯??纱蛉朊?ccf.c如果在編譯過程中發現源程序有語法錯誤,則系統會輸出“出錯信息”,告訴用戶第幾行有什么樣的錯誤。用戶應重新調用編輯程序,修改后再進行編譯。如此直到編譯通過為止。編譯時先2.在UNIX操作系統下運行C程序的步驟43生成一個匯編語言程序(即將C源程序翻譯成為一個匯編語言程序),然后由編譯程序再將匯編語言程序翻譯成機器指令程序,即目標程序。目標程序的文件名與相應的源程序同名,但后綴為“.o”(表示它是目標文件),上述源文件f.c經編譯后得到目標程序f.o。(3)連接。將目標程序和庫函數或其他目標程序連接成可執行的目標程序。在UNIX系統下,連接是由cc自動完成的。最后得到可執行文件,文件名由系統自動確定為a.out。如果不想用系統定的文件名a.out,也可以在編譯時自己指定可執行文件名。例如想指定為f.out,生成一個匯編語言程序(即將C源程序翻譯成為一個匯編語言程序44可以在編譯時打入以下命令:cc-of.outf.c它的作用是將源程序f.c編譯成可執行程序,文件名為f.out。(4)執行程序。只需輸入可執行文件名即可。例如:a.out(系統指定的文件名)或f.out(用戶指定的文件名)3.在DOS下用MicrosoftC6.0編譯程序運行C程序的步驟MicrosoftC是微軟公司為IBM系列微機開發的C編譯系統。MSC6.0版本提供了多個庫函數。老版本的MSC采用基于DOS平臺的命令行方式。MSC6.0增加了基于鼠標和窗口的“程序員工作臺”可以在編譯時打入以下命令:45(programmer'sworkbench,縮寫為PWB),它也是一個集成環境。MSC也是人們常用的C編譯系統之一。目前,大多數使用MSC的人習慣用命令行方式。因此我們在這里只簡單地介紹命令行方式的用法。(1)編輯C源程序??梢杂萌魏稳聊痪庉嬒到y輸入和編輯源程序。假設已輸入和編輯好的源文件名為a1.c。(2)編譯和連接。MSC提供了一個功能很強的CL命令,可一次完成程序的編譯和連接。CL是Compile和Link的第一個字母。用法如下:
CLa1.c(對源程序a1.c進行編譯和連接)(programmer'sworkbench,縮寫為46如果在編譯和連接時出現“出錯信息”,則需要重新編輯(修改)源程序。編譯和連接完成后,產生一個可執行文件a1.exe。(3)執行程序。只需輸入可執行文件名:a1即可得到運行結果。以上步驟只需上機試一下,即可明白。如果在編譯和連接時出現“出錯信息”,則需要重新編輯(修改)47習題
1.1請根據自己的認識,寫出C語言的主要特點。1.2C語言的主要用途是什么?它和其他高級語言有什么異同?1.3寫出一個C程序的構成。1.4C語言以函數為程序的基本單位,有什么好處?1.5請參照本章例題,編寫一個C程序,輸出以下信息:習題
48******************************Verygood!******************************1.6編寫一個C程序,輸入a、b、c3個值,輸出其中最大者。1.7上機運行本章3個例題,熟悉所用系統的上機方法與步驟。1.8上機運行本章習題1.5和1.6。******************************49C程序設計
(第二版)新世紀計算機基礎教育叢書叢書主編譚浩強C程序設計
(第二版)新世紀計算機基礎教育叢書叢書50總目錄第1章C語言概述第2章程序的靈魂——算法第3章數據類型、運算符與表達式第4章最簡單的C程序設計——順序程序設計第5章選擇結構程序設計第6章循環控制第7章數組第8章函數總目錄第1章C語言概述51第9章預處理命令第10章指針第11章結構體與共用體第12章位運算第13章文件第14章C++對C的擴充第15章C++的面向對象基礎第16章常見錯誤和程序調試第9章預處理命令52第1章
C語言概述1.1C語言出現的歷史背景1.2C語言的特點1.3
簡單的C程序介紹1.4C程序的上機步驟1.5
習題第1章C語言概述1.1C語言出現的歷史背景531.1C語言出現的歷史背景C語言是國際上廣泛流行的計算機高級語言,既可用來寫系統軟件,也可用來寫應用軟件。C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL60。1960年出現的ALGOL60是一種面向問題的高級語言,它離硬件比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎上接近硬件一些,但規模比較大,難以實現。1967年英國劍橋大學的MatinRichards對CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言。1970年美國貝爾實驗室的1.1C語言出現的歷史背景C語言是國際上廣泛流行的計算機54
KenThompson以BCPL語言為基礎,又做了進一步簡化,設計出了很簡單的而且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫了第一個UNIX操作系統,在PDP7上實現。1971年在PDP11/20上實現了B語言,并寫了UNIX操作系統。但B語言過于簡單,功能有限。KenThompson以BCPL語言為基礎,又做了進551972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬件),又克服了它們的缺點(過于簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的。1972年至1973年間,貝爾實驗室的D.M.Ritchie561972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬件),又克服了它們的缺點(過于簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的。1972年至1973年間,貝爾實驗室的D.M.Ritchie57后來,C語言多次做了改進,但主要還是在貝爾實驗室內部使用。直到1975年UNIX第6版公布后,C語言的突出優點才引起人們的普遍注意。1977年出現了不依賴于具體機器的C語言編譯文本《可移植C語言編譯程序》,使C移植到其他機器時所需做的工作大大簡化了,這也推動了UNIX操作系統迅速地在各種機器上實現。例如VAX、AT&T等計算機系統都相繼開發了UNIX。隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對孿生兄弟,在發展過程中相輔相成。1978年以后,C語言已先后移植到大、中、小、微型機上,已獨立于UNIX和PDP了?,F在C語言已風靡全世界,成為世界上后來,C語言多次做了改進,但主要還是在貝爾實驗室內部使用。直58應用最廣泛的幾種計算機語言之一。以1978年發表的UNIX第7版中的C編譯程序為基礎,BrianW.Kernighan和DennisM.Ritchie(合稱K&R)合著了影響深遠的名著《TheCProgrammingLanguage》,這本書中介紹的C語言成為后來廣泛使用的C語言版本的基礎,它被稱為標準C。1983年,美國國家標準化協會(ANSI)根據C語言問世以來各種版本對C的發展和擴充,制定了新的標準,稱為ANSIC。ANSIC比原來的標準C有了很大的發展。K&R在1988年修改了他們的經典著作《TheCProgrammingLanguage》,按照ANSIC標準重新寫了該書。1987年,ANSI又公布了新標準——87ANSIC。應用最廣泛的幾種計算機語言之一。以1978年發表的UNIX591990年,國際標準化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISOC的標準(ISO9899—1990)。目前流行的C編譯系統都是以它為基礎的。本書的敘述基本上以ANSIC為基礎。目前廣泛流行的各種版本C語言編譯系統雖然基本部分是相同的,但也有一些不同。在微型機上使用的有MicrosoftC、TurboC、QuickC、BORLANDC等,它們的不同版本又略有差異。因此,讀者應了解所用的計算機系統所配置的C編譯系統的特點和規定(可以參閱有關手冊)。1990年,國際標準化組織ISO(International601.2C語言的特點一種語言之所以能存在和發展,并具有生命力,總是有其不同于(或優于)其他語言的特點。C語言的主要特點如下。
(1)語言簡潔、緊湊,使用方便、靈活。C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。下面將C與PASCAL語言做一比較。
(2)運算符豐富。C的運算符包含的范圍很廣泛,共有34種運算符。C把括號、賦值、強制類型轉換等都作為運算符處理,從而使C的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其他高級語言中難以實現的運算。1.2C語言的特點一種語言之所以能存在和發展,并具有生命61(3)數據結構豐富,具有現代化語言的各種數據結構。C的數據類型有整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構(如鏈表、樹、棧等)的運算。尤其是指針類型數據,使用起來比PASCAL更為靈活、多樣。(4)具有結構化的控制語句(如if…else語句、while語句、do…while語句、switch語句、for語句)。用函數作為程序的模塊單位,便于實現程序的模塊化。C是良好的結構化語言,符合現代編程風格的要求。(3)數據結構豐富,具有現代化語言的各種數據結構。C的數據62(5)語法限制不太嚴格,程序設計自由度大。例如對數組下標越界不做檢查,由程序編寫者自己保證程序的正確。對變量的類型使用比較靈活,例如整型數據與字符型數據可以通用。一般的高級語言語法檢查比較嚴,能檢查出幾乎所有的語法錯誤。而C語言允許程序編寫者有較大的自由度,因此,放寬了語法檢查。程序員應當仔細檢查程序,保證其正確,而不要過分依賴C編譯程序去查錯。“限制”與“靈活”是一對矛盾。限制嚴格,就失去靈活性;而強調靈活,就必然放松限制。一個不熟練的編程人員,編一個正確的C程序可能會比編一個其他高級語言程序難一些。也就是說,對用C語言的人,要求對程序設計更熟練一些。(5)語法限制不太嚴格,程序設計自由度大。例如對數組下標越63(6)C語言能進行位(bit)操作,能實現匯編語言的大部分功能,可以直接對硬件進行操作。因此C既具有高級語言的功能,又具有低級語言的許多功能,可用來寫系統軟件。C語言的這種雙重性,使它既是成功的系統描述語言,又是通用的程序設計語言。有人把C稱為“高級語言中的低級語言”或“中級語言”,意為兼有高級和低級語言的特點。按此觀點可將各語言分類如下:(6)C語言能進行位(bit)操作,能實現匯編語言的大部64高級:BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2;中級:C,FORTH,宏匯編;低級:匯編語言一般仍習慣將C語言稱為高級語言,因為C程序也要通過編譯、連接才能得到可執行的目標程序,這是和其他高級語言相同的。C的以上特點,讀者現在也許還不能深刻理解,待學完C以后再回顧一下,就會有比較深的體會。我們從應用的角度出發對C語言和其他傳統的高級語言作一簡單比較。高級:BASIC,FORTRAN,COBOL,PASCAL65從掌握語言的難易程度來看,C語言比其他語言難一些。BASIC是初學者入門的較好的語言,FORTRAN也比較好掌握。對科學計算多用FORTRAN或PL/Ⅰ;對商業和管理等數據處理領域,用COBOL為宜。C語言雖然也可用于科學計算和管理領域,但并不理想,C的特長不在這里。對操作系統和系統實用程序以及需要對硬件進行操作的場合,用C語言明顯地優越于其他高級語言,有的大型應用軟件也用C語言編寫。從教學角度,由于PASCAL是世界上第一個結構化語言,而曾被認為是計算機專業的比較理想的教學語言。目前在數據結構等課程中一般用PASCAL語言舉例。但PASCAL語言難以推廣到各實際應用領域,從掌握語言的難易程度來看,C語言比其他語言難一些。BASIC66到目前為止基本上只是教學語言。C語言也是理想的結構化語言,且描述能力強,同樣適于教學。操作系統課程多結合UNIX講解,而UNIX與C不可分,因此,C語言已經成為被廣泛使用的教學語言。C除了能用于教學外,還有廣泛的應用領域,因此更有生命力。PASCAL和其他高級語言的設計目標是通過嚴格的語法定義和檢查來保證程序的正確性,而C則是強調靈活性,使程序設計人員能有較大的自由度,以適應寬廣的應用面。總之,C語言對程序員要求較高。程序員使用C語言編寫程序會感到限制少,靈活性大,功能強,可以編寫出任何類型的程序?,F在,C語言已不僅用來編寫系統軟件,也用來編寫應用軟件。學習和使用C的人已越來越多。到目前為止基本上只是教學語言。C語言也是理想的結構化語言,671.3簡單的C程序介紹下面先介紹幾個簡單的C程序,然后從中分析C程序的特性。例1.1main(){printf("ThisisaCprogram.\n");}本程序的作用是輸出以下一行信息:Thisisacprogram.其中main表示“主函數”。每一個C程序都必須有一個main函數。函數體由大括弧{}括起來。本例中主函數內只有一個輸出語句,printf是C語言中的輸出函數(詳見第4章)。雙引號(雙括號)內的字符串原樣輸出?!癨n”是換行符,即在輸出“Thisisacprogram.”后回車換行。語句最后有一分號。1.3簡單的C程序介紹下面先介紹幾個簡單的C程序,然后從68例1.2main()/*求兩數之和*/{inta,b,sum;/*這是定義變量*/a=123;b=456;/*以下3行為C語句*/sum=a+b;printf("sumis%d/n",sum);}本程序的作用是求兩個整數a和b之和sum。/*……*/表示注釋部分,為便于理解,我們用漢字表示注釋,當然也可以用英語或漢字拼音作注釋。注釋只是給人看的,對編譯和運行不起作用。注釋可以加在程序中任何位置。第2行是聲明部分,定義變量a和b,指定a和b為整型(int)變量。第3行是兩個賦值語句,使a和b的值分別為123和例1.269
456。第4行使sum的值為a+b,第5行中“%d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數據類型和格式(詳見第4章),“%d”表示“以十進制整數形式輸出”。在執行輸出時,此位置上代以一個十進制整數值。printf函數中括弧內最右端sum是要輸出的變量,現在它的值為579(即123+456之值)。因此輸出一行信息為sumis579例1.3main()/*主函數*/{inta,b,c;/*聲明部分,定義變量*/scanf("%d,%d",&a,&b);/*輸入變量a和b的值*/456。第4行使sum的值為a+b,第5行中“%d”是輸入70c=max(a,b);/*調用max函數,將得到的值賦給c*/printf("max=%d",c);/*輸出c的值*/}intmax(intx,inty)/*定義max函數,函數值為整型,形式參數x,y為整型*/{intz;/*max函數中的聲明部分,定義本函數中用到的變量z為整型*/if(x>y)z=x;elsez=y;return(z);/*將z的值返回,通過max帶回調用處*/}c=max(a,b);/*調用max函數,將得到的值賦71本程序包括兩個函數:主函數main和被調用的函數max。max函數的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調函數main。返回值是通過函數名max帶回到main函數的調用處。main函數中的scanf是“輸入函數”的名字(scanf和printf都是C系統提供的標準輸入輸出函數)。程序中scanf函數的作用是輸入a和b的值。&a和&b中的“&”的含義是“取地址”,此scanf函數的作用是將兩個數值分別輸入到變量a和b的地址所標志的單元中,也就是輸入給變量a和b。這種形式是與其他語言不同的。它相當于BASIC語言中的INPUTa,b或PASCAL語言中的Read(a,b)。&a和&b前面的“%d,%d”的含義與前相同,本程序包括兩個函數:主函數main和被調用的函數max。ma72只是現在用于“輸入”。它指定輸入的兩個數據按十進制整數形式輸入。關于scanf函數詳見第4章。main函數中第4行為調用max函數,在調用時將實際參數a和b的值分別傳送給max函數中的形式參數x和y。經過執行max函數得到一個返回值(即max函數中變量z的值),把這個值賦給變量c。然后輸出c的值。printf函數中雙引號內的“max=%d”,在輸出時,其中“%d”將由c的值取代之,“max=”原樣輸出。程序運行情況如下:8,5(輸入8和5給a和b)max=8(輸出c的值)只是現在用于“輸入”。它指定輸入的兩個數據按十進制整數形式73本例用到了函數調用、實際參數和形式參數等概念,我們只做了很簡單的解釋。讀者如對此不大理解,可以先不予以深究,在學到以后有關章節時,問題自然迎刃而解。在此介紹此例子,無非是使讀者對C程序的組成和形式有一個初步的了解。通過以上幾個例子,可以看到:(1)C程序是由函數構成的。一個C源程序至少包含一個main函數,也可以包含一個main函數和若干個其他函數。因此,函數是C程序的基本單位。被調用的函數可以是系統提供的庫函數(例如printf和scanf函數),也可以是用戶根據需要自本例用到了函數調用、實際參數和形式參數等概念,我們只做了很簡74
己編制設計的函數(例如,例1.3中的max函數)。C的函數相當于其他語言中的子程序,用函數來實現特定的功能。程序中的全部工作都是由各個函數分別完成的。編寫C程序就是編寫一個個函數。C的函數庫十分豐富,ANSIC建議的標準庫函數中包括100多個函數,TurboC和MSC4.0提供300多個庫函數。C的這種特點使得容易實現程序的模塊化。(2)一個函數由兩部分組成:①函數的首部,即函數的第一行。包括函數名、函數類型、函數屬性、函數參數(形參)名、參數類型。例如,例1.3中的max函數的首部為intmax(intx,
inty)↓↓↓↓↓↓函數類型函數名函數參數類型函數參數名函數參數類型函數參數名己編制設計的函數(例如,例1.3中的max函數)。C的函75一個函數名后面必須跟一對圓括弧,函數參數可以沒有,如main()。②函數體,即函數首部下面的大括弧{……}內的部分。如果一個函數內有多個大括弧,則最外層的一對{}為函數體的范圍。函數體一般包括:·聲明部分:在這部分中定義所用到的變量,如例1.3中main函數中的“inta,b,c;”。在第8章中還將會看到,在聲明部分中要對所調用的函數進行聲明。執行部分:由若干個語句組成。一個函數名后面必須跟一對圓括弧,函數參數可以沒有,如mai76當然,在某些情況下也可以沒有聲明部分(例如,例1.1)。甚至可以既無聲明部分,也無執行部分。如:dump(){}它是一個空函數,什么也不干,但這是合法的。(3)一個C程序總是從main函數開始執行的,而不論main函數在整個程序中的位置如何(main函數可以放在程序最前頭,也可以放在程序最后,或在一些函數之前,在另一些函數之后)。(4)C程序書寫格式自由,一行內可以寫幾個語句,一個語句可以分寫在多行上。C程序沒有行號,當然,在某些情況下也可以沒有聲明部分(例如,例1.1)。甚至77也不像FORTRAN或COBOL那樣嚴格規定書寫格式(語句必須從某一列開始書寫)。(5)每個語句和數據定義的最后必須有一個分號。分號是C語句的必要組成部分。例如:c=a+b;分號不可少。即使是程序中最后一個語句也應包含分號(這是和PASCAL語言不同的)。(6)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數scanf和printf等函數來完成的。C對輸入輸出實行“函數化”。由于輸入輸出操作牽涉到具體的計算機設備,把輸入輸出操作放在函數中處理,就可以使C語言本身的規模較小,也不像FORTRAN或COBOL那樣嚴格規定書寫格式(語句78編譯程序簡單,很容易在各種機器上實現,程序具有可移植性。當然,不同的C語言系統需要對函數庫中的函數作不同的處理。不同的C系統除了提供函數庫中的標準函數外,還按照硬件的情況提供一些專門的函數。因此不同的系統所提供的函數個數和功能是有所不同的。(7)可以用/*……*/對C程序中的任何部分作注釋。一個好的、有使用價值的源程序都應當加上必要的注釋,以增加程序的可讀性。編譯程序簡單,很容易在各種機器上實現,程序具有可移植性。當791.4C程序的上機步驟我們已經看到了一些用C語言編寫的程序。為了使計算機能按照人們的意志進行工作,必須根據問題的要求,編寫出相應的程序。所謂程序,就是一組計算機能識別和執行的指令。每一條指令使計算機執行特定的操作。程序可以用高級語言(例如QBASIC,FORTRAN,PASCAL,C等)編寫。用高級語言編寫的程序稱為“源程序”(sourceprogram)。從根本上說,計算機只能識別和執行由0和1組成的二進制的指令,而不能識別和執行用高級語言寫的指令。為了使計算機能執行高級語言源程序,必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進制形式的“目標程序”,然后將該目標程序與系統的函數庫和其他目標程序連接起來,形成可執行的目標程序。1.4C程序的上機步驟我們已經看到了一些用C語言編寫的程80圖1.1圖1.181在編好一個C源程序后,如何上機運行呢?在紙上寫好一個程序后,要經過以下幾個步驟:上機輸入與編輯源程序對源程序進行編譯與庫函數連接運行目標程序這樣幾個步驟。以上過程如圖1.1所示。其中實線表示操作流程,虛線表示文件的輸入輸出。例如,編輯后得到一個源程序文件f.c,然后在進行編譯時再將源程序文件f.c輸入,經過編譯得到目標程序文件f.obj,再將目標程序文件f.obj輸入內存,與系統提供的庫函數等連接,得到可執行的目標程序文件f.exe,最后把f.exe調入內存并使之運行。在了解了C語言的初步知識后,讀者最好上機運行一個C程序,以建立對C程序的初步認識。在編好一個C源程序后,如何上機運行呢?在紙上寫好一個程序后82下面分別就三種不同的環境下運行C程序作一簡單介紹。1.用TurboC運行C程序的步驟TurboC是在微機上廣泛使用的編譯程序。它具有方便、直觀、易用的界面和豐富的庫函數。它向用戶提供一個集成環境,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,使用十分方便。為了能使用TurboC,必須先將TurboC編譯程序裝入磁盤的某一目錄下,例如放在C盤根目錄下一級TC子目錄下。下面分別就三種不同的環境下運行C程序作一簡單介紹。83圖1.2(1)調用TurboC程序。如果用戶的當前目錄是TurboC編譯程序所在的子目錄(例如TC子目錄),只需從鍵盤鍵入“tc”命令即可:圖1.2(1)調用TurboC程序。如果用戶的當前目錄84C:\TC>tc屏幕上出現TurboC集成環境,見圖1.2所示。從圖1.2可以看到在集成環境的上部,有一行“主菜單”,其中包括下面8個菜單項:FileEditRunCompileProjectOptionDebugbreak/watch用戶可以通過以上菜單項來選擇使用TurboC集成環境所提供的TurboC的各項主要功能。以上8個菜單項分別代表:文件操作、編輯、運行、編譯、項目文件、選項、調試、中斷/觀察等功能。用鍵盤上的“←”和“→”鍵可以選擇菜單條中所需要的菜單項,被選中的項以“反相”圖1.3形式顯示C:\TC>tc85
(例如主菜單中的各項原來以白底黑字顯示,被選中時改為以黑底白字顯示)。此時若按回車鍵,就會出現一個下拉菜單。例如在選中“File”菜單并按回車鍵后,屏幕上“File”下面出現下拉菜單,見圖1.3所示。它是一個子菜單,提供多項選擇??梢杂谩啊辨I選擇所需要的項。例如選擇“New”處,并按回車鍵,表示要建立一個新的C源程序。
圖1.3(例如主菜單中的各項原來以白底黑字顯示,被選中時改為以黑底86如果選擇“Load”,并按回車鍵,表示要調入一個已有的源文件,此時屏幕上出現一個對話框(見圖1.4)。要求你輸入該文件的名字。用戶可輸入該文件名,例如:tc1.c,如果已存在此文件,則系統會將此文件調入內存并顯示在屏幕上。此時自動轉為編輯(Edit)狀態。如果原來不存在此文件名,則系統會建立一個以指定的名字命名的新文件。圖1.4如果選擇“Load”,并按回車鍵,表示要調入一個已有的87(2)編輯源文件。在編輯(Edit)狀態下可以根據需要輸入或修改源程序。(3)編譯源程序。選擇“Compile”菜單并在其下拉菜單中選擇“CompiletoOBJ”,則進行編譯,得到一個后綴為.obj的目標程序(為方便起見,在一般書刊中,以上菜單的選擇以“Compile/CompiletoOBJ”表示)。然后再選菜單“Compile/LinkEXEfile”,進行連接操作,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CGCC 39-2019干磨米粉
- T/CECS 10352-2023建筑外墻裝飾板自清潔性能技術要求
- T/CECS 10346-2023供水用不銹鋼閥門通用技術條件
- T/CECS 10310-2023水性聚氨酯防水涂料
- T/CCT 007-2024煤化工廢水處理運營能力評價
- T/CCT 002-2019煤化工副產工業氯化鈉
- T/CCMA 0173-2023流動式起重機用高性能平衡閥
- T/CCMA 0120-2021瀝青冷再生廠拌設備
- T/CCMA 0105-2020綠化綜合養護車
- T/CCIAS 023-2023輕鹽榨菜
- 國內外液壓機技術現狀及發展趨勢
- 特種設備風險管控清單
- 指南針私享家版出租價格
- 一年級100以內計算練習題(口算、豎式)-100以內的計算題
- 2023-2024年整形外科學(副高)考試參考題庫(真題考點版)帶答案解析
- 廣東省中山市八年級下學期期末考試語文試題
- 【淺析如何將游戲化課程融入幼兒一日活動之中2600字】
- 雙減背景下高中語文優化作業設計實踐與研究
- 《企業財務現狀的杜邦分析-以大疆科技為例》開題報告(含提綱)2400字
- 道德與法治六年級下冊7《多元文化 多樣魅力》(課件)
- 中醫治療頸椎病課件完整版
評論
0/150
提交評論