版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一講
程序設(shè)計基礎(chǔ)周水庚計算機科學(xué)與工程系2005年9月7日2025/1/201《程序設(shè)計》-2005秋提要程序設(shè)計基本概念結(jié)構(gòu)化程序設(shè)計C語言基礎(chǔ)知識高級語言程序開發(fā)環(huán)境基本知識小結(jié)2025/1/202《程序設(shè)計》-2005秋提要程序設(shè)計基本概念結(jié)構(gòu)化程序設(shè)計C語言基礎(chǔ)知識高級語言程序開發(fā)環(huán)境基本知識小結(jié)2025/1/203《程序設(shè)計》-2005秋什么是程序?程序(Program)就是供計算機執(zhí)行后,能完成特定功能的指令序列(Instructionssequence)程序=計算機指令序列程序包含兩方面的內(nèi)容數(shù)據(jù)對象(Objects)及數(shù)據(jù)對象之間關(guān)系數(shù)據(jù)結(jié)構(gòu)(Datastructure)對這些對象的處理過程算法(Algorithm)2025/1/204《程序設(shè)計》-2005秋數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)由某一數(shù)據(jù)對象及該對象中所有數(shù)據(jù)成員之間的關(guān)系組成。記為:Data_Structure={D,R}其中,D是數(shù)據(jù)對象,R是該對象中所有數(shù)據(jù)成員之間的關(guān)系的有限集合2025/1/206《程序設(shè)計》-2005秋數(shù)據(jù)結(jié)構(gòu)(續(xù))程序的處理對象是描述客觀事物的數(shù)據(jù)由于客觀事物的多樣性,會有不同形式的數(shù)據(jù)整數(shù)、實數(shù)、字符,以及所有計算機能夠接收和處理的各種各樣符號集合在程序中,形式不同的數(shù)據(jù)采用數(shù)據(jù)類型來標識變量的數(shù)據(jù)類型說明變量可能取的值的集合、施于變量的操作的集合2025/1/207《程序設(shè)計》-2005秋數(shù)據(jù)結(jié)構(gòu)(續(xù))數(shù)據(jù)類型一組形式相同的數(shù)據(jù)集,對這組數(shù)據(jù)可施行的一組操作集對數(shù)據(jù)結(jié)構(gòu)的總括數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)對象及其相互關(guān)系和構(gòu)造方法程序的數(shù)據(jù)結(jié)構(gòu)描述了程序中的數(shù)據(jù)間的組織形式和結(jié)構(gòu)關(guān)系2025/1/208《程序設(shè)計》-2005秋算法算法即問題的求解方法算法由一系列求解步驟組成。算法的描述由經(jīng)明確說明的一組簡單指令和規(guī)則組成,計算機按規(guī)則執(zhí)行其中的指令能在有限的步驟內(nèi)解決一個問題或者完成一個函數(shù)的計算算法要求組成算法的規(guī)則和步驟的意義應(yīng)是唯一確定的,是沒有二義性的2025/1/209《程序設(shè)計》-2005秋算法(續(xù))算法中的操作是有序的,必須按算法指定的操作順序執(zhí)行,能在有限步驟后給出問題的結(jié)果求解同一問題可能有多種算法,選擇算法主要考慮正確性可靠性簡單性易理解性執(zhí)行效率空間(內(nèi)存和磁盤)代價等2025/1/2010《程序設(shè)計》-2005秋算法(續(xù))描述算法的常用工具有流程圖(又稱框圖)流程圖是算法的圖形描述,流程圖往往比程序更直觀清晰,容易閱讀和理解,它不僅可以作為編寫程序的依據(jù),也是交流算法思想的重要工具在逐步求精的結(jié)構(gòu)化程序設(shè)計方法中,目前多數(shù)采用結(jié)構(gòu)化的偽代碼(pseudocode)來描述算法2025/1/2011《程序設(shè)計》-2005秋數(shù)據(jù)結(jié)構(gòu)vs.算法明確了問題的算法,才能較好設(shè)計數(shù)據(jù)結(jié)構(gòu)要選擇好算法,又常常依賴于合理的數(shù)據(jù)結(jié)構(gòu)程序是和數(shù)據(jù)結(jié)構(gòu)不可分割的。程序在描述算法同時,也必須完整地描述作為算法的操作對象的數(shù)據(jù)結(jié)構(gòu)。對于一些復(fù)雜的問題,常有因數(shù)據(jù)的表示方式和結(jié)構(gòu)的差異,問題的抽象求解算法也會完全不同2025/1/2012《程序設(shè)計》-2005秋程序的性質(zhì)目的性程序有明確的目的,程序運行時能完成賦予它的功能分步性程序為完成其復(fù)雜的功能,由一系列計算機可執(zhí)行的步驟組成有序性程序的執(zhí)行步驟是有序的,不可隨意改變程序步驟的執(zhí)行順序有限性程序是有限的指令序列,程序所包含的步驟是有限的操作性有意義的程序總是對某些對象進行操作,使其改變狀態(tài),完成其功能2025/1/2013《程序設(shè)計》-2005秋什么是程序設(shè)計?程序設(shè)計(Programdesign):設(shè)計和編制程序的過程設(shè)計程序:數(shù)據(jù)結(jié)構(gòu)設(shè)計和算法設(shè)計編制程序:把設(shè)計轉(zhuǎn)化為某種程序語言的代碼程序設(shè)計需要程序設(shè)計方法–軟件工程(SoftwareEngineering)方法學(xué)結(jié)構(gòu)化設(shè)計方法、面向?qū)ο蠓椒ǔ绦蛟O(shè)計語言–程序語言學(xué)Basic,Pascal,C,C++,Java,C#……2025/1/2014《程序設(shè)計》-2005秋什么是好的程序?高效(Efficient)可靠(Reliable)易讀(Easytoread)可維護(Maintainable)可重用(Re-usable)可移植(Portable)……2025/1/2015《程序設(shè)計》-2005秋什么是程序設(shè)計語言?程序設(shè)計語言是人與計算機對話的工具,是用來書寫計算機程序的語言人機語言(human-machinelanguage)程序設(shè)計語言分三類機器語言(Machinelanguage)匯編語言(Assemblylanguage)高級語言(High-levellanguage)2025/1/2016《程序設(shè)計》-2005秋程序設(shè)計語言High-levellanguageMachinelanguageAssemblylanguage2025/1/2017《程序設(shè)計》-2005秋機器語言機器語言:計算機的指令系統(tǒng)計算機都只能直接執(zhí)行由其自身機器語言編寫的程序機器語言與計算機的硬件密切相關(guān)機器語言中的計算機指令通常用一個二進制形式的代碼,由若干位1和0組成一條計算機指令指示計算機一次完成一個最基本的操作2025/1/2018《程序設(shè)計》-2005秋匯編語言匯編語言:用類英語單詞縮寫的符號指令代替機器語言的二進制代碼指令用匯編語言編寫的程序在計算機上執(zhí)行,先要將用匯編語言編寫的源程序轉(zhuǎn)換成機器語言程序。稱完成這個轉(zhuǎn)換功能的程序為“匯編程序“(assembler)2025/1/2019《程序設(shè)計》-2005秋高級程序最接近自然語言的程序設(shè)計語言主要由語句(statements)構(gòu)成,語句是要計算機完成任務(wù)的命令有統(tǒng)一的語法,獨立于具體機器,便于人們編碼,閱讀和理解用高級語言編寫的程序(源程序)在計算機上執(zhí)行,先要由編譯器(也稱為編譯程序)將源程序轉(zhuǎn)換成機器語言程序既能方便地描述客觀對象,又能借助于編譯器為計算機所接受的語言2025/1/2020《程序設(shè)計》-2005秋機器語言/匯編語言/高級語言機器語言計算機匯編程序解釋器編譯器高級語言匯編語言AssemblerInterpreterCompiler2025/1/2021《程序設(shè)計》-2005秋高級語言分類目前的高級語言可分三類面向過程的語言(Procedurallanguage)面向問題的語言(Declarativelanguage)描述語言面向?qū)ο蟮恼Z言(Object-orientedlanguage)2025/1/2022《程序設(shè)計》-2005秋面向過程的語言早期最流行最常用的程序設(shè)計語言為面向過程型的語言Cobol,Fortran,Basic,C,……可獨立于計算機編寫程序,但編寫程序時,程序不僅要說明做什么(what),更重要的是非常詳細地告訴計算機如何做(how),程序需要詳細描述解題的過程和細節(jié)2025/1/2023《程序設(shè)計》-2005秋面向問題的語言不必關(guān)心問題的求解算法和求解的過程,只需指出問題是做什么,數(shù)據(jù)的輸入和輸出形式,就能得到所需結(jié)果數(shù)據(jù)庫查詢和操縱語言:SQL(StructuredQueryLanguage)語言邏輯語言/專家系統(tǒng)語言:Prolog,Lisp等2025/1/2024《程序設(shè)計》-2005秋面向?qū)ο蟮恼Z言目的是克服面向過程語言過分強調(diào)求解過程細節(jié),程序不易復(fù)用的缺點引入了對象、消息、類、繼承、封裝、抽象、多態(tài)性等機制和概念用面向?qū)ο笳Z言進行程序設(shè)計時,以問題中的對象為基礎(chǔ),將具有類似性質(zhì)的對象抽象成類,利用繼承機制,對差異進行程序設(shè)計是目前的主流編程語言:C++,Java2025/1/2025《程序設(shè)計》-2005秋程序設(shè)計語言分類與自然語言親密關(guān)系機器語言、匯編語言、高級語言描述/求解問題方式面向過程語言:Basic,Pascal,C面向問題語言:SQL,Lisp,Prolog面向?qū)ο笳Z言:C++,Java程序設(shè)計風(fēng)格結(jié)構(gòu)化語言Pascal,C,C++,Java非結(jié)構(gòu)化語言Cobol,Fortran,Basic2025/1/2026《程序設(shè)計》-2005秋提要程序設(shè)計基本概念結(jié)構(gòu)化程序設(shè)計C語言基礎(chǔ)知識高級語言程序開發(fā)環(huán)境基本知識小結(jié)2025/1/2027《程序設(shè)計》-2005秋結(jié)構(gòu)化程序設(shè)計方法程序結(jié)構(gòu)自頂向下模塊化設(shè)計方法模塊算法的逐步求精(stepwiserefinement)設(shè)計方法用結(jié)構(gòu)化控制結(jié)構(gòu)描述算法和編寫程序2025/1/2028《程序設(shè)計》-2005秋自頂向下模塊化設(shè)計方法限制程序復(fù)雜性是程序設(shè)計核心程序結(jié)構(gòu)自頂向下模塊化設(shè)計方法就是把大程序按功能劃分成一些較小的部分,每個完成獨立功能分解模塊的原則是簡單性、獨立性和完整性。模塊化設(shè)計方法開發(fā)程序,使程序具有較高的可靠性和靈活性,同時便于程序的測試和維護2025/1/2029《程序設(shè)計》-2005秋自頂向下模塊化設(shè)計方法(續(xù))在用模塊化方法劃分程序模塊時,應(yīng)盡量讓模塊具有如下良好性質(zhì):模塊具有單一入口和單一出口模塊不宜過大,模塊功能單一模塊的執(zhí)行不對環(huán)境產(chǎn)生副作用讓模塊與環(huán)境的聯(lián)系僅限于輸入和輸出參數(shù),模塊的內(nèi)部結(jié)構(gòu)與調(diào)用它的程序無關(guān)盡量用模塊的名字調(diào)用模塊2025/1/2030《程序設(shè)計》-2005秋模塊算法逐步求精設(shè)計方法程序設(shè)計的基本方法是抽象、枚舉、歸納抽象包括算法抽象和數(shù)據(jù)抽象算法抽象是指算法的尋求(或開發(fā))采用逐步求精、逐層分解的方法數(shù)據(jù)抽象也指在算法抽象的過程中逐步完善數(shù)據(jù)結(jié)構(gòu)和引入新的數(shù)據(jù)及確定關(guān)于數(shù)據(jù)的操作2025/1/2031《程序設(shè)計》-2005秋逐步求精設(shè)計方法(續(xù))算法設(shè)計采用逐步求精設(shè)計方法,先設(shè)計出一個抽象算法,這是一個在抽象數(shù)據(jù)上實施一系列抽象操作的算法,由粗略的控制結(jié)構(gòu)和抽象的計算步驟組成。抽象操作只指明“做什么”,對這些抽象操作的細化就是想方設(shè)法回答它“如何做”采用逐步求精的方法,由粗到細,將抽象步驟進一步分解成若干子任務(wù)。分而治之,對仍不具體的抽象子任務(wù)再進行分解。如此反復(fù)地一步步細化,算法越來越具體,抽象成分越來越少,直至可以編程為止2025/1/2032《程序設(shè)計》-2005秋程序的基本結(jié)構(gòu)單元順序結(jié)構(gòu)條件選擇結(jié)構(gòu)IfcThenop1Elseop2循環(huán)結(jié)構(gòu)DoWhile循環(huán)結(jié)構(gòu)While循環(huán)結(jié)構(gòu)For循環(huán)結(jié)構(gòu)任何可計算問題,可用上述三種結(jié)構(gòu)編程解決2025/1/2033《程序設(shè)計》-2005秋順序結(jié)構(gòu)把復(fù)雜的計算工作分解成一系列逐條執(zhí)行的操作序列順序結(jié)構(gòu)就是為把一個復(fù)雜的計算用若干簡單計算的順序執(zhí)行提供控制手段。順序結(jié)構(gòu)執(zhí)行時,從序列的第一個操作開始,順序執(zhí)行序列中的操作,直至序列的最后一個操作執(zhí)行后結(jié)束2025/1/2034《程序設(shè)計》-2005秋順序結(jié)構(gòu)實例實例:交換變量x和y的值可分解為順序執(zhí)行的三個操作步驟:{temp=x;/*將x的值暫存于temp*/x=y;/*將x置成y的值*/
y=temp;/*將y置成temp的值*/}2025/1/2035《程序設(shè)計》-2005秋條件選擇結(jié)構(gòu)條件選擇結(jié)構(gòu)有一個判斷條件和兩個供選擇分支操作組成一般形式:
if(判斷條件)
分支操作1;
else分支操作2;2025/1/2036《程序設(shè)計》-2005秋條件選擇結(jié)構(gòu)執(zhí)行過程先計算判斷條件,如判斷條件的值為真,即條件成立,則執(zhí)行分支操作1否則,若判斷條件的值為假,即條件不成立,則執(zhí)行分支操作2注意,無論判斷條件為何值,條件選擇結(jié)構(gòu)只執(zhí)行分支操作1或分支操作2之一條件選擇結(jié)構(gòu)中的分支又可以是任何控制結(jié)構(gòu),當分支操作又是條件選擇結(jié)構(gòu)時,就呈現(xiàn)嵌套(nested)的條件選擇結(jié)構(gòu)2025/1/2037《程序設(shè)計》-2005秋實例intmax(intx,inty)/*定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型*/{intz;/*max函數(shù)中的聲明部分,定義本函數(shù)中用到的變量z為整型*/
if(x>y)z=x;elsez=y;return(z);}2025/1/2038《程序設(shè)計》-2005秋循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)為描述循環(huán)操作提供控制手段在C中,循環(huán)結(jié)構(gòu)有以下三種:while循環(huán)結(jié)構(gòu)do-while循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)2025/1/2039《程序設(shè)計》-2005秋while循環(huán)結(jié)構(gòu)由一個循環(huán)條件和一個循環(huán)操作語句(稱為循環(huán)體)組成一般形式:
while(循環(huán)條件)
循環(huán)體2025/1/2040《程序設(shè)計》-2005秋while循環(huán)結(jié)構(gòu)執(zhí)行過程每次循環(huán)前,先求循環(huán)條件的值,當條件成立時,就執(zhí)行循環(huán)體,并接著再次求循環(huán)條件的值,以確定循環(huán)體是否再次被執(zhí)行當循環(huán)條件的值一開始為假,或某次循環(huán)后其值為假,則結(jié)束循環(huán)操作2025/1/2041《程序設(shè)計》-2005秋實例計算5!:voidmain(){inti,t;t=1;i=2;
while(i<=5){t=t*i;i=i+1;}printf("%d",t);}2025/1/2042《程序設(shè)計》-2005秋do-while循環(huán)結(jié)構(gòu)由一個循環(huán)條件和一個循環(huán)操作語句(稱為循環(huán)體)組成一般形式:
do
循環(huán)體
while(循環(huán)條件);2025/1/2043《程序設(shè)計》-2005秋do-while循環(huán)結(jié)構(gòu)執(zhí)行過程每次循環(huán)前,先執(zhí)行循環(huán)體,接著再求循環(huán)條件的值,當條件成立時,再執(zhí)行循環(huán)體如此反復(fù),直到循環(huán)條件的值為假,結(jié)束循環(huán)操作2025/1/2044《程序設(shè)計》-2005秋實例求s=1+2+3+…+100用do-while語句可描述成:
s=0;i=1;do{s+=i;i++;}while(i<=100);2025/1/2045《程序設(shè)計》-2005秋for循環(huán)結(jié)構(gòu)由為循環(huán)有關(guān)變量賦初值的表達式、循環(huán)條件、循環(huán)后對變量的修正表達式和循環(huán)執(zhí)行的循環(huán)體組成一般形式:for(賦初值表達式;循環(huán)條件表達式;修正表達式)
循環(huán)體2025/1/2046《程序設(shè)計》-2005秋for循環(huán)結(jié)構(gòu)執(zhí)行過程循環(huán)前,先執(zhí)行賦初值表達式,為循環(huán)中的有關(guān)變量賦初值每輪循環(huán)開始,先求循環(huán)條件的值,若條件不成立,則結(jié)束循環(huán)當條件成立時,執(zhí)行循環(huán)體;然后求變量修正表達式,更新有關(guān)變量的值;接著再次求循環(huán)條件如此反復(fù),直到條件為假,結(jié)束循環(huán)2025/1/2047《程序設(shè)計》-2005秋實例求s=1+2+3+…+100用for語句可以寫成:for(s=0,i=1;i<=100;i++)s+=i;2025/1/2048《程序設(shè)計》-2005秋提要程序設(shè)計基本概念結(jié)構(gòu)化程序設(shè)計C語言基礎(chǔ)知識高級語言程序開發(fā)環(huán)境基本知識小結(jié)2025/1/2049《程序設(shè)計》-2005秋DennisM.Ritchie(丹尼斯
里奇)2025/1/2050《程序設(shè)計》-2005秋DennisM.Ritchie(續(xù))HarvardUniversity獲學(xué)士和博士學(xué)位1967年加入Bell實驗室工作至今1972年發(fā)明C語言1978年,BrianW.Kernighan和DennisM.Ritchie合著《TheCProgrammingLanguage》Turing獎(1983)和IEEE先驅(qū)獎(1992)獲得者、美國工程院院士2025/1/2051《程序設(shè)計》-2005秋C語言發(fā)展史1960年出現(xiàn)的ALGOL60是一種面向問題的高級語言,它離硬件比較遠,不宜用來編寫系統(tǒng)程序1963年英國的劍橋大學(xué)推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實現(xiàn)1967年英國劍橋大學(xué)的MatinRichards對CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言2025/1/2052《程序設(shè)計》-2005秋C語言發(fā)展史(續(xù))1970年美國貝爾實驗室的KenThompson以BCPL語言為基礎(chǔ),設(shè)計出了簡單且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫了第一個UNIX操作系統(tǒng)。但B語言過于簡單,功能有限1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優(yōu)點(精練,接近硬件),又克服了它們的缺點(過于簡單,數(shù)據(jù)無類型等)。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版2025/1/2053《程序設(shè)計》-2005秋C語言發(fā)展史(續(xù))1983年,美國國家標準化協(xié)會(ANSI)根據(jù)C語言問世以來各種版本對C的發(fā)展和擴充,制定了新的標準,稱為ANSIC1987年,ANSI又公布了新標準—87ANSIC1990年,國際標準化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISOC的標準(ISO9899—1990)2025/1/2054《程序設(shè)計》-2005秋一個C程序?qū)嵗粋€只輸出一行信息的C程序#include<stdio.h>voidmain()/*主函數(shù)*/{
printf("Thisbookis<ProgrammingwithCandc++languages>.\n");}2025/1/2055《程序設(shè)計》-2005秋C程序特點一個C程序有一個名為main的主函數(shù)主函數(shù)前的關(guān)鍵字void表示該函數(shù)不返回結(jié)果在函數(shù)名之后要有一對圓括號,里面定義參數(shù)函數(shù)體用花括號“{}”括住?;ɡㄌ柨梢杂脕砝ㄆ鹑魏我唤MC代碼,從而構(gòu)成復(fù)合語句或分程序簡單C語句之后有一個分號“;”程序中的“/*…*/”表示程序的注釋部分。注釋便于人閱讀程序,對程序編譯和運行都沒有作用#include<stdio.h>是編譯預(yù)處理命令行,指明有關(guān)輸入和輸出標準函數(shù)也將是程序的一部分2025/1/2056《程序設(shè)計》-2005秋【例】讀入兩個整數(shù),輸出它們的和/*1*/#include<stdio.h>/*2*/voidmain()/*3*/{/*變量定義部分*//*4*/
intx,y,sum;/*定義x,y,sum*//*5*/
/*以下為語句序列*//*6*/
printf("Inputxandy\n");/*提示輸入數(shù)據(jù)*//*7*/
scanf("%d%d",&x,&y);/*輸入x和y的值*//*8*/
sum=x+y;/*完成x+y的計算,求sum=x+y*//*9*/printf("x+y=%d\n",sum);/*輸出結(jié)果*//*10*/}2025/1/2057《程序設(shè)計》-2005秋【例】利用公式:C=(5/9)(F-32)輸出F氏溫度與C氏溫度對照表,設(shè)已知F氏溫度取0、20、…、200。#include<stdio.h>voidmain(){floatf,c;/*變量定義*/
intlower,upper,step;lower=0;upper=200;step=20;f=lower;while(f<=upper){/*循環(huán)計算*/
c=5.0/9.0*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);f=f+step;}}2025/1/2058《程序設(shè)計》-2005秋【例】輸入兩個實數(shù),輸出它們中的小的數(shù)#include<stdio.h>voidmain(){floatx,y,c;/*變量定義*/
floatmin(float,float);/*函數(shù)說明*/
printf(“輸入x和y.\n");scanf("%f%f",&x,&y);c=min(x,y);/*調(diào)用函數(shù)min()*/printf("MIN(%.2f,%.2f)=%.2f\n",x,y,c);}floatmin(floata,floatb){floattemp;/*函數(shù)使用的變量的定義*/
if(a<b)temp=a;elsetemp=b; returntemp;/*返回temp到調(diào)用min()函數(shù)處*/}2025/1/2059《程序設(shè)計》-2005秋函數(shù)(Function)C程序由若干函數(shù)組成。每個程序都有一個主函數(shù)-main()函數(shù)一個函數(shù)定義由函數(shù)頭和函數(shù)體組成。函數(shù)頭包括函數(shù)屬性、函數(shù)返回值類型、函數(shù)名、函數(shù)形式參數(shù)名,形式參數(shù)類型。函數(shù)結(jié)構(gòu)的一般形式:
函數(shù)返回值類型函數(shù)名(參數(shù)說明表){說明和定義部分;執(zhí)行語句序列}2025/1/2060《程序設(shè)計》-2005秋函數(shù)(續(xù))函數(shù)可以沒有參數(shù),但函數(shù)名之后的一對圓括號是必須的函數(shù)體是函數(shù)頭之后用一對花括號括住的部分。函數(shù)體用于描述實現(xiàn)函數(shù)功能的代碼,它又包括:說明和定義部分說明數(shù)據(jù)結(jié)構(gòu)(類型)和定義函數(shù)專用的局部變量等執(zhí)行部分由C語句和控制結(jié)構(gòu)代碼組成2025/1/2061《程序設(shè)計》-2005秋【例】統(tǒng)計輸入字符行中各數(shù)字符、空白符與制表符符以及其它字符的出現(xiàn)次數(shù)。#include<stdio.h>voidmain(){intc,k,nWhite,nOther;intnDigit[10];/*定義有10個數(shù)字符的計數(shù)器*/
nWhite=nOther=0;for(k=0;k<10;k++)
nDigit[k]=0;printf(“Enterstringline\n”);while((c=getchar())!=’\n’)if(c>=’0’&&c<=’9’)/*如是數(shù)字符*/++nDigit[c–’0’];/*對應(yīng)數(shù)字符的計數(shù)器增1*/
elseif(c==’’||c==’\t’)++nWhite;
else++nOther;/*其它字符計數(shù)器增1*/
for(k=0;k<10;k++)/*輸出對應(yīng)數(shù)字符及其出現(xiàn)次數(shù)*/
printf(”%c:%d\n”,’0’+k,nDigit[k]);printf(”whitespace:%d\nother:%d\n\n”,nWhite,nOther);}2025/1/2062《程序設(shè)計》-2005秋C語言詞匯基本符號數(shù)字10個(0~9)英文字母大、小寫各26個(A~Z,a~z)下線字符“_”其他構(gòu)成特殊符號的字符集基本詞匯字面形式常量特殊符號(運算符)關(guān)鍵字標識符(命名數(shù)據(jù)對象)2025/1/2063《程序設(shè)計》-2005秋關(guān)鍵詞(Keyword)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticstructswitchtypedefunionunsignedvoidvolatilewhile2025/1/2064《程序設(shè)計》-2005秋關(guān)鍵詞(續(xù))下面幾個雖不屬于關(guān)鍵字,但建議把它們看作關(guān)鍵字,不要在程序中隨便使用。它們用在C程序的預(yù)處理命令行中defineundefincludeifdefifndefendiflineelif2025/1/2065《程序設(shè)計》-2005秋標識符(Identifier)作用:用來標識變量、常量、類型、函數(shù)、語句等程序?qū)ο?,C語言用標識符給它們命名命名規(guī)則:在C語言中,一個合理的標識符由英文字母或下線符開頭,后跟或不跟由字母、下線符、數(shù)字符組成的字符列。一般以下線符開頭的標識符作內(nèi)部使用2025/1/2066《程序設(shè)計》-2005秋標識符(續(xù))命名要求:標識符作為程序成分對象的名稱,為了便于聯(lián)想和記憶,建議使用能反映該對象意義的標識符限制:注意不同C系統(tǒng)對標識符的有效字符個數(shù)有不同的規(guī)定。對于限制標識符8個有效字符的系統(tǒng)來說,兩個超過8個字符的不同標識符,當前8個字符依次相同時,系統(tǒng)就認為它們是同一個標識符2025/1/2067《程序設(shè)計》-2005秋C語言數(shù)據(jù)類型三種數(shù)據(jù)類型基本數(shù)據(jù)類型、指針類型、復(fù)合數(shù)據(jù)類型基本數(shù)據(jù)類型三種整型(short,int,long)實型(float,double,longdouble)字符型(char)2025/1/2068《程序設(shè)計》-2005秋C語言數(shù)據(jù)類型(續(xù))復(fù)合數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉指針類型指針類型直接賦予數(shù)據(jù)對象在內(nèi)存中的地址的概念2025/1/2069《程序設(shè)計》-2005秋常量(Constant)在程序運行過程中,其值不能改變或不允許改變的數(shù)據(jù)對象常量按值的表示形式區(qū)分它的類型整型常量:15浮點型常量:5.0字符型常量:’a’指針常量:NULL字符串常量:”ABC”2025/1/2070《程序設(shè)計》-2005秋
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年龍崗區(qū)稅務(wù)局飲用水安全風(fēng)險評估與整改服務(wù)協(xié)議4篇
- 2025版鋁材行業(yè)培訓(xùn)與咨詢服務(wù)合同范本
- 2025年度高新技術(shù)企業(yè)研發(fā)項目成果轉(zhuǎn)化與技術(shù)支持協(xié)議下載2篇
- 2025年度內(nèi)部控制合同管理內(nèi)部控制手冊3篇
- 二零二五版羅絲與吳磊的離婚協(xié)議及子女撫養(yǎng)權(quán)轉(zhuǎn)讓協(xié)議4篇
- 二零二五年度廚師技能競賽與評選活動合同4篇
- 二零二五版特色小鎮(zhèn)物業(yè)合同財務(wù)管理與文化旅游融合協(xié)議3篇
- 二零二五版汽車維修店面使用權(quán)轉(zhuǎn)讓合同模板3篇
- 2025年度新能源產(chǎn)業(yè)合作推廣戰(zhàn)略框架協(xié)議書
- 二零二五年度LED燈具音響設(shè)備研發(fā)生產(chǎn)合作協(xié)議4篇
- 華為HCIA-Storage H13-629考試練習(xí)題
- Q∕GDW 516-2010 500kV~1000kV 輸電線路劣化懸式絕緣子檢測規(guī)程
- 遼寧省撫順五十中學(xué)2024屆中考化學(xué)全真模擬試卷含解析
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 家長心理健康教育知識講座
- GB/T 292-2023滾動軸承角接觸球軸承外形尺寸
- 軍人結(jié)婚函調(diào)報告表
- 民用無人駕駛航空器實名制登記管理規(guī)定
- 北京地鐵6號線
- 航空油料計量統(tǒng)計員(初級)理論考試復(fù)習(xí)題庫大全-上(單選題匯總)
評論
0/150
提交評論