




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C
語言程序設計但愿她是你知識大廈的又一塊基石。但愿她是開啟你智慧的又一把鑰匙!CLanguageProgramming學習目的通過學習掌握C語言的語法結構,理解程序設計的一般方法和基本技術。學習算法的概念以及結構化程序設計的一般方法,提高分析能力和綜合能力。能夠用C語言編程解決一定的實際問題,提高計算能力。高級語言的概念計算機的語言在發展的過程中經歷了三個階段:如:表示2+301110000110101000010MOV
AC,3ADD
AC,22+3面向機器的二進制語言、CPU直接運行。面向機器符號化語言,翻譯后運行。面向問題的類自然語言,翻譯后運行。編譯或解釋系統SourceObject機器語言匯編語言高級語言語言的基本元素、構詞方法、句法、程序結構等規則的集合。解決特定問題的步驟描述。結構化程序設計的思想方法。學習的層次語法算法方法把我所考察的每一個難題,都盡可能地分成細小的部分,直到可以而且適于加以圓滿解決的程度為止。
———笛卡爾(法)實踐FromRequirementtoProgramRequirement:Triangle’sareaInput:a、b、cabcInput:a,b,c
OutputareaBlackboxFromRequirementtoProgram約束:任意兩邊和大于第三邊。第一章概論Chapter1Introduction1.1C語言簡介
1.計算機與程序
C語言是由DennisMRitchie和BrianWKernighan于1972年在B語言的基礎上提出的,他們用C語言重寫了在PDP–11小型機上的Unix,并取得了成功。程序是用計算機語言描述的、為解決某一問題、滿足一定語法規則的語句序列。計算機是可以按照人們事先編寫的程序高速、精確地進行數據加工、處理的電子裝置。人們通過程序明確地告訴計算機做什么,以及如何去做這些事情,并將事先編寫的程序存儲到計算機內部,啟動計算機執行程序,計算機在執行程序的過程中,完成程序規定的任務
2.計算機的語言
C語言是由DennisMRitchie和BrianWKernighan于1972年在B語言的基礎上提出的,他們用C語言重寫了在PDP–11小型機上的Unix,并取得了成功。(1)機器語言是由0和1二進制代碼按一定的規則組合而成的指令序列,它是面向具體計算機系統的,不同的計算機系統識別的機器語言是不同的(2)匯編語言 匯編語言是采用英文助記符表示的語言(3)高級語言 高級語言是由表達各種意義的英文單詞和數學式子按照一定的語法規則構成的語言C語言是面向過程的語言,C++語言是面向對象的語言3.C語言的發展
C語言的發展過程與UNIX操作系統密不可分 1963年英國的劍橋大學推出了,并于1967年對其進行了簡化推出了; 1970年美國貝爾實驗室以BCPL語言為基礎,進行了進一步簡化,推出了更簡單的B語言,并用B語言書寫了第一個操作系統UNIX。 1973年貝爾實驗室推出了C語言,而且用C語言重新書寫了UNIX操作系統,使其成為較完善的操作系統。 1975年,UNIX推出了6.0版本后,C語言的優點引起了人們的普遍關注,特別是1977年出現了不依賴具體機器的C語言編譯文本《可移植C語言編譯程序》,使得C語言移植到其他機器比較容易實現,這也使得UNIX操作系統迅速在各種機器上實現。
1983年美國國家標準委員會對C語言進行了標準化,頒布了第一個C語言的標準草案——83ANSIC;1987年又頒布了新標準——87ANSIC;1990年,國際標準化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISO-C的標準。目前流行的C編譯系統都以此為基礎。80年代后期,貝爾實驗室又為C語言增加了面向對象的特性,即C++。C語言系統依然保留在C++中,形成了C++的子集。4.C語言的特點:(1)功能強大。既可書寫系統軟件,也可書寫應用軟件。(2)移植性強。(3)是主流的編程語言之一。
(4)是模塊化、結構化的程序設計語言。
(5)有著豐富的運算符和數據類型。(6)語法簡潔、靈活,使用方便。(7)允許直接訪問物理地址,具有一定的低級語言的特性。(8)程序生成的目標代碼質量高,程序的執行效率高。1.2C程序初探
1.2.1簡單的C程序【例1-1】字符串的輸出。編寫程序代碼1-1如下,其執行結果如圖
圖1-1代碼1-1的執行結果/*example1-1輸出信息*/#include<stdio.h>voidmain(void){
printf("歡迎走進C世界!");}程序分析:1)/*example1-1輸出信息*/注釋語句。在C程序中,/*注釋內容*/語句為注釋語句,注釋內容不影響程序的執行,只是為了幫助讀者閱讀和理解程序。(2)#include<stdio.h>文件包含,告訴系統必須包含文件stdio.h,此文件為輸入和輸出提供支持。(3)voidmain(void)表明以下是一個C程序的主函數。(4){表明主函數體由此開始。(5)printf("歡迎走進C世界!");此行為輸出函數,其功能是在屏幕上顯示雙引號中的內容。(6)}表明主函數體到此結束。【例1-2】求三門課程的平均成績。編寫程序代碼1-2如下,其執行結果如圖/*example1-2計算平均數*/#include<stdio.h>voidmain(void){
int
mathscore,physscore,chemscore;/*代表三門成績*/ floatavescore;/*代表平均成績*/
mathscore=75;
physscore=85;
chemscore=95;/*三門成績賦初值*/
avescore=(mathscore+physscore+chemscore)/3.0;/*計算平均成績*/
printf("avescore=%f",avescore);/*輸出平均成績*/}程序分析:(1)/*example1-2計算平均數*/注釋語句。(2)#include<stdio.h>文件包含,告訴系統必須包含文件stdio.h。(3)voidmain(void)表明以下是一個C程序的主函數。(4){此行表明主函數體由此開始。(5)int
mathscore,physscore,chemscore;說明語句,說明本程序需要用這3個變量,而且它們的數據類型是整型。(6)floatavescore;說明語句,說明本程序需要用這個變量,而且它的數據類型是浮點型。程序分析:(7)mathscore=75;
physscore=85;
chemscore=95;賦值語句,表明給這3個變量的初始值分別為:75、85、95。(8)avescore=(mathscore+physscore+chemscore)/3.0;此行為賦值語句,利用3個變量的初始值計算平均值。(9)printf("avescore=%f",avescore);此行為輸出函數,在屏幕上輸出平均成績(10)}表明主函數體到此結束【例1-3】求兩個數中的大數,由主函數獨立完成。編寫程序代碼1-3如下,其執行結果如圖/*example1-3求最大數*/#include<stdio.h>voidmain(void){int
a,b,maxvalue;/*定義3個變量*/printf("請輸入2個數:");/*輸出提示信息*/
scanf("%d%d",&a,&b);/*由鍵盤輸入2個數*/if(a>b)/*比較2個數的大小*/
maxvalue=a;else
maxvalue=b; printf("2個數中的最大數是:%d",maxvalue);/*輸出最大數*/}程序分析:(1)inta,b,maxvalue;說明語句,說明本程序需要用這3個整型變量。(2)printf("請輸入2個數:");在屏幕上輸出提示信息。(3)scanf("%d%d",&a,&b);利用輸入函數,要求用戶從鍵盤輸入2個整數,分別存放到a和b的存儲單元。(4)if(a>b)maxvalue=a;elsemaxvalue=b;此4行為if語句,比較2個數的大小,取其中的大數給maxvalue。(5)printf("2個數中的最大數是:%d",maxvalue);輸出函數,輸出最大數。【例1-4】求兩個數中的大數,由主函數和子函數合作完成。編寫程序代碼1-4如下,其執行結果如圖/*example1-4利用子函數求最大數*/#include<stdio.h>int
Getmax(int,int);/*聲明子函數*/voidmain(void){
int
a,b,maxvalue;/*定義3個變量*/
printf("請輸入2個數:");/*輸出提示信息*/
scanf("%d%d",&a,&b);/*由鍵盤輸入2個數*/
maxvalue=Getmax(a,b);/*調用子函數求最大數*/
printf("最大數是:%d",maxvalue);/*輸出最大數*/}int
Getmax(intx,inty)/*定義子函數*/{
intz;
if(x>y)/*比較2個數的大小*/ z=x; else z=y; returnz;/*返回最大數*/}程序分析:(1)int
Getmax(int
,int);聲明子函數,表明以下有一個名為Getmax的子函數,它有2個整型參數,子函數的返回值為整型。(2)maxvalue=Getmax(a,b);調用語句,調用名為Getmax的子函數,將參數a和b傳遞給子函數,并將返回結果賦給變量。(3)int
Getmax(intx,inty)子函數定義,表明以下是名為Getmax的子函數。(4){(子函數中的大括號)表明子函數體由此開始。(5)returnz;返回語句,返回最大數。(6)}(子函數中的大括號)表明子函數體到此結束。1.2.2C程序的基本結構實例:輸入兩個數及其算術運算關系,輸出運算結果。/*ThisismyfirstCprogramfilename:first.c*/#include<stdio.h>voidmain(void){
charch;int
iA,iB,c;scanf(“%d%c%d”,&iA,&ch,&iB);c=fun(iA,ch,iB);printf(“%d%c%d=%d”,iA,
ch,iB,c);}intfun(intx,charop,inty){intz;switch(op){case‘+’:z=x+y;break;case‘-‘:z=x-y;break;case‘*’:z=x*y;break;case‘/’:z=x/y;}returnz;/*返回運算結果*/}子函數主函數chp1ex11.函數是構成C程序的基本單位
⒈C程序是由函數組成,其中有且僅有一個名為main的主函數,根據實際編程的需要還可以有若干個子函數,如Getmax為子函數,函數是構成C程序的基本單位
⒉一個C程序總是從主函數main開始執行,也是從主函數結束,無論主函數書寫在什么位置。
⒊函數在執行過程中根據需要可以調用系統提供的庫函數(如printf()),也可以調用用戶定義的函數(如Getmax())。如果調用系統提供的庫函數,在調用之前必須將相應的文件包含到本文件中,如果調用用戶定義的函數,在調用之前必須聲明2.函數的組成
⒈每一個函數由函數首部和函數體組成
⒉函數首部由函數類型、函數名、函數參數類型、函數參數名組成
⒊函數體由說明和執行兩部分組成,且函數體以左大括號開始,以右大括號結束3.函數體的組成
⒈函數體內由若干條C的語句組成,C的語句有許多,如:intz;為說明語句;c=a;為賦值語句;returnz;為返回語句;/*……*/為注釋語句等
⒉C的語句必須以分號“;”作為語句的結束
⒊C的語句書寫比較自由,如:可在一行書寫多條語句,也可將一條語句寫在多行,但盡量一行只寫一條語句,以養成良好的、規范的程序設計風格
4.與任何一種語言一樣,C的語句也必須滿足一定的語法規則4.C的語句的組成
C程序的語句中含有各種符號、名稱、數值等,如:int是英語單詞integer(整型)的縮寫,表示整型;avescore=(mathscore+physscore+chemscore)/3.0;類似于數學式子;x>y類似于不等式;3.0代表一個數值;returnz代表的功能也與英文原意相同5.C語言程序的書寫字母由于C語言區分大小寫字母,一般使用小寫字母,因此命名時應特別注意1.2.2C程序的基本結構1.字符集⑴字母:A、a、B、b…、Z、z52個⑵數字符號:0、1…、910個⑶特殊符號:+-*/…系統保留字系統占用詞(共32個)auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while建議不要使用:define、undef、include、ifdef、ifndef、endif、line、error、elif、pragma2.關鍵字關鍵字又稱保留字,是C語言預先規定的、具有固定意義的一些單詞,如:int、return等,用戶只能按其預先規定的意義來使用它們,不能改變其原來的意義。C語言的關鍵字如表所示關鍵字語義關鍵字語義關鍵字語義關鍵字語義auto自動double雙精度int整型struct結構break中斷else否則long長整型switch開關char字符enum枚舉register寄存器typedef自定義類型case情況extern外部return返回union共同體const常量float浮點short短整型unsigned無符號continue繼續for循環signed有符號void空類型default缺省goto轉向sizeof字節數volatile可變的do循環if如果static靜態while循環3.標識符C語言的標識符有系統預定義標識符和用戶自定義標識符,一般用小寫
⒈系統預定義標識符。系統預定義標識符是由系統預先定義的,如:main、printf等,與關鍵字不同的是,系統預定義標識符允許用戶改變它的意義,但這樣做會失去其原有的含義,從而造成誤解,因而這類標識符用戶也不要更改其原意
⒉用戶自定義標識符。用戶自定義標識符是由用戶自己根據需要定義的標識符,通常用作變量名、數組名、函數名等,如:score、aver等,標識符是滿足以下規則的字符序列。組成規則:⑴字母和數字以及下劃線_組成。⑵以字母和下劃線_開頭。⑶長度不超過31個字符。⑷不能使用保留字。作用:用戶為各種自定義數據命名。4.運算符C語言提供了豐富的運算符,如例1-2中的加法運算符(+)和除法運算符(/),以及例1-3中的關系運算符(>)等5.分隔符
用C語言書寫的C程序中含有許多具有特定含義的符號,與自然語言一樣,各種符號之間必須有一些分隔符。C語言的分隔符有空格、逗號、分號、回車(換行)等,它們用在不同的場合以區分不同的對象6.數據
例1-1中的“歡迎走進C世界!”是一種字符數據;例1-2中的mathscore、physscore、chemscore是一種整型數據;avescore是一種實型數據;分母3是一個常量;例1-3中的a>b的比較結果有2種可能,即正確(Yes)或錯誤(No),比較的結果又為以下進行什么操作指明了道路一個程序一般都由說明數據、輸入數據、加工數據、輸出數據幾個部分組成1.3算法及其描述1.3.1小試身手:【例1-5】已知三角形的3條邊長,利用海倫公式計算三角形的面積
1.方案一——數學解法已知三角形的3條邊a=3,b=4,c=5,利用海倫公式先求三角形的半周長:再利用半周長t計算公式得面積答:由邊長為3、4、5的三條邊組成的三角形的面積是6
2.方案二——利用C程序解決
/*example1-5(a)計算三角形的面積*/#include<stdio.h>#include<math.h>voidmain(void){ floata,b,c;/*定義3個浮點變量*/ doublet,area;/*定義2個雙精度變量*/ a=3; b=4; c=5;/*為3個變量賦值*/ t=(a+b+c)/2;/*計算中間變量*/ area=sqrt(t*(t-a)*(t-b)*(t-c));/*計算三角形的面積*/
printf("三角形的面積是:%f",area);/*輸出三角形的面積*/}
3.方案三——改進C程序
/*example1-5(b)計算三角形的面積*/#include<stdio.h>#include<math.h>voidmain(void){ floata,b,c;/*定義3個浮點變量*/doublet,area;/*定義2個雙精度變量*/
printf("請輸入3條邊長:");/*輸出提示信息*/
scanf("%f%f%f",&a,&b,&c);/*由鍵盤輸入3個數*/t=(a+b+c)/2;/*計算中間變量*/ area=sqrt(t*(t-a)*(t-b)*(t-c));/*計算三角形的面積*/
printf("三角形的面積是:%f",area);/*輸出三角形的面積*/}
4.方案四——再改進C程序
/*example1-5(c)計算三角形的面積*/#include<stdio.h>#include<math.h>voidmain(void){ floata,b,c;/*定義3個浮點變量*/ doublet,area;/*定義2個雙精度變量*/
printf("請輸入3條邊長:");/*輸出提示信息*/
scanf("%f%f%f",&a,&b,&c);/*由鍵盤輸入3個數*/ if(a+b>c&&b+c>a&&a+c>b)/*對輸入的3個數進行判斷*/ {/*可以組成三角形*/t=(a+b+c)/2;/*計算中間變量*/ area=sqrt(t*(t-a)*(t-b)*(t-c));/*計算三角形的面積*/
printf("三角形的面積是:%f",area);/*輸出三角形的面積*/ } else/*不可以組成三角形*/
printf("這3個數無法組成三角形");/*輸出提示信息*/}
5.方案五——再次改進C程序
/*example1-5(d)計算三角形的面積*/#include<stdio.h>#include<math.h>voidGetarea(float,float,float);/*聲明子函數*/voidmain(void){ floata,b,c;/*定義3個浮點變量*/
printf("請輸入3條邊長:");/*輸出提示信息*/
scanf("%f%f%f",&a,&b,&c);/*由鍵盤輸入3個數*/
Getarea(a,b,c);/*調用子函數*/}voidGetarea(float
a,float
b,floatc)/*定義子函數*/{ doublet,s;/*定義2個雙精度變量*/ if(a+b>c&&b+c>a&&a+c>b)/*對輸入的3個數進行判斷*/ {/*可以組成三角形*/t=(a+b+c)/2;/*計算中間變量*/ s=sqrt(t*(t-a)*(t-b)*(t-c));/*計算三角形的面積*/
printf("三角形的面積是:%f",s);/*輸出三角形的面積*/ } else/*不可以組成三角形*/
printf("這3個數無法組成三角形");/*輸出提示信息*/}1.3.2
算法的基本概念
1.算法(Algorithm)的概念:廣義地講:算法是解決問題的邏輯步驟,是對特定問題求解步驟的一種描述。計算機算法:是用程序解決問題的邏輯步驟,是指令的有限序列。只有通過算法能夠描述出來的問題,才能夠通過計算機求解。能夠用算法描述的問題稱為可以形式化的問題。正確的算法有三個條件:
⑴每個邏輯步驟有可以實現的語句來完成;
⑵每個步驟間的關系是唯一的;
⑶算法要能終止(防止死循環)。算法的兩個關鍵要素動作(Action);順序(Order)。算法舉例⒈求數列n=1+2+…+m的值n,當n>10000時結束。
⒉歐幾里德求m,n(m>n)的最大公約數算法S1:mModn
kS2:k不為0:
nm,kn
(原除數變成新的被除數,余數變成新的除數)。重復S1
否則:到S3。S3:輸出n的值為最大公約數。步驟:S1:初始化0n,0tS2:t+1tn+tnS3:n>10000?
滿足到S4,否則到S2。S4:OUTPUTn⒊算法的特征有窮性:在有限的時間和有限的資源下完成算法;確定性:各步驟之間的關系要確定;有輸入:有0到多個原始數據輸入;有輸出:有結果輸出;可行性:可以編程實現;高效性:執行速度快、占用資源少;健壯性:對數據響應正確。1.自然語言【例1-6】已知三角形的3條邊長,利用海倫公式,計算三角形的面積。自然語言算法可表示如下:(1)設5個變量,其中a、b、c代表3條邊,t代表中間變量,S代表面積。(2)輸入3條邊。(3)如任意2邊之和大于第3邊(可以組成三角形),則計算中間變量t,再計算面積S,輸出面積S。否則,輸出不能組成三角形的提示信息。(4)結束算法。1.3.2
算法的各種描述方法【例1-7】輸入兩個數,求其中的最大數。自然語言算法可表示如下:(1)設兩個數為x和y,最大數為z。(2)輸入兩個數給x和y。(3)如x大于或等于y,則最大數z的值等于x的值。否則,最大數z的值等于y的值。(4)輸出最大數z。(5)結束算法。
概念:以特定的圖形符號加上說明,表示算法的圖,稱為流程圖或框圖。規則:從上到下,從左到右。符號及其意義:2.用傳統流程圖表示
⒈用框圖描述函數
1x0y=
-1
x<0輸入xAx0?y=1y=-1yesnoA輸出y流程圖描述算法舉例startend⒉用框圖描述求s=1+2+…+100的算法。start1
t0ss+tst+1tt>100?noyesOutputsA0A0end【例1-8】已知三角形的3條邊長,利用海倫公式,計算三角形的面積。其流程圖描
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025獲獎演講稿(15篇)
- 人教新目標 (Go for it) 版九年級全冊Unit 2 I think that mooncakes are delicious!Section B教案
- 網絡培訓學習心得(5篇)
- 2025證婚人發言稿(20篇)
- 2025年安全隱患排查活動總結(16篇)
- Unit 1 You and Me Section A How Do We Get to Know Each Other教學設計 -2024-2025學年人教版(2024)七年級英語上冊
- 幼兒園下學期中班保育員工作總結(4篇)
- 因工資原因辭職信范文(4篇)
- 合作經營合同范文集錦(16篇)
- 混凝土建筑電氣培訓課件
- 比例尺單元測試卷及答案
- 北京市朝陽區2025屆高三下學期一模試題 數學 含答案
- 食品工廠5S管理
- 運輸公司安全管理制度
- 2025屆吉林省長春市高三下學期4月三模政治試題(原卷版+解析版)
- 2025屆江蘇省揚州市中考一模語文試題(含答案)
- 2025年河北省唐山市中考一模道德與法治試題(含答案)
- 2025年一級注冊計量師考試題庫大全及答案
- 衛生院全國預防接種日宣傳活動總結(8篇)
- 2024國家電投集團中國電力招聘(22人)筆試參考題庫附帶答案詳解
- 大數據在展覽中的應用-全面剖析
評論
0/150
提交評論