版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言程序設(shè)計,大學(xué)計算機公共基礎(chǔ)課,2,課程介紹,課程性質(zhì):大學(xué)計算機公共基礎(chǔ)課(必修)課程內(nèi)容C語言程序設(shè)計的基本方法和技巧預(yù)備知識《計算機基礎(chǔ)》教材《C語言程序設(shè)計教程》汪同慶 張 華 楊先娣 主編 機械工業(yè)出版社《C語言程序設(shè)計實驗教程》汪同慶 關(guān)煥梅 湯 潔 主編 機械工業(yè)出版社,C語言程序設(shè)計,3,授課計劃,C語言程序設(shè)計,4,考試與考核辦法,學(xué)分:3學(xué)分學(xué)時:72(講課
2、36+實驗36)總評成績 = 平時成績×#% + 期末考試成績×#%平時成績:(實驗,單元測驗)期末考試成績,C語言程序設(shè)計,第一講 C語言概述,C 語言程序設(shè)計,6,第一講 C語言概述,預(yù)備知識計算機組成和工作原理計算機語言和程序C語言的簡史為什么學(xué)習(xí)和使用C語言C語言程序的開發(fā)過程C語言編程環(huán)境C語言編程實驗環(huán)境,C語言程序設(shè)計,7,計算機,計算機(Computer)能進行計算和邏輯判斷的設(shè)
3、備在一組指令(instructions)——程序(programs)的控制下處理數(shù)據(jù)硬件(Hardware)組成計算機的各種物理部件鍵盤、鼠標、顯示器、內(nèi)存、硬盤、光驅(qū)等等軟件(Software)計算機中運行的程序和數(shù)據(jù),C語言概述,8,計算機的組成,計算機包括六大部件輸入單元(Input unit)從輸入設(shè)備(鍵盤、鼠標)獲得數(shù)據(jù)輸出單元(Output unit)把數(shù)據(jù)輸出到輸出設(shè)備(顯示器、打印機等)內(nèi)存(Me
4、mory unit)臨時存儲正在處理的數(shù)據(jù)和運行的程序可以快速地訪問容量不大,C語言概述,9,計算機的組成,中央處理單元(Central processing unit, CPU)算術(shù)邏輯單元(Arithmetic and logic unit, ALU)進行算術(shù)運算和邏輯判斷控制器(Control unit)管理和協(xié)調(diào)計算機的其它部件輔助存儲器(Secondary storage unit)保存需長期存儲的數(shù)據(jù)和非活
5、動的程序保存時間長價格便宜、容量大例如硬盤、光盤、磁帶,C語言概述,10,計算機的工作原理,六大部件緊密協(xié)作,C語言概述,,,,,11,計算機的工作原理,CPU負責(zé)執(zhí)行程序從內(nèi)存中讀取一條指令執(zhí)行該指令從內(nèi)存中讀取下一條指令并執(zhí)行……一個主頻為1GHz的CPU可以在一秒鐘內(nèi)進行大約一億次這樣的操作 CPU有自己的工作區(qū):包括若干個寄存器(Registers)CPU只能理解有限的指令(CPU的指令集)指令能夠完成的任
6、務(wù)是具體的例如,把一個數(shù)從內(nèi)存移動到某一個寄存器,C語言概述,12,計算機程序和語言,存儲在計算機中的一切內(nèi)容都是二進制的數(shù)字形式數(shù)據(jù):數(shù)、字符、圖片、聲音、動畫等等指令計算機程序確切告訴計算機如何完成某項任務(wù)的指令序列就是一套程序計算機語言用來編寫程序,C語言概述,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%
7、f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},011000110000011001100101110011000000110000011011011000110000011001
8、100101110011000000110000011011,13,機器語言,數(shù)字形式的指令碼就是機器語言(Machine language)用機器語言編寫的程序能夠被計算機直接理解和執(zhí)行但是,編寫程序非常費力例如,編寫程序完成兩個數(shù)相加的任務(wù)需要以下幾步把地址為2000的內(nèi)存單元中的數(shù)復(fù)制到寄存器1;把地址為2004的內(nèi)存單元中的數(shù)復(fù)制到寄存器2;把寄存器2中的數(shù)與寄存器1中的數(shù)相加,結(jié)果保留在寄存器1中;把寄存器1中
9、的數(shù)復(fù)制到地址為2008的內(nèi)存單元中。,C語言概述,011000110000011001100101110011000000110000011011,14,匯編語言,符號化的指令碼就是匯編語言(Assembly language)例如,完成兩個數(shù)相加的匯編語言程序匯編語言程序必須被翻譯成機器語言程序才能被執(zhí)行匯編程序(Assembler)充當(dāng)“翻譯”,C語言概述,ldreg n1, r1把變量n1的值復(fù)制到寄存器1(
10、r1);ldreg n2, r2把變量n2的值復(fù)制到寄存器2(r2);add r1, r2把r2中的數(shù)與r1中的數(shù)相加,結(jié)果保留在r1中;store r1, sum把r1中的數(shù)復(fù)制到變量sum。,15,高級語言,高級語言(High-level language)使用數(shù)學(xué)符號和類似英語的單詞例如,完成兩個數(shù)相加的C語言程序從多方面提高了編程效率不必考慮CPU的指令集不必考慮CPU實現(xiàn)特定任務(wù)的精確步驟采用接近人類
11、思考問題的方式去書寫程序高級語言程序必須被編譯程序(Compiler)翻譯成機器語言程序才能被執(zhí)行,C語言概述,sum = n1 + n2;,16,C語言的簡史,C語言的起源美國貝爾實驗室的Dennis Ritchie在1972年開發(fā)的用于設(shè)計UNIX操作系統(tǒng)其前身是B語言(Ken Thompson于1970年為第一個UNIX系統(tǒng)開發(fā)的語言)C語言的標準美國國家標準化組織(ANSI)于1983年成立了一個委員會(X3J11)
12、,以確定C語言的標準。該標準(ANSI C)于1989年被正式采用,即C89。最新的標準是C99標準。目前,大多數(shù)C語言編譯器沒有完全實現(xiàn)C99的所有修改。,C語言概述,17,為什么學(xué)習(xí)和使用C語言,C語言的特點C語言是一種強大而靈活的語言,可以用來編寫任意復(fù)雜的程序。C語言簡潔、緊湊,使用方便、靈活。C語言程序效率高、運行速度快。C語言是可移植的。C語言很適合結(jié)構(gòu)化程序設(shè)計,因而要求用戶以功能模塊的方式來思考問題。C
13、語言具有自我擴展能力。,C語言概述,18,為什么學(xué)習(xí)和使用C語言,C與C++(C加加,see-plus-plus)貝爾實驗室于二十世紀八十年代在C語言的基礎(chǔ)上開發(fā)的。C++是C語言的超集,包含了C語言的所有內(nèi)容,同時增加了面向?qū)ο缶幊谭矫娴膬?nèi)容。C與Java(爪哇)Sun公司于1995年發(fā)布的面向?qū)ο缶幊陶Z言。Java也是基于C語言的。C與C#(see-sharp)微軟在2000年6月與.NET平臺一同推出。C#也是從C
14、語言派生的一種面向?qū)ο笳Z言。,C語言概述,19,C語言程序的開發(fā)過程,一般分成五個步驟定義程序目標設(shè)計程序編寫代碼編譯運行、測試和調(diào)試程序,C語言概述,20,C語言程序的開發(fā)過程,定義程序目標在開始解決問題之前,程序的開發(fā)人員必須徹底了解問題的是什么,對即將要創(chuàng)建的程序要做的事情有個清晰的想法。這需要仔細考慮以下問題程序需要什么信息程序需要執(zhí)行哪些計算和操作程序應(yīng)該報告什么信息例如,計算任意一個圓環(huán)的面積提出問題
15、,明確目標圓環(huán)是什么?如何計算?計算精度?,C語言概述,21,C語言程序的開發(fā)過程,設(shè)計程序決定程序如何去解決問題。需要考慮如何給程序提供必要的數(shù)據(jù)程序中如何表示數(shù)據(jù)用什么方法來處理數(shù)據(jù)程序如何組織程序怎樣報告結(jié)果完成這個程序需要多長時間應(yīng)該用一般的概念考慮設(shè)計中的問題,而不是考慮具體的代碼。,C語言概述,22,C語言程序的開發(fā)過程,編寫代碼編寫代碼來實現(xiàn)前面的設(shè)計,即用某一門語言來表示程序設(shè)計。需要開發(fā)人員熟練
16、掌握該語言的知識??梢栽诓莞寮埳瞎串嬜约旱南敕ɑ驎鴮懘a,但最終必須將代碼輸入計算機。輸入代碼所采用的機制則取決于具體的編程環(huán)境。一般來說,需要使用文本編輯器(例如Windows的記事本程序)來創(chuàng)建一種文件,稱為源文件源文件包含程序設(shè)計的C語言表示形式(稱為源程序或源代碼),C語言概述,23,C語言程序的開發(fā)過程,編譯把C語言源程序轉(zhuǎn)換成機器語言表示的程序。這種程序可以直接被計算機理解和執(zhí)行,所以稱之為可執(zhí)行程序,放在可執(zhí)行
17、文件中。編譯的具體細節(jié)取決于使用的編程環(huán)境。C語言分兩步完成這一工作:編譯和鏈接。編譯器將源代碼轉(zhuǎn)換為目標代碼,并存在目標文件中。鏈接器將目標代碼與其他代碼結(jié)合起來生成可執(zhí)行文件。這種把編譯和鏈接分開來做的方法便于程序的模塊化??梢苑謩e編譯程序的各個模塊,然后用鏈接器把編譯過的模塊結(jié)合起來。這樣,如果需要改變一個模塊,則不需要重新編譯所有其他模塊。,C語言概述,24,C語言程序的開發(fā)過程,運行、測試和調(diào)試程序運行包含可執(zhí)
18、行程序的文件,觀察運行的結(jié)果。在不同的系統(tǒng)中運行程序的方式可能不同。例如,Windows的控制臺和資源管理器。應(yīng)該對程序進行仔細的檢查,看程序是否在做該做的事。比較好的做法是為驗證程序的正確性設(shè)計一個測試計劃。越早做越好,因為它有助于理清程序員的思路。程序中的錯誤被稱為bug,調(diào)試(Debug)就是要發(fā)現(xiàn)并修正錯誤。,C語言概述,25,C語言的編程環(huán)境,開發(fā)程序的具體操作取決于使用的編程環(huán)境因為C語言是可移植的,所以它在許
19、多環(huán)境中都是可用的。例如UNIX、Linux、Windows和MS-DOS。C語言編程環(huán)境包括一系列程序。編輯器編譯器鏈接器運行和調(diào)試環(huán)境,C語言概述,26,C語言的編程環(huán)境,編輯器使用一個文本編輯器程序輸入源代碼,并將代碼保存在源文件中。一般,C程序的源文件名稱的擴展名是.c例如welcometoyou.c和Hello.c。該名稱應(yīng)該遵循特定的操作系統(tǒng)的命名規(guī)則。例如,MS-DOS要求基本名包含的字符數(shù)不能大于8
20、,所以welcometoyou.c不是合法的DOS文件名。Windows允許長文件名,所以welcometoyou.c是合法的Windows文件名。,C語言概述,27,C語言的編程環(huán)境,編譯器編譯器接收源文件,生成目標文件,擴展名為.obj或.o。編譯器還會檢查輸入的程序是否是有效的C語言程序。如果編譯器發(fā)現(xiàn)錯誤,就會報告出錯,且不能生成可執(zhí)行程序。這時就必須修改錯誤,然后再編譯。顯然,為了能迅速找到錯誤,理解特定編譯器的報
21、錯信息是一項有用的技能。,C語言概述,28,C語言的編程環(huán)境,鏈接器目標代碼雖然已經(jīng)是機器代碼,但還不能被執(zhí)行。缺少下面兩個東西啟動代碼:相當(dāng)于程序和操作系統(tǒng)之間的接口。 庫函數(shù)的代碼:庫文件中包含許多函數(shù)的目標代碼。 鏈接器的作用就是將這三個元素(目標代碼、啟動代碼和庫代碼)結(jié)合起來,并將它們放在一個文件中,即可執(zhí)行文件,擴展名為.exe或.out。,C語言概述,29,Windows的C語言編程環(huán)境,Windows的C語言編
22、程環(huán)境Windows并不包含C編譯器,所以需要獲得并安裝一個C編譯器。 許多現(xiàn)代的編譯器都是集成開發(fā)環(huán)境(或叫IDE)的一部分。包括一個編輯器、編譯器、鏈接器和包括一個符號調(diào)試程序在內(nèi)的運行支持系統(tǒng)。許多軟件廠商都提供了基于Windows的集成開發(fā)環(huán)境Microsoft公司的Visual C/C++Borland公司的C/C++ BuilderMetrowerks公司的Code Warrior目前,大多數(shù)IDE把C和C+
23、+編譯器結(jié)合在一起。,C語言概述,30,DOS的C語言編程環(huán)境,DOS的C語言編程環(huán)境基于DOS的IDE Borland公司的Turbo CBorland公司的Borland C++許多Windows上的IDE也提供了在DOS命令行環(huán)境中編程的命令行工具。,C語言概述,31,C語言編程實驗環(huán)境簡介,上機實驗環(huán)境簡介舉例演示Visual C++ 6.0的基本操作啟動創(chuàng)建源文件構(gòu)建工程(編譯、鏈接)運行程序,C語言概述,3
24、2,小結(jié),C是一種通用的程序設(shè)計語言,具有許多突出的優(yōu)點。程序設(shè)計的初學(xué)者應(yīng)該嚴格按照C語言程序的開發(fā)過程進行訓(xùn)練,以便盡快掌握程序設(shè)計的基本原則。C是一種需要編譯的高級語言。進行C語言編程的具體操作依賴于所使用的編程環(huán)境。程序設(shè)計是一門實踐性很強的課程,在學(xué)習(xí)過程中必須十分重視實驗環(huán)節(jié)。,C語言概述,第二講 C語言快速入門,34,第二講 C語言快速入門,C語言程序的基本結(jié)構(gòu)C語言的字符集和關(guān)鍵字Visual C++ 6.0
25、編程環(huán)境,C語言程序設(shè)計,35,C語言程序的基本結(jié)構(gòu),一個簡單的C語言程序問題:在屏幕上顯示一行文字:“Hello World!”源程序運行結(jié)果,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },Hello World!,36,C語言程序
26、的基本結(jié)構(gòu),一個簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },注釋部分以增加程序的可讀性。不被執(zhí)行。,37,C語言程序的基本結(jié)構(gòu),一個簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello W
27、orld! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },預(yù)處理命令 程序中包含某一文件內(nèi)容。 “stdio.h”為標準輸入輸出函數(shù)頭文件名。,38,C語言程序的基本結(jié)構(gòu),一個簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void m
28、ain() /* 定義主函數(shù) */{ printf("Hello World!\n"); },函數(shù) C程序由函數(shù)組成。一個C程序有且僅有一個主函數(shù)(main函數(shù))。,39,C語言程序的基本結(jié)構(gòu),一個簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ pr
29、intf("Hello World!\n"); },函數(shù)說明 說明函數(shù)類型、函數(shù)名和函數(shù)參數(shù)。,40,C語言程序的基本結(jié)構(gòu),一個簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },函數(shù)體 包括變
30、量說明和語句執(zhí)行部分。,41,C語言程序的基本結(jié)構(gòu),一個簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },函數(shù)調(diào)用語句 格式輸出函數(shù)printf( )。 輸出“Hello world!”。,Hello World!,4
31、2,C語言程序的基本結(jié)構(gòu),含有算術(shù)運算的C語言程序問題:求方程 的根(設(shè) )。源程序,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a);
32、 disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},43,C語言程序的基本結(jié)構(gòu),含有算術(shù)運算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("
33、%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},預(yù)處理命令,44,C語言程序的基本結(jié)構(gòu),含有算術(shù)運算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include v
34、oid main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},函數(shù) 一個主函數(shù)(ma
35、in函數(shù))。,45,C語言程序的基本結(jié)構(gòu),含有算術(shù)運算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x
36、1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},函數(shù)說明部分,46,C語言程序的基本結(jié)構(gòu),含有算術(shù)運算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c);
37、 p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},函數(shù)體 變量說明部分 執(zhí)行部分,47,C語言程序的基本結(jié)構(gòu),含有算術(shù)運算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float
38、a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},運行程序 鍵盤輸入a、b、c的值; 屏幕顯示x1和x2的值
39、。,1 0 -4x1=2.000000,x2=-2.000000,48,C語言程序的基本結(jié)構(gòu),包含多個函數(shù)的C語言程序問題:求|a|+|b|的值。源程序,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return y;}void main(){ float a,b,c; printf("input a,b:\n&q
40、uot;); scanf("%f%f",&a,&b); c=absv(a)+absv(b); printf("|a|+|b|=%f\n",c);},49,C語言程序的基本結(jié)構(gòu),包含多個函數(shù)的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return
41、y;}void main(){ float a,b,c; printf("input a,b:\n"); scanf("%f%f",&a,&b); c=absv(a)+absv(b); printf("|a|+|b|=%f\n",c);},程序由兩個函數(shù)組成: absv函數(shù) main函數(shù),50,C語言程序的基本結(jié)構(gòu),包含多個函數(shù)的
42、C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return y;}void main(){ float a,b,c; printf("input a,b:\n"); scanf("%f%f",&a,&b); c=absv(a)+absv(b)
43、; printf("|a|+|b|=%f\n",c);},調(diào)用absv函數(shù)求絕對值。,51,C語言程序的基本結(jié)構(gòu),包含多個函數(shù)的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return y;}void main(){ float a,b,c; printf("inpu
44、t a,b:\n"); scanf("%f%f",&a,&b); c=absv(a)+absv(b); printf("|a|+|b|=%f\n",c);},運行程序 屏幕顯示提示信息; 鍵盤輸入a、b的值; 屏幕顯示a、b絕對值之和。,input a,b:-5 13|a|+|b|=18.000000,52,C語言程序的基本結(jié)構(gòu),C語言程序的
45、基本結(jié)構(gòu)小結(jié),C語言快速入門,⑴一個C程序由一個或多個函數(shù)組成,但有且僅有一個主函數(shù)(main函數(shù));main函數(shù)是程序執(zhí)行的入口,可置于程序的任何位置。⑵程序中可以有預(yù)處理命令(如:include 命令)。預(yù)處理命令通常放在程序的最前面。⑶每個語句以分號結(jié)尾;預(yù)處理命令、函數(shù)頭和花括號“}”之后不能加分號。⑷ 函數(shù)包括函數(shù)的說明部分和函數(shù)體;函數(shù)體包括變量說明部分和執(zhí)行部分;函數(shù)體由一對花括號“{ }”括起來。 ⑸括在/*…*
46、/內(nèi)的文本為注釋。⑹一行可以寫幾個語句,一個語句也可以寫在多行上。⑺程序區(qū)分大小寫字母。一般變量、語句等用小寫字母書寫;符號常量、宏名等用大寫字母書寫。⑻標識符和保留字之間須加空格以示分隔。,53,C語言的字符集,C語言源程序中使用的字符來自C語言的字符集。字符集(Character set)——來自ASCII表52個大小寫字母(Letters)A B C D E F G H I J K L M N O P Q R S T
47、U V W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y z10個數(shù)字(Digits)0 1 2 3 4 5 6 7 8 9空白符(Blanks)空格符、制表符、回車符、換行符圖形符號(Graphic characters)! # % ^ & * ( _ ) - + = ~ [ ] ' | \ ; : " {} , . / ?,C語
48、言快速入門,54,C語言的關(guān)鍵字,關(guān)鍵字(Keywords)是C語言中的詞匯。也稱為保留字(Reserved words)類型說明int、long、short、float、double、char、unsigned、signed、const、void、volatile、enum 、struct、union語句定義if、else、goto、switch、case、do、while、for、continue、break、retu
49、rn、default、typedef存儲類別說明auto、register、extern、static長度運算符sizeof,C語言快速入門,55,C語言的標識符,標識符(Identifiers)是程序中引用對象的名稱。用來標識變量、符號常量、數(shù)組、函數(shù)、結(jié)構(gòu)體、共用體、自定義類型等。命名規(guī)則只能包括大小寫字母、數(shù)字和下劃線;首字符必須是字母或下劃線;一般內(nèi)部標識符的前31個字符有效,而外部標識符的前6個字符有效;
50、(視具體編譯器的規(guī)定)不能與關(guān)鍵字相同。,C語言快速入門,56,Visual C++ 6.0編程環(huán)境,舉例演示Visual C++ 6.0的基本操作創(chuàng)建工作區(qū)創(chuàng)建工程(程序)并添加到工作區(qū)創(chuàng)建源文件并添加到工程構(gòu)建工程(編譯、鏈接)運行程序,C語言快速入門,57,程序的測試與調(diào)試,程序錯誤語法錯誤未遵循C的語法規(guī)則。編譯器可以檢查。運行時錯誤在程序運行時執(zhí)行了無法處理的操作。邏輯錯誤程序不能按照預(yù)期的方式運行,
51、不能產(chǎn)生預(yù)期的結(jié)果。,C語言快速入門,58,程序的測試與調(diào)試,程序測試審查和運行程序,檢測程序是否存在錯誤。測試步驟在編譯前仔細檢查程序的源代碼,看看是否有明顯的錯誤。查看編譯器發(fā)現(xiàn)的語法錯誤。對于運行時錯誤和邏輯錯誤可以采用正確輸出測試。想找出所有錯誤是不切實際的。,C語言快速入門,59,程序的測試與調(diào)試,程序調(diào)試隔離和修正錯誤。調(diào)試方法采用手工方式來跟蹤程序。在程序中的關(guān)鍵點放置輸出語句來顯示變量的值。使用調(diào)試
52、器。,C語言快速入門,60,小結(jié),C程序的基本結(jié)構(gòu)C語言程序是由一個或多個函數(shù)組成的。函數(shù)可以是標準庫函數(shù)和自定義的函數(shù)。C語言的語句可以包含一個表達式,也可以包含一個函數(shù)調(diào)用,以一個分號作為結(jié)束標志。C語言中的變量在使用之前必須先聲明,通過聲明語句中為變量指定一個名字和數(shù)據(jù)類型。可以通過賦值運算改變變量的值。C語言可以使用scanf()函數(shù)和printf()函數(shù)輸入和輸出數(shù)據(jù)。,C語言快速入門,61,小結(jié),編譯器可以發(fā)現(xiàn)程序中
53、的語法錯誤,但是程序中的運行時錯誤和邏輯錯誤只有在程序運行時才表現(xiàn)出來。檢測運行時錯誤和邏輯錯誤的一種簡單實用的方法是跟蹤程序的運行狀態(tài),即程序每執(zhí)行一步之后所有或主要變量的值。,C語言快速入門,第三講 基本數(shù)據(jù)類型,63,第三講 基本數(shù)據(jù)類型,引例變量與常量預(yù)備知識內(nèi)儲存器的組織數(shù)據(jù)類型基本數(shù)據(jù)類型整數(shù)類型字符浮點類型,C語言程序設(shè)計,64,引例,引例問題計算任意一個圓的面積。源程序(cw02-01.c),基本數(shù)
54、據(jù)類型,#include void main() { float r, area; //定義變量 scanf(“%f”,&r); //讀取輸入的半徑 area = 3.14*r*r; //計算圓的面積 printf(“area=%f”,area); //輸出},1area=3.140000,,,area,r,area = Лr2,65,變量與常量,數(shù)據(jù)(Data)程序需要使用數(shù)據(jù)。
55、數(shù)據(jù)是信息的載體。數(shù)據(jù)有多種形式:數(shù)、字符、圖片等。常量(Constants)在程序運行之前可以預(yù)先設(shè)定,并在整個運行過程中沒有變化的數(shù)據(jù)。例如引例中的圓周率3.14。變量(Variables)在程序運行過程中可能變化或被賦值的數(shù)據(jù)。例如引例中的半徑和面積。,基本數(shù)據(jù)類型,66,數(shù)據(jù)類型,數(shù)據(jù)類型的作用決定數(shù)據(jù)的存儲方式和占用的存儲空間的大小。決定可以進行的操作。C語言的數(shù)據(jù)類型基本類型整型(integer)
56、,字符型(character),浮點型(floating-point),枚舉類型(enumeration)構(gòu)造類型結(jié)構(gòu)體(structure),共用體(union),數(shù)組(array)指針類型(pointer)空類型(void),基本數(shù)據(jù)類型,67,,位、字節(jié)和字,內(nèi)存儲器的組織,基本數(shù)據(jù)類型,,位(bit):最小的存儲單位,可以容納兩個值之一,即0或1。,,,,2000,2001,2002,字節(jié)(Byte):基本的存儲單位,
57、8位。,字(word):自然的存儲單位,包含若干個字節(jié)。例如32位機的一個字就是32位。,,地址:以字節(jié)為單位從0開始編號。,68,整數(shù)的存儲方式,有符號的正整數(shù)在內(nèi)存中以二進制補碼形式存放。正整數(shù)的補碼與原碼相同。例如:10,基本數(shù)據(jù)類型,符號位,,,數(shù)軸,0,215-1=32767,可表示的數(shù)的范圍,,-215=-32768,69,整數(shù)的存儲方式,有符號的負整數(shù)在內(nèi)存中以二進制補碼的形式存放。例如:-10,基本數(shù)據(jù)類型,符
58、號位,70,整數(shù)的存儲方式,無符號整數(shù)所有二進制位都存放數(shù)值。例如:65535,基本數(shù)據(jù)類型,,,0,216-1=65535,可表示的數(shù)的范圍,71,整數(shù)的類型,C語言提供多種整數(shù)類型為程序員提供了針對不同用途的多種選擇。,基本數(shù)據(jù)類型,C標準只規(guī)定:short ≤ int ≤ long最大最小值參考,僅供參考,實際值與所使用的操作系統(tǒng)、編譯系統(tǒng)、機器有關(guān)。,72,整型常量,整型常量有三種形式:十進制(decimal)整數(shù)1
59、2 65 65535八進制(octal)整數(shù):帶前綴 0(zero)014 0101 0177777十六進制(hexadecimal)整數(shù):帶前綴 0x 或 0X0xc 0x41 0xffff默認類型是int,即有符號的基本整型??梢约由虾缶Y u 或 U 表示無符號整數(shù),或者 l 或 L 表示長整數(shù)。0xb5Lu,基本數(shù)據(jù)類型,73,整型變量,聲明變量(Declaration)變量在使用之
60、前必須被聲明。聲明語句的格式:舉例,基本數(shù)據(jù)類型, [,[,...]];,int counter;int width, height;short x, y;long number;,變量聲明創(chuàng)建了變量:為變量分配了存儲空間。,,,height,74,整型變量,初始化(Initialize)變量為變量賦一個初始值。可以在聲明語句中初始化變量。舉例變量獲得值的方法直接賦值輸入初始化,基本數(shù)據(jù)類型,int co
61、unter = 0;int width = 352, height = 288;,,初始化式,,288,height,75,整型變量,輸出變量的值可以使用printf()函數(shù)。與int類型對應(yīng)的格式說明符是%d。舉例(cw02-02a.c),基本數(shù)據(jù)類型,#include void main() { int a, b; a=32767; b=-32768; printf("a=%d,b=%d\n&q
62、uot;, a, b);},a=32767,b=-32768,76,整數(shù)的溢出,溢出整數(shù)太大,超出了整數(shù)類型的數(shù)值范圍。使用printf() 時與unsigned int類型對應(yīng)的格式說明符是%u。舉例(cw02-02b.c),基本數(shù)據(jù)類型,#include void main() { int a, b; unsigned c, d; a = 2147483647; b = a+1; c = 4294967
63、295; d = c+1; printf("a=%d,b=%d\n", a, b); printf("c=%u,d=%u", c, d);},a=2147483647,b=-2147483648c=4294967295,d=0,???,77,整數(shù)的溢出,溢出結(jié)果分析結(jié)論a+1 的結(jié)果(2147483648) 超出了基本整型變量 b 所能容納(表示)的數(shù)值范圍(-214
64、7483648~2147483647)。請分析d的結(jié)果。,基本數(shù)據(jù)類型,0 1 1 1 1 1 1 1...1 1 1 1 1 1 1,1 0 0 0 0 0 0 0...0 0 0 0 0 0 0,a(2147483647),,1 0 0 0 0 0 0 0...0 0 0 0 0 0 0,,a+1(2147483648),b(-2147483648),,,,,,12,,加正數(shù),減正數(shù),,78,字符的存儲方式,字符編碼計算機使用一
65、種數(shù)字編碼(整數(shù))來表示字符,每一個字符都對應(yīng)一個特定的整數(shù)。常用的編碼是ASCII(美國信息交換用標準碼)。7位二進制數(shù),十進制碼值范圍從0到127。一般用一個字節(jié)保存,最高位為0。字符的存儲方式與整數(shù)相同舉例字母A的ASCII碼值為65,那么在內(nèi)存中以65的二進制形式存儲,且占一個字節(jié)。,基本數(shù)據(jù)類型,01000001,79,字符的類型和字符變量,C語言的字符類型:char占一個字節(jié);可視為一個有符號的整數(shù)。舉
66、例(cw02-03.c),基本數(shù)據(jù)類型,#include void main() { char c1, c2; //聲明字符變量 c1 = 97; //把一個整數(shù)賦值給字符變量 c2 = c1-32; //字符變量可以進行算術(shù)運算 printf("c1=%c,c2=%c\n", c1, c2); printf("c1=%d,c2=%d\n", c1, c2);},c1
67、=a,c2=Ac1=97,c2=65,80,字符常量,字符常量用單引號括起來的一個字符。'x' '9' '+‘C語言將字符常量視為int類型。舉例(cw02-04.c)如果int類型為16位,char類型為8位,那么對于’bc’,將把’b’和’c’的ASCII碼值存儲在兩個字節(jié)中,并把’c’賦值給變量c2。注意:不同系統(tǒng)處理方式不同,結(jié)果不同。,基本數(shù)據(jù)類型,
68、char c1, c2;c1=‘a(chǎn)’;c2=‘bc’;,,0 1 1 0 0 0 0 1,c1,0 1 1 0 0 0 1 1,c2,0 1 1 0 0 0 1 1,0 1 1 0 0 0 1 0,‘bc’,L,H,97,99,99,98,81,字符常量,轉(zhuǎn)義字符(escape character)指代一些特殊的字符。(打印不出來的字符)舉例(cw02-05.c),基本數(shù)據(jù)類型,\a 警報\\ 反斜杠(\)\
69、b 退格\? 問號(?)\f 走紙\‘ 單引號(’)\n 換行\(zhòng)“ 雙引號(”)\r 回車\ooo 八進制值(o表示一個八進制數(shù)字)\t 水平制表符\xhh 十六進制值(h表示一個十六進制數(shù)字)\v 垂直制表符,#include void main(){ printf("a\tb\nc\bd\100\x40\n");},a???????bd@@,82,浮
70、點數(shù)的存儲方式,浮點數(shù)浮點型數(shù)據(jù)在內(nèi)存中按指數(shù)形式存放。例如:314.15 = 3.1415×102,基本數(shù)據(jù)類型,由此可見,尾數(shù)部分的寬度決定了有效數(shù)字的個數(shù)(即精度),階碼部分的寬度決定了數(shù)值范圍。,,科學(xué)計數(shù)法允許使用少量的數(shù)字表示很大范圍的數(shù)和很小的數(shù)。,83,浮點數(shù)的類型,浮點數(shù)也有多種類型類型名稱及典型大小,基本數(shù)據(jù)類型,S = ±1參考,僅供參考,實際值與所使用的操作系統(tǒng)、編譯系統(tǒng)、機器有關(guān)。,
71、,,數(shù)軸,0,可表示的正數(shù),,,可表示的負數(shù),84,浮點型常量,浮點型常量有兩種形式:十進制形式12.3 .65 0.指數(shù)形式: 1.2e-2 .1E5 7E01.2×10-20.1×1057.0×100默認類型是double??梢约由虾缶Y f 或 F 表示float類型,或者 l 或 L 表示long double類型,否則該常量是double類型。2.3f
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 常見腫瘤非常詳細ppt培訓(xùn)課件
- 非常全的c語言常用算法
- c語言綜合課件
- 郝斌c語言詳細筆記(附源碼)
- 學(xué)習(xí)c語言詳細筆記(完整版)
- 孕婦每周食譜-非常詳細
- 郝斌c語言詳細筆記附源代碼
- c語言題庫帶詳細講解答案解析
- 非常好的c語言章節(jié)習(xí)題集帶答案
- pid圖繪制方法(非常詳細)
- 校本課程綱要(非常詳細)
- c語言課件第8.3章
- 婚禮物品采購清單(非常詳細)
- hadoop安裝指南(非常詳細,包成功)
- 非常詳細的lte信令流程
- 非常詳細的-docker-學(xué)習(xí)筆記
- 軟件測試用例實例(非常詳細)
- 婚禮物品采購清單(非常詳細)
- c語言期末考試試題及詳細答案
- 家庭贍養(yǎng)協(xié)議書非常詳細版
評論
0/150
提交評論