版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章
概述有史以來最重要的語言,面向過程的程序設(shè)計語言,比較流行的Windows、Unix、Linux等操作系統(tǒng)都曾經(jīng)使用C語言開發(fā)。1.1C語言簡介發(fā)展歷史1989年,美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)發(fā)布了第一個完整的C語言標(biāo)準(zhǔn)ANSIC,1990年被國際標(biāo)準(zhǔn)組織ISO一字不改地采納,截至2020年,最新的C語言標(biāo)準(zhǔn)為2017年發(fā)布“C17”。061972-1973年,貝爾實(shí)驗(yàn)室的DennisM.Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言(取BCPL的第二個字母)。Thompson和Ritchie用C語言重寫了UNIX操作系統(tǒng)。041960年的ALGOL60。1963年英國劍橋大學(xué)CPL(CombinedProgrammingLanguage)語言。011970年美國貝爾實(shí)驗(yàn)室的KenThompson以BCPL語言為基礎(chǔ),設(shè)計出B語言(取BCPL的第一個字母),開發(fā)了第一個UNIX操作系統(tǒng)。03以1978年發(fā)表的UNIX第七版中的C為基礎(chǔ),BrainW.Kernighan&DennisM.Ritchie合著的《TheCProgrammingLanguage》問世。051967年推出BCPL(theBasicCombinedProgrammingLanguage)語言。021.1C語言簡介C語言的特點(diǎn)生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。C語言可以生成高質(zhì)量和高效率的目標(biāo)代碼,因此在嵌入式系統(tǒng)軟件開發(fā)中應(yīng)用較為廣泛。語言簡潔,使用方便、靈活。C語言中只有9種控制語句和32個主要關(guān)鍵字。既是高級語言,又具有低級語言的功能。C語言可以進(jìn)行位運(yùn)算,直接訪問硬件內(nèi)存的物理地址,所以經(jīng)常應(yīng)用在系統(tǒng)軟件編程中。運(yùn)算符豐富,數(shù)據(jù)類型多。C語言中有34個運(yùn)算符,并包含整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等多種數(shù)據(jù)類型??梢浦残院?。C語言在不同的硬件環(huán)境或系統(tǒng)平臺中,實(shí)現(xiàn)相同功能的代碼基本一致,可移植性強(qiáng)。C語言是結(jié)構(gòu)化語言,既能夠用于系統(tǒng)開發(fā),也可用于應(yīng)用軟件開發(fā)。其主要特點(diǎn)如下:1.1C語言簡介C語言的編譯、運(yùn)行及調(diào)試
C語言的程序執(zhí)行分為編輯、編譯、鏈接、執(zhí)行四個步驟,常見的集成開發(fā)環(huán)境都可以完成這個過程,如:Code::Blocks(開源免費(fèi)的C/C++IDE),Dev-C++(可移植的C/C++IDE),CodeLite(開源、跨平臺的C/C++集成開發(fā)環(huán)境),VisualStudio系列等。圖1.1C語言程序執(zhí)行過程圖1.2例1.1程序運(yùn)行結(jié)果【例1.1】在屏幕上輸出字符串“TheCProgrammingLanguage”。程序代碼如下:#include<stdio.h>//頭文件intmain(){printf("TheCProgrammingLanguage\n");return0;}12程序運(yùn)行結(jié)果如圖1.2所示。1.1C語言簡介步驟書寫風(fēng)格每個函數(shù)由函數(shù)首部和函數(shù)體組成;函數(shù)體由說明語句、執(zhí)行語句組成;每個語句和數(shù)據(jù)定義的最后必須加分號;C語言是由函數(shù)構(gòu)成的,函數(shù)可以有多個,但必須有且只能有一個main()函數(shù);每個C程序從main()函數(shù)開始執(zhí)行,并在main()中結(jié)束;C程序無輸入、輸出語句。輸入功能由scanf()等函數(shù)完成;輸出功能由printf()等函數(shù)完成;可加注釋/*……*/。010203040506首先,用C語言把源代碼寫好,編輯生成后綴名為.c的源文件。C語言程序的構(gòu)成一般如下:適當(dāng)使用空行,如:函數(shù)定義之間空一行書寫;每個語句占一行;{}要對齊;采用縮進(jìn)格式(可使用Tab鍵),同一層次的語句從同一位置處開始書寫;學(xué)會使用注釋。1.1C語言簡介步驟其次,將編輯好的C語言代碼進(jìn)行編譯。C語言編譯器很多,常用的編譯器有GCC(GNU組織開發(fā)的開源免費(fèi)的編譯器),MinGW(Windows操作系統(tǒng)下的GCC),VisualC++
::cl.exe(MicrosoftVC++編譯器)等。編譯器將C語言代碼進(jìn)行詞法和語法上的解析,然后生成源文件相應(yīng)的目標(biāo)文件。目標(biāo)文件在Windows系統(tǒng)上一般是.obj文件。再次,通過鏈接器將它們鏈接生成一個最終可執(zhí)行文件,Windows系統(tǒng)上一般為.exe文件。操作系統(tǒng)往往會提供一些被稱為開發(fā)庫的文件,目標(biāo)文件只有和這些庫文件結(jié)合才能生成一個可執(zhí)行程序,才能正常地運(yùn)行于某個操作系統(tǒng)之上。鏈接器所做的工作就是將所有的二進(jìn)制文件鏈接起來融合成一個可執(zhí)行程序,這一過程在計算機(jī)中也有一個專業(yè)的名字叫“鏈接”。通常應(yīng)留存.c源文件,這樣可以在不同平臺上使用其對應(yīng)的集成開發(fā)環(huán)境對源文件進(jìn)行編譯、鏈接、執(zhí)行。1.2應(yīng)用程序示例1.2.1算術(shù)計算【例1.2】計算兩個整數(shù)之和。#include<stdio.h>//頭文件intmain(){intdata1,data2,sum;scanf("%d%d",&data1,&data2);//從鍵盤輸入兩個整數(shù)sum=data1+data2;printf("Sum=%d\n",sum);
return0;}例1.2的功能是求出從鍵盤輸入的兩個整數(shù)之和,其中將stdio.h頭文件包含進(jìn)來的作用是程序中可以使用scanf()、printf()等標(biāo)準(zhǔn)的輸入輸出函數(shù);int是整型數(shù)據(jù)類型,表示后面定義的變量data1和data2中存放的是整型數(shù)據(jù)。將程序中的加號'+'替換為減號'-'、乘號'*'、除號'/'即可實(shí)現(xiàn)簡單的算術(shù)運(yùn)算。圖1.3例1.2程序運(yùn)行結(jié)果1.2應(yīng)用程序示例1.2.2比較與排序【例1.3】比較兩個整數(shù)的大小并輸出較大的一個。#include<stdio.h>intmain(){intdata1,data2;scanf("%d%d",&data1,&data2);if(data1>data2)printf("%d\n",data1);elseprintf("%d\n",data2);
return0;}從例1.3可以看出,從鍵盤輸入兩個整數(shù)的程序代碼沒有變化,比較大小用到了if-else條件判斷語句,針對可能存在的三種結(jié)果分兩種情況進(jìn)行判斷。此外,本例題程序的縮進(jìn)格式可以借鑒。圖1.4例1.3程序三種情況的運(yùn)行結(jié)果※思考題:兩數(shù)相等時執(zhí)行哪個語句或者說輸出的是data1還是data2?請讀者思考分析。1.2應(yīng)用程序示例1.2.2比較與排序【例1.4】有5名同學(xué)參加了英語測試,要求按照他們成績由高到低的順序輸出。#include<stdio.h>#defineN5//宏定義N為5,后續(xù)出現(xiàn)的N都用5替代intmain(){inti,j,t,score[N];for(i=0;i<N;i++)/*輸入N個學(xué)生成績*/scanf("%d",&score[i]);for(i=0;i<N-1;i++)/*對N個成績進(jìn)行從高到低排序*/for(j=i+1;j<N;j++)if(score[i]<score[j])
{/*下面三個語句實(shí)現(xiàn)score[i]和score[j]交換*/t=score[i];score[i]=score[j];score[j]=t;}for(i=0;i<N;i++)/*輸出已排序的N個成績*/printf("%d",score[i]);printf("\n");return0;}從例1.4可以看出,從鍵盤輸入或者向屏幕輸出多個整數(shù)時,不是簡單地多次重復(fù)使用scanf()或者printf()函數(shù),而是使用了一個for()語句。for()語句是循環(huán)控制語句,可以重復(fù)執(zhí)行,執(zhí)行的次數(shù)由N決定。排序的算法本書將在第5章進(jìn)行講解,讀者現(xiàn)在可以借鑒其代碼書寫的縮進(jìn)格式?!伎碱}:如果10名同學(xué)或者更多的同學(xué)參加考試,如何修改程序以完成對參加考試的同學(xué)成績進(jìn)行由高到低排序?如果想將成績由低到高排序怎么修改?另外請讀者思考分析實(shí)現(xiàn)score[i]和score[j]交換的三個語句。圖1.5例1.4程序運(yùn)行結(jié)果1.2應(yīng)用程序示例1.2.3計算分段函數(shù)的值【例1.5】設(shè)計程序計算上面分段函數(shù)的函數(shù)值。#include<stdio.h>#include<math.h>intmain(){doublex,y;scanf("%lf",&x);if(x<1)y=sin(2*x);elseif(x<10)y=2*x-1;elsey=pow(1.2,x)+5;printf("%lf\n",y);return0;}例1.5中將math.h頭文件包含進(jìn)來的作用是程序中可以使用求正弦sin()、求乘方pow()等數(shù)學(xué)函數(shù);double是雙精度浮點(diǎn)型數(shù)據(jù)類型,簡單點(diǎn)說就是其定義的變量可以
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培養(yǎng)教育合同范本
- 培訓(xùn)股份合同范本
- 基金經(jīng)紀(jì)合同范本
- 山西省合同范本
- 拼多多合同協(xié)議書
- 換熱工程合同范本
- 旅游合同保全協(xié)議
- 旅游接團(tuán)合同范本
- 旅游項(xiàng)目合同范本
- 日化代理合同范本
- 2025陜西西安市工會系統(tǒng)開招聘工會社會工作者61人歷年題庫帶答案解析
- 外賣平臺2025年商家協(xié)議
- 2025年高職(鐵道車輛技術(shù))鐵道車輛制動試題及答案
- 2025陜西榆林市榆陽區(qū)部分區(qū)屬國有企業(yè)招聘20人考試筆試模擬試題及答案解析
- 老年慢性病管理及康復(fù)護(hù)理
- 《繼發(fā)性高血壓》課件
- 垃圾中轉(zhuǎn)站運(yùn)營管理投標(biāo)方案
- 數(shù)字媒體與數(shù)字廣告
- 綜合樓裝飾裝修維修改造投標(biāo)方案(完整技術(shù)標(biāo))
- 中藥現(xiàn)代化生產(chǎn)技術(shù)課件
- 醫(yī)學(xué)專家談靈芝孢子粉課件
評論
0/150
提交評論