C語(yǔ)言程序設(shè)計(jì)課件.ppt_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語(yǔ)言程序設(shè)計(jì) 陳易明E mail chenym 參考書(shū)K R CPROGRAMMINGLANGUAGE 課時(shí)安排理論課 32學(xué)時(shí)上機(jī)訓(xùn)練 16學(xué)時(shí)考核成績(jī)平時(shí)考勤10 上機(jī)報(bào)告20 期末考試70 參考書(shū)與課時(shí)安排 課程要求 課后請(qǐng)復(fù)習(xí)保持課堂安靜 積極回答問(wèn)題認(rèn)真 獨(dú)立 按時(shí)完成并提交作業(yè)重視上機(jī)實(shí)踐 有效利用上機(jī)時(shí)間 第一章C語(yǔ)言概述 C語(yǔ)言發(fā)展歷史C語(yǔ)言基本特點(diǎn)C語(yǔ)言程序結(jié)構(gòu)編譯和運(yùn)行程序 1 1C語(yǔ)言發(fā)展歷史程序設(shè)計(jì)語(yǔ)言的發(fā)展 CPU指令系統(tǒng) 由0 1序列構(gòu)成的指令碼組成如 10000000加10010000減 用助記符號(hào)描述的指令系統(tǒng)如ADDA B 面向機(jī)器的語(yǔ)言 程序設(shè)計(jì)是數(shù)據(jù)被加工的過(guò)程 程序設(shè)計(jì)關(guān)鍵是定義類 并由類派生對(duì)象 高級(jí)語(yǔ)言 面向開(kāi)發(fā)者的語(yǔ)言以接近人類語(yǔ)言的形式來(lái)表現(xiàn) 具有標(biāo)識(shí)符 關(guān)鍵字 數(shù)據(jù)類型等 按一定的規(guī)則組成程序代碼 便于開(kāi)發(fā)和維護(hù) 可讀和開(kāi)發(fā)性大大增強(qiáng) C語(yǔ)言的發(fā)展史 1972年美國(guó)貝爾實(shí)驗(yàn)室的Dennis M Ritchie設(shè)計(jì)出C語(yǔ)言 并用其將UNIX系統(tǒng)全部改寫(xiě)并實(shí)現(xiàn) C語(yǔ)言的設(shè)計(jì)目的是為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工具語(yǔ)言由于 語(yǔ)言的強(qiáng)大功能和良好的可移植性 C語(yǔ)言先后被移植到各種大 中 小和微型計(jì)算機(jī)上 并得到了廣泛的使用 成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言之一 C語(yǔ)言的前生 1960年出現(xiàn)的Algol60 它是一種面向問(wèn)題的高級(jí)語(yǔ)言 離硬件比較遠(yuǎn) 不適合用來(lái)編寫(xiě)系統(tǒng)程序 1963年英國(guó)劍橋大學(xué)推出了 組合編程語(yǔ)言 CombinedProgrammingLanguage CPL 它在Algol60的基礎(chǔ)上更接近于硬件 但規(guī)模較大 難以實(shí)現(xiàn) 因此 1967年劍橋大學(xué)的MatinRichards對(duì)CPL進(jìn)行了簡(jiǎn)化 提出了BCPL BasicCombinedProgrammingLanguage 語(yǔ)言 一切從一個(gè)叫 SpaceTravel 的電子游戲開(kāi)始 C語(yǔ)言的創(chuàng)世紀(jì) 1963年 美國(guó)麻省理工學(xué)院MIT 貝爾實(shí)驗(yàn)室和通用電器公司決定聯(lián)合開(kāi)發(fā)一個(gè)操作系統(tǒng)MULTICS 其設(shè)計(jì)目標(biāo)是 公用計(jì)算服務(wù)系統(tǒng) 那時(shí) 計(jì)算機(jī)還很昂貴 主要是安裝在一些政府部門 企業(yè)和科研機(jī)構(gòu) 一般的家庭買不起 但有時(shí)人們又想使用計(jì)算機(jī)來(lái)完成一些計(jì)算任務(wù) 所以該項(xiàng)目的出發(fā)點(diǎn)是想提供一種計(jì)算服務(wù) 在城市里布置一臺(tái)計(jì)算機(jī)主機(jī) 然后用戶在自己的家里 使用終端并且通過(guò)電話線來(lái)接入這臺(tái)主機(jī) 終端很便宜 只有顯示器 鍵盤(pán)和通信模塊 每個(gè)家庭都買得起 他們使用終端來(lái)連接計(jì)算機(jī) 然后像使用水 電 煤氣等生活資源那樣來(lái)使用這臺(tái)計(jì)算機(jī)的計(jì)算資源 并繳納相應(yīng)的費(fèi)用 這樣一來(lái) 在主機(jī)上必須運(yùn)行一個(gè)操作系統(tǒng) 來(lái)對(duì)整個(gè)系統(tǒng)的資源進(jìn)行管理 MULTICS系統(tǒng)非常龐大 復(fù)雜 它的研制難度遠(yuǎn)遠(yuǎn)超出了人們的預(yù)料 因此 貝爾實(shí)驗(yàn)室和通用電器公司先后退出了這個(gè)項(xiàng)目 1969年 當(dāng)貝爾實(shí)驗(yàn)室退出該項(xiàng)目后 它的一個(gè)研究員KenThompson在MULTICS操作系統(tǒng)上編寫(xiě)了一個(gè)名為 太空旅行 spacetravel 的游戲 模擬了一個(gè)飛行員駕駛著一艘宇宙飛船在太陽(yáng)系中遨游 并在各個(gè)星體上著陸 后來(lái) 由于無(wú)法繼續(xù)訪問(wèn)MULTICS操作系統(tǒng) 他就在貝爾實(shí)驗(yàn)室里找了一臺(tái)沒(méi)有人使用的PDP 7計(jì)算機(jī) 想把游戲程序移植到這臺(tái)機(jī)器上 但是 當(dāng)時(shí)計(jì)算機(jī)硬件所能執(zhí)行的都是用機(jī)器語(yǔ)言來(lái)描述的指令 而對(duì)于不同類型的計(jì)算機(jī)來(lái)說(shuō) 它們的機(jī)器語(yǔ)言是不一樣的 所以在MULTICS系統(tǒng)上運(yùn)行的程序 不能直接把它搬到PDP 7這種類型的計(jì)算機(jī)上去運(yùn)行 因此 Thompson就和貝爾實(shí)驗(yàn)室的另外一名研究員DennisRitchie 他們兩個(gè)人一起 在另外一臺(tái)GE 635計(jì)算機(jī)上 利用它的操作系統(tǒng) 即GECOS所提供的一個(gè)交叉匯編器 把空間旅行游戲用PDP 7的匯編語(yǔ)言重新編寫(xiě)了一遍 并且生成PDP 7的機(jī)器語(yǔ)言指令 然后用穿孔紙帶的形式把它轉(zhuǎn)移到了PDP 7上面 這樣 就可以玩了 Question 為什么不直接在PDP 7這臺(tái)計(jì)算機(jī)上編程呢 而需要使用第三臺(tái)機(jī)器GE635呢 原因很簡(jiǎn)單 這臺(tái)PDP 7計(jì)算機(jī)之所以沒(méi)人來(lái)用 是因?yàn)樗且慌_(tái)光禿禿的計(jì)算機(jī) 只有硬件而沒(méi)有任何軟件 連匯編程序都沒(méi)有 這樣 人們就沒(méi)有辦法在上面編程 如果實(shí)在想編程的話 只能直接使用機(jī)器語(yǔ)言 但機(jī)器語(yǔ)言都是一些0 1字符串 太難懂了 所以沒(méi)有人愿意使用它 Question 為什么PDP 7計(jì)算機(jī)只是硬件沒(méi)有軟件 當(dāng)時(shí) 計(jì)算機(jī)水平還很落后 很多研究小組申請(qǐng)項(xiàng)目研制計(jì)算機(jī) 僅僅是針對(duì)硬件架構(gòu) 當(dāng)計(jì)算機(jī)做好后 測(cè)試性能后項(xiàng)目組的任務(wù)就完成了 然后再研制更新的計(jì)算機(jī) 如果有需要 則用機(jī)器語(yǔ)言編寫(xiě)程序 然后在紙帶上打上孔 讓計(jì)算機(jī)讀入 有孔 無(wú)孔 分別代表1 0 Question 為什么不直接在GE635上玩游戲呢 答案 一個(gè)字 貴 兩個(gè)字 很貴 三個(gè)字 非常貴 玩一小時(shí)游戲花費(fèi)75美元 當(dāng)時(shí)價(jià)值25桶石油 現(xiàn)在按70美元 桶石油算 約5250美元 后來(lái) Thompson覺(jué)得這臺(tái)PDP 7計(jì)算機(jī)空在那里有點(diǎn)可惜 所以就和Ritchie等人開(kāi)始為它編寫(xiě)一個(gè)新的操作系統(tǒng) 也就是說(shuō) 在硬件的基礎(chǔ)上 再給它增加一些軟 這樣 這臺(tái)機(jī)器就能夠用起來(lái) 就能做更多的事情 他們先是寫(xiě)好了這個(gè)操作系統(tǒng)的文件系統(tǒng)和一組基本的軟件工具 然后再編寫(xiě)了一個(gè)PDP 7匯編語(yǔ)言的編譯器 有了這些軟件工具后 就能直接在PDP 7上編程了 到了1970年 這個(gè)操作系統(tǒng)的基本元素都已經(jīng)完成了 他們給系統(tǒng)起了一個(gè)名字 也就是UNIX 到了1970年的夏季 研究小組得到了一臺(tái)新的 功能更強(qiáng)大的機(jī)器PDP 11 因此需要把UNIX系統(tǒng)從PDP 7移植到PDP 11上面去這項(xiàng)工作非常的煩瑣 因?yàn)檎麄€(gè)系統(tǒng)都是用匯編語(yǔ)言來(lái)編寫(xiě)的 需要把每一條PDP 7匯編語(yǔ)言指令都轉(zhuǎn)換為相應(yīng)的PDP 11匯編語(yǔ)言指令 工作量非常大 更重要的是 這種移植工作是一次性的 如果以后又來(lái)了一臺(tái)新的機(jī)器 那么整個(gè)移植工作又得重新來(lái)過(guò) 所以這是一個(gè)很大的問(wèn)題 為解決這個(gè)問(wèn)題呢 研究小組就開(kāi)始考慮用某種高級(jí)語(yǔ)言來(lái)重寫(xiě)整個(gè)系統(tǒng) 以提高系統(tǒng)的可移植性和可懂性 Thompson為了提高UNIX操作系統(tǒng)的可移植性 想要用某種高級(jí)語(yǔ)言來(lái)重寫(xiě)整個(gè)系統(tǒng) 但是采用哪一種高級(jí)語(yǔ)言來(lái)做這件事呢 他的想法是自己去設(shè)計(jì)一種高級(jí)語(yǔ)言 他以BCPL語(yǔ)言為基礎(chǔ) 又作了進(jìn)一步的簡(jiǎn)化 設(shè)計(jì)出很簡(jiǎn)單而且很接近硬件的B語(yǔ)言 這個(gè)名稱取自于BCPL的第一個(gè)字母 但是B語(yǔ)言過(guò)于簡(jiǎn)單 是一種沒(méi)有數(shù)據(jù)類型的語(yǔ)言 功能很有限 因此 當(dāng)他試圖用B語(yǔ)言來(lái)重寫(xiě)UNIX操作系統(tǒng)時(shí) 效果并不太好 到了1972年 Ritchie在B語(yǔ)言的基礎(chǔ)上又設(shè)計(jì)出了C語(yǔ)言 這個(gè)名稱取自于BCPL的第二個(gè)字母 C語(yǔ)言既保持了BCPL和B語(yǔ)言的精煉 接近硬件等優(yōu)點(diǎn) 又克服了它們過(guò)于簡(jiǎn)單 數(shù)據(jù)無(wú)類型等缺點(diǎn) 所以很快就成為研究小組內(nèi)部的首選編程語(yǔ)言 后來(lái) Ritchie和Thompson兩個(gè)人合作 把整個(gè)UNIX系統(tǒng)用C語(yǔ)言重新寫(xiě)了一遍 這樣 以后再需要移植的時(shí)候 就方便多了 大部分的系統(tǒng)代碼都無(wú)需改動(dòng) 1977年 出現(xiàn)了不依賴于具體機(jī)器的C語(yǔ)言編譯器 使得把一個(gè)C程序從一臺(tái)機(jī)器移植到另一臺(tái)機(jī)器上所需要的工作大大地簡(jiǎn)化了 這就推動(dòng)了UNIX操作系統(tǒng)迅速地在各種類型的機(jī)器上得以實(shí)現(xiàn) 反過(guò)來(lái) 隨著UNIX系統(tǒng)日益廣泛的使用 C語(yǔ)言也得到了迅速地推廣 所以說(shuō) C語(yǔ)言和UNIX系統(tǒng)關(guān)系非常密切 在發(fā)展過(guò)程中它們是相輔相成的 C語(yǔ)言的發(fā)展史告訴我們 1 游戲是推動(dòng)計(jì)算機(jī)軟件技術(shù)發(fā)展的重大推動(dòng)力 2 玩游戲是很耗錢或費(fèi)時(shí)間的 3 適量游戲有助于身心健康 并能極大促進(jìn)電腦水平的提高 Ritchie和Thompson在開(kāi)發(fā)UNIX 很貴的游戲機(jī) 絕對(duì)的 發(fā)燒級(jí) 接受美國(guó)國(guó)家技術(shù)勛章 游戲玩家的終極夢(mèng)想傳說(shuō)中的神器 聲望 100 000 Thompson 左 和Ritchie 中 于1999年接受當(dāng)時(shí)美國(guó)總統(tǒng)克林頓授予的國(guó)家技術(shù)勛章 一九七八年由美國(guó)電話電報(bào)公司 AT T 貝爾實(shí)驗(yàn)室正式發(fā)表了 語(yǔ)言 B W Kernighan和D M Ritchit合著了著名的 THECPROGRAMMINGLANGUAGE 一書(shū) 通常簡(jiǎn)稱為 K R 也有人稱之為 K R 標(biāo)準(zhǔn) 但是 在 K R 中并沒(méi)有定義一個(gè)完整的標(biāo)準(zhǔn)C語(yǔ)言 后來(lái)由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì) AmericanNationalStandardsInstitute 在此基礎(chǔ)上制定了一個(gè)C語(yǔ)言標(biāo)準(zhǔn) 于一九八三年發(fā)表 通常稱之為ANSIC C語(yǔ)言標(biāo)準(zhǔn) 語(yǔ)言版本 目前最流行的 語(yǔ)言有以下幾種 MicrosoftC或稱MSC BorlandTurboC或稱TurboC AT TC這些 語(yǔ)言版本都實(shí)現(xiàn)了ANSIC標(biāo)準(zhǔn) 并在此基礎(chǔ)上各自作了一些擴(kuò)充 使之更加方便 完美 我們學(xué)習(xí)的是TurboC C語(yǔ)言的基本特點(diǎn) 1 C語(yǔ)言被稱為 高級(jí)語(yǔ)言中的低級(jí)語(yǔ)言 這樣說(shuō)不是指它的功能差或難于使用 而是指它具有許多匯編語(yǔ)言等低級(jí)語(yǔ)言才具備的功能 C語(yǔ)言允許直接訪問(wèn)物理地址 能進(jìn)行位操作 能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能 可以直接對(duì)硬件進(jìn)行操作 所以C語(yǔ)言在系統(tǒng)設(shè)計(jì)十分有效 過(guò)去系統(tǒng)軟件只能用匯編語(yǔ)言編寫(xiě) 使用C語(yǔ)言可以減輕程序的負(fù)擔(dān) 提高效率 寫(xiě)出來(lái)程序也更具有可移植性 計(jì)算機(jī)的層次 硬件 Hardware 操作系統(tǒng) OS 應(yīng)用程序 Application 應(yīng)用平臺(tái) 基于平臺(tái)的應(yīng)用程序 低級(jí)語(yǔ)言的地盤(pán) 高級(jí)語(yǔ)言的地盤(pán) C語(yǔ)言的地盤(pán) C語(yǔ)言的基本特點(diǎn) 2 C語(yǔ)言簡(jiǎn)潔 緊湊 使用方便 靈活 ANISC語(yǔ)言只有32個(gè)關(guān)健字 9種控制語(yǔ)句 我們學(xué)習(xí)的TC擴(kuò)充了11個(gè)關(guān)鍵字 一共也才43個(gè)關(guān)鍵字 C語(yǔ)言的基本特點(diǎn) 3 運(yùn)算符豐富 共有34種 C把括號(hào) 賦值 逗號(hào)等都作為運(yùn)算符處理 從而使C的運(yùn)算類型極為豐富 可以實(shí)現(xiàn)其他高級(jí)語(yǔ)言難以實(shí)現(xiàn)的運(yùn)算 4 具有結(jié)構(gòu)化的控制語(yǔ)句 5 語(yǔ)法限制不太嚴(yán)格 程序設(shè)計(jì)自由度大 6 生成目標(biāo)代碼質(zhì)量高 程序執(zhí)行效率高 C語(yǔ)言的基本特點(diǎn) 7 與匯編語(yǔ)言相比 用C語(yǔ)言寫(xiě)的程序可移植性好 8 C語(yǔ)言是程序員的語(yǔ)言 是為專業(yè)程序員設(shè)計(jì)的語(yǔ)言 它實(shí)現(xiàn)了程序員的期望 很少限制 程序設(shè)計(jì)自由度大 方便的控制結(jié)構(gòu) 獨(dú)立的函數(shù) 緊湊的關(guān)鍵字集合和較高的執(zhí)行效率 缺點(diǎn) 語(yǔ)法限制不太嚴(yán) 編譯器不進(jìn)行太多的錯(cuò)誤檢查 程序員在編程如果不注意的話 很容易出現(xiàn)編譯通過(guò)但程序出錯(cuò)的現(xiàn)象 第一個(gè)C語(yǔ)言程序 學(xué)習(xí)任一計(jì)算機(jī)高級(jí)語(yǔ)言的最佳途徑都是編程 對(duì)于任一計(jì)算機(jī)語(yǔ)言 編寫(xiě)的第一個(gè)程序都是輸出一個(gè)字符串 出于對(duì)K R的敬意 一般講解第一個(gè)程序進(jìn)都是選擇K R的 CPROGRAMMINGLANGUAGE 一書(shū)中的第一個(gè)例子 打印 HelloWorld 來(lái)進(jìn)行講解 第一個(gè)C語(yǔ)言程序 如何利用C語(yǔ)言在屏幕上顯示出如下單詞 HelloWorld 實(shí)現(xiàn)過(guò)程 1 編寫(xiě)源程序 2 編譯 將源程序編譯成目標(biāo)文件 obj 3 將目標(biāo)文件鏈接成可執(zhí)行文件 exe 4 運(yùn)行可執(zhí)行文件 第一個(gè)C語(yǔ)言程序 在屏幕上顯示HelloWorld include stdio h main printf helloWorld n 1 編寫(xiě)源程序 存儲(chǔ)為helloworld c 內(nèi)容如下 功能注釋 在屏幕上顯示HelloWorld include stdio h 編譯預(yù)處理 告訴編譯程序在本程序包含標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù) main 主函數(shù) 無(wú)參數(shù) 函數(shù)頭printf HelloWorld n 調(diào)用庫(kù)函數(shù)printf 將Helloworld顯示到屏幕上 n為換行符 函數(shù)尾 編譯預(yù)處理 在C源程序中加入一些 預(yù)處理命令 可以改進(jìn)程序設(shè)計(jì)環(huán)境 提高編程效率 預(yù)處理命令不是C語(yǔ)言本身的組成部分 不能直接對(duì)其進(jìn)行編譯 必須在編譯之前 先對(duì)這些特殊的命令進(jìn)行相應(yīng)的處理 編譯預(yù)處理 C提供的預(yù)處理功能主要有三種 1 文件包含2 宏定義3 條件編譯 所有的預(yù)處理命令 都是以 開(kāi)頭的 1 文件包含 include 文件名 文件名指的是外部的庫(kù)函數(shù)名或源程序名 庫(kù)函數(shù)是由系統(tǒng)建立的具有一定功能的函數(shù)的集合 庫(kù)函數(shù)中存放同類函數(shù)的名稱和對(duì)應(yīng)的目標(biāo)代碼 只要用了 include 庫(kù)函數(shù)名 就可以調(diào)用庫(kù)函數(shù)中的函數(shù) 編譯預(yù)處理 include stdio h 可調(diào)用各種輸入輸出函數(shù) 包括 printf scanf getchar putchar fopen fclose fprintf fsacnf fseek fread fwrite等 C語(yǔ)言程序的基本格式 1 每一個(gè)C程序 都由函數(shù)和變量組成 函數(shù)包含若干用于實(shí)現(xiàn)指定操作的語(yǔ)句 變量在計(jì)算過(guò)程中存儲(chǔ)有關(guān)的值 2 函數(shù)可任意命名 但每一個(gè)C程序中都必須并且只能有一個(gè)名為main的主函數(shù) C程序都是從main函數(shù)開(kāi)始執(zhí)行 include stdio h main printf helloWorld n C語(yǔ)言程序的基本格式 3 函數(shù)必須先定義 后使用 定義函數(shù)時(shí)在函數(shù)名后加一對(duì)圓括號(hào)將變量括起來(lái) 4 由一對(duì)花括號(hào)括起構(gòu)造函數(shù)的語(yǔ)句 稱為函數(shù)體 花括號(hào)后不加分號(hào) main printf helloWorld n C語(yǔ)言程序的基本格式 5 每一條語(yǔ)句的用分號(hào) 做為結(jié)束 說(shuō)明 在以下三種情況下不允許有分號(hào) a 預(yù)處理語(yǔ)句后面不使用分號(hào)b 所定義的函數(shù)的名稱后面不使用分號(hào)c 在右花括號(hào) 后面不使用分號(hào) C語(yǔ)言程序的基本格式 6 源程序中可以有預(yù)處理命令 include命令僅為其中的一種 預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面 7 一個(gè) 語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成 7 在C語(yǔ)言中 大小寫(xiě)字母是有區(qū)別的 C語(yǔ)言習(xí)慣用小寫(xiě)字母 8 用 對(duì)C程序中的任何部分作注釋 注釋可以寫(xiě)在程序的任何位置上 與 也可不在同一行上 不能嵌套 例 Thisisthemain ofexample1 1 C語(yǔ)言程序結(jié)構(gòu) 在屏幕上顯示HelloWorld include stdio h main printf helloWorld n 注釋語(yǔ)句 編譯預(yù)處理 主函數(shù)定義 函數(shù)體 程序書(shū)寫(xiě)格式特點(diǎn)習(xí)慣用小寫(xiě)字母 大小寫(xiě)敏感不使用行號(hào) 無(wú)程序行概念可使用空行和空格常用鋸齒形書(shū)寫(xiě)格式 main main inti j sum sum 0 for i 1 i 10 i for j 1 j 10 j sum i j printf d n sum 優(yōu)秀程序員的素質(zhì)之一 使用TAB縮進(jìn) 對(duì)齊有足夠的注釋有合適的空行 課堂練習(xí)一 編寫(xiě)一個(gè)C語(yǔ)言源程序 執(zhí)行后 在屏幕上輸出 這是我的第一個(gè)C語(yǔ)言程序 C語(yǔ)言程序結(jié)構(gòu) 注釋語(yǔ)句 編譯預(yù)處理 主函數(shù)定義 函數(shù)體 在屏幕上顯示 這是我的第一個(gè)C語(yǔ)言源程序 include stdio h main printf 這是我的第一個(gè) nC語(yǔ)言源程序 2 常用計(jì)算機(jī)語(yǔ)言 BASIC FORTRAN PASCAL COBOL C JAVA PROLOG 計(jì)算機(jī)基本工作過(guò)程 整個(gè)過(guò)程的執(zhí)行者是硬件 但硬件是受軟件控制的編程 就是編寫(xiě)軟件 使硬件按照人的意圖工作 1 計(jì)算機(jī)語(yǔ)言的翻譯方式 1 解釋方式 2 編譯方式 程序設(shè)計(jì)語(yǔ)言的工作原理 高級(jí)語(yǔ)言源程序 解釋程序 解釋并執(zhí)行 運(yùn)算結(jié)果 高級(jí)語(yǔ)言源程序 編譯程序 執(zhí)行 運(yùn)算結(jié)果 操作系統(tǒng) 編譯 機(jī)器語(yǔ)言程序 編譯運(yùn)行 編譯過(guò)程程序員 Programmer 編寫(xiě)程序源代碼 SourceCode 編譯器 Compiler 把源代碼轉(zhuǎn)換為可被計(jì)算機(jī)理解的機(jī)器代碼 MachineCode 并把機(jī)器代碼以可執(zhí)行文件 ExecutableFile 的形式保存在磁盤(pán)上軟件的運(yùn)行計(jì)算機(jī)把機(jī)器代碼讀入到內(nèi)存 Memory 由CPU運(yùn)行這些代碼 讀取輸入 Input 產(chǎn)生輸出 Output 完成程序員預(yù)定的功能 編譯語(yǔ)言 一種編譯語(yǔ)言對(duì)應(yīng)一種編譯器程序員按照該語(yǔ)言的語(yǔ)法編寫(xiě)程序源代碼 把自己的意圖融入到代碼中編譯器讀入源代碼 把程序員的意圖轉(zhuǎn)換成可執(zhí)行程序 供他人使用 C語(yǔ)言 可執(zhí)行程序 編譯器 解釋運(yùn)行 解釋運(yùn)行過(guò)程程序員編寫(xiě)程序源代碼解釋器讀入源代碼 并執(zhí)行源代碼解釋運(yùn)行的語(yǔ)言特點(diǎn)執(zhí)行速度慢好學(xué)易用先編譯 后解釋把源代碼編譯成更容易解釋的中間代碼 然后再解釋運(yùn)行 C程序的開(kāi)發(fā)運(yùn)行過(guò)程 1 源程序的編輯可使用任意純文本編輯器編寫(xiě) 如記事本 WORD UltraEit等均可 得到源程序文件 c 2 編譯由專門的編輯程序 編譯器 對(duì)源程序進(jìn)行語(yǔ)法分析和檢查 如無(wú)語(yǔ)法錯(cuò)誤則轉(zhuǎn)換生成目標(biāo)碼程序文件 obj 3 鏈接與其它庫(kù)函數(shù)或目標(biāo)程序文件鏈接生成可執(zhí)行文件 exe 4 執(zhí)行 C語(yǔ)言集成開(kāi)發(fā)環(huán)境 集成開(kāi)發(fā)環(huán)境IDE IntegratedDevelopmentEnvironment包含文本編輯 程序編譯 連接以及程序運(yùn)行 調(diào)試一體化的程序軟件包 常用的集成開(kāi)發(fā)環(huán)境主要有 美國(guó)Borland公司1989年出版的TurboC2 0 微軟的MicrosoftVisualC 因?yàn)門C是在DOS下進(jìn)行操作的 在WINDOWS中也要在命令窗口中進(jìn)行操作 比較麻煩 所以推薦大家使用 C C 程序設(shè)計(jì)學(xué)習(xí)與實(shí)驗(yàn)系統(tǒng) 共享版 作者 鐘家民注冊(cè)費(fèi)用 35元 第二個(gè)程序 已知有變量a 12 變量b 14 編寫(xiě)程序求變量a b之和 如何編寫(xiě)程序 第二個(gè)程序 求 a b include stdio h main a 12 b 14 printf a b 求 a b include stdio h main inta 12 定義a為整型變量intb 14 定義b為整型變量printf a b d a b 在C語(yǔ)言中 所有變量必須先說(shuō)明后使用 說(shuō)明用于申明變量的性質(zhì) 變量說(shuō)明語(yǔ)句格式如下 變量類型名變量1 變量2 變量n 變量類型名有 int整數(shù) float浮點(diǎn)數(shù)char字符 單字節(jié)short短整數(shù)long長(zhǎng)整數(shù)single單精度浮點(diǎn)數(shù)double雙精度浮點(diǎn)數(shù) 第二個(gè)程序求兩數(shù)之和 兩數(shù)求和 include stdio h voidmain inta b sum 定義三個(gè)整型變量a 12 給變量賦值b 14 sum a b 求和printf a b d sum 輸出顯示 d輸出轉(zhuǎn)換說(shuō)明 用整型值sum來(lái)代替它 修改程序如下 運(yùn)行結(jié)果sum include stdio h voidmain inta b sum a 12 50 b 14 50 sum a b printf a b d sum 再修改程序如下 運(yùn)行結(jié)果sum include stdio h voidmain floata b sum 定義三個(gè)浮點(diǎn)型變量a 12 50 b 14 50 sum a b printf a b d sum 兩數(shù)求和 sum include stdio h voidmain floata b sum a 12 50 b 14 50 sum a b printf a b f sum f輸出轉(zhuǎn)換說(shuō)明 用浮點(diǎn)型值sum來(lái)代替它 輸出函數(shù)printf printf函數(shù)稱為格式輸出函數(shù) 用來(lái)向標(biāo)準(zhǔn)輸出設(shè)備 屏幕 寫(xiě)數(shù)據(jù) printf 格式控制串 參數(shù)表 格式化字符串包括兩部分內(nèi)容 一部分是正常字符 這些字符將按原樣輸出 另一部分是格式化規(guī)定字符 以 開(kāi)始 后跟一個(gè)或幾個(gè)規(guī)定字符 用來(lái)確定輸出內(nèi)容格式 參數(shù)表是需要輸出的一系列參數(shù) 其個(gè)數(shù)必須與格式化字符串所說(shuō)明的輸出參數(shù)個(gè)數(shù)一樣多 各參數(shù)之間用 分開(kāi) 且順序一一對(duì)應(yīng) 否則將會(huì)出現(xiàn)意想不到的錯(cuò)誤 參數(shù)可以是變量 常量和表達(dá)式 1 格式化規(guī)定符TurboC2 0提供的格式化規(guī)定符如下 符號(hào)作用 d十進(jìn)制有符號(hào)整數(shù) u十進(jìn)制無(wú)符號(hào)整數(shù) f浮點(diǎn)數(shù) s字符串 c單個(gè)字符 p指針的值 e指數(shù)形式的浮點(diǎn)數(shù) x X無(wú)符號(hào)以十六進(jìn)制表示的整數(shù) 0無(wú)符號(hào)以八進(jìn)制表示的整數(shù) g自動(dòng)選擇合適的表示法 1 可以在 和字母之間插進(jìn)數(shù)字表示最大場(chǎng)寬 3d表示輸出3位整型數(shù) 不夠3位右對(duì)齊 9 2f表示輸出場(chǎng)寬為9的浮點(diǎn)數(shù) 其中小數(shù)位為2 整數(shù)位為6 小數(shù)點(diǎn)占一位 不夠9位右對(duì)齊 對(duì)浮點(diǎn)數(shù) 若整數(shù)部分位數(shù)超過(guò)了說(shuō)明的整數(shù)位寬度 將按實(shí)際整數(shù)位輸出 若小數(shù)部分位數(shù)超過(guò)了說(shuō)明的小數(shù)位寬度 則按說(shuō)明的寬度以四舍五入輸出 如果用浮點(diǎn)數(shù)表示字符或整型量的輸出格式 小數(shù)點(diǎn)后的數(shù)字代表最大寬度 小數(shù)點(diǎn)前的數(shù)字代表最小寬度 例如 6 9s表示顯示一個(gè)長(zhǎng)度不小于6且不大于9的字符串 若大于9 則第9個(gè)字符以后的內(nèi)容將被刪除 2 可以在 和字母之間加小寫(xiě)字母l 表示輸出的是長(zhǎng)型數(shù) 例如 ld表示輸出long整數(shù) lf表示輸出double浮點(diǎn)數(shù) 3 可以控制輸出左對(duì)齊或右對(duì)齊 即在 和字母之間加入一個(gè) 號(hào)可說(shuō)明輸出為左對(duì)齊 否則為右對(duì)齊 例如 7d表示輸出7位整數(shù)左對(duì)齊 2 一些特殊規(guī)定字符字符作用 n換行 f清屏并換頁(yè) r回車 tTab符 xhh表示一個(gè)ASCII碼用16進(jìn)制數(shù)表示 其中hh是1到2個(gè)16進(jìn)制數(shù) 輸出函數(shù)printf 例子 include stdio h voidmain printf d n n 336 printf theoctalnumberof17is o n n 17 printf thehexnumberof30is x n n 30 printf fisfloatingformat n n 13 5 printf c n n a printf s n n aflingbird 兩數(shù)求和 include stdio h voidmain inta b sum a 12 b 14 sum a b printf d d d a b sum 前面的程序是在源程序中就輸入了要求和的數(shù) 如果我們想要在鍵盤(pán)中輸入數(shù)據(jù) 如果實(shí)現(xiàn)呢 可以使用scanf 函數(shù) 輸入函數(shù)scanf scanf 函數(shù)是格式化輸入函數(shù) 它從標(biāo)準(zhǔn)輸入設(shè)備 鍵盤(pán) 讀取輸入的信息 格式 scanf 輸入函數(shù)scanf 格式化字符串包括以下三類不同的字符 1 格式化說(shuō)明符

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論