




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計山西財經(jīng)大學(xué)華商學(xué)院計算機(jī)教學(xué)中心2教學(xué)要求掌握C語言的基礎(chǔ)知識,包括數(shù)據(jù)類型、 輸入輸出的基本操作以及簡單程序設(shè)計; 掌握順序、選擇、循環(huán)三大結(jié)構(gòu)的編程; 掌握函數(shù)的定義與調(diào)用;掌握數(shù)組、指針的應(yīng)用;掌握結(jié)構(gòu)體、文件的操作;會進(jìn)行綜合程序設(shè)計。 3 1.1 程序與程序設(shè)計 1.2 算法及其描述 1.3 C語言的發(fā)展及特點(diǎn) 1.4 C語言程序的基本結(jié)構(gòu) 1.5 C語言字符集、標(biāo)識符和關(guān)鍵字 1.6 C語言程序的開發(fā)環(huán)境第1章 C語言程序設(shè)計概述第 1 章 C語言程序設(shè)計概述4一、程序 實(shí)際上是一個用計算機(jī)語言描述的某一問題的解決步驟。 第1章 C語言程序設(shè)計概述1.1 程序與程序
2、設(shè)計二、程序設(shè)計 人們常把編寫程序的過程稱為程序設(shè)計。在進(jìn)行程序設(shè)計時離不開程序設(shè)計語言。程序設(shè)計語言的種類很多,從其發(fā)展歷史以及功能情況來劃分可以大致劃分成五個階段: 1、機(jī)器語言: 計算機(jī)可以直接識別和執(zhí)行的二進(jìn)制語言。如: 加法指令: 1 0 0 0 0 0 0 0 減法指令: 1 0 0 1 0 0 0 0特點(diǎn):計算機(jī)可以直接識別和執(zhí)行,效率高, 節(jié)省內(nèi)存;但難以閱讀和記憶。 5第1章 C語言程序設(shè)計概述2、匯編語言: 用“助記符”來表示機(jī)器指令。如: ADD A, B SUB A, B計算機(jī)不能直接識別和執(zhí)行用匯編語言編寫的源程序,它必須經(jīng)過一個叫匯編程序的系統(tǒng)軟件翻譯成機(jī)器語言程序
3、(即目標(biāo)程序)后才能執(zhí)行。3、算法語言: 即高級語言,不依賴于機(jī)器,降低了編程的難度。如:C、PASCAL、FORTRAN等,用+和-來 表示加減運(yùn)算。計算機(jī)也不能直接執(zhí)行算法語言描述的源程序,必須先經(jīng)過編譯程序或解釋程序翻譯成目標(biāo)程序后,才能由計算機(jī)執(zhí)行。6第1章 C語言程序設(shè)計概述4、面向任務(wù)的程序設(shè)計語言: 是非過程化的語言,不需要知道問題是如何求解的。例如:要從某學(xué)生表SS用數(shù)據(jù)庫(SQL)查詢語言獲取表中記錄的信息,采用SELECT語句,描述如下: SELECT SSNO,SSNAME,SSAGE,SSSEX FROM SS5、面向?qū)ο蟮某绦蛟O(shè)計語言: 認(rèn)為系統(tǒng)是由許多對象組成的,對
4、象通過消息相互 聯(lián)系和相互作用,從而完成系統(tǒng)的功能。如C+, 設(shè)計的程序更易懂, 更適合更大規(guī)模的程序開發(fā)。 數(shù)據(jù)的確定:確定數(shù)據(jù)的類型和數(shù)據(jù)的存放方式。 高級語言中用變量定義來實(shí)現(xiàn)。 操作步驟(也即算法)的確定:用語句來實(shí)現(xiàn)。程序設(shè)計7一、算法的概念 算法是由一套規(guī)則組成的一個過程,算法是對某一特定問題的求解步驟的一種描述。算法應(yīng)當(dāng)具備以下幾個方面的特點(diǎn): 第1章 C語言程序設(shè)計概述1.2 算法及其描述 瑞士計算機(jī)科學(xué)家N沃思教授提出了程序定義的著名公式: 程序=數(shù)據(jù)結(jié)構(gòu)+算法1、一個算法必須保證執(zhí)行有限步之后結(jié)束;2、算法的每一個步驟必須具有確切的定義;3、應(yīng)對算法給出初始量;4、算法具有
5、一個或多個輸出;5、算法的每一步都必須是計算機(jī)能進(jìn)行的有效操作。 8第1章 C語言程序設(shè)計概述一、算法的描述方法 算法是考慮實(shí)現(xiàn)某一個問題求解的框架流程,而程序設(shè)計則是根據(jù)這一求解的框架流程進(jìn)行語言細(xì)化實(shí)現(xiàn)這一問題求解的具體過程。常用描述算法的工具有:1、自然語言: 使用人們?nèi)粘_M(jìn)行交流的語言。如:從a,b中找出一個大的數(shù)給max。 從鍵盤輸入兩個數(shù)給a和b; 如果a比b大,則把a(bǔ)的值傳給max, 否則把b的值傳給max; 輸出max的值。2、專用工具: 借助于有關(guān)圖形工具或代碼符號來描述。常用的工具有流程圖、N-S圖等。9如用N-S圖來描述從a和b中找大數(shù)的問題。第1章 C語言程序設(shè)計概述輸
6、入a和bY ab Nmaxa maxb輸出max3、程序設(shè)計語言: 算法最終要用程序設(shè)計語言來描述,計算機(jī)才能保存、翻譯和執(zhí)行。如用C語言來描述從a和b中找大數(shù)的問題。 常用的算法有:迭代法、枚舉法、遞歸法、遞推法等。scanf(“%d,%d”,&a,&b);if(ab) max=a;else max=b;printf(“%d,%d”,a,b);10二、C語言的特點(diǎn) 1、具有結(jié)構(gòu)化語言的特點(diǎn),用函數(shù)作為程序的組成單 位,設(shè)計出的程序簡潔、緊湊、結(jié)構(gòu)清晰; 2、既有高級語言的特點(diǎn)(可移植性好),又有低級語言 的許多功能(能對硬件操作); 3、提供了豐富的數(shù)據(jù)類型; 4、語法限制不太嚴(yán)格,程序設(shè)計
7、自由度大; 5、生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行速度快。第1章 C語言程序設(shè)計概述1.3 C語言的發(fā)展及特點(diǎn)一、C語言的發(fā)展概況 起源于1968年發(fā)表的CPL語言 ,目前在微型計算機(jī)上使用的有Microsoft C,Quick C,Turbo C等多種版本。 11#include /*標(biāo)準(zhǔn)輸入輸出頭文件*/ main() int a,b,c,s; /*定義四個整型變量*/ a=8;b=12;c=6; /*變量賦值*/ s=a+b*c; /*算術(shù)運(yùn)算并賦值*/ printf(“s=%dn”,s); /*輸出結(jié)果*/ 1.4 C語言程序的基本結(jié)構(gòu)第1章 C語言程序設(shè)計概述一、簡單的C語言程序示例例1
8、-1:已知三個整數(shù)8、12、6,按公式s=a+bc計算 并顯示結(jié)果。12 語句必須以分號(;)作結(jié)束標(biāo)志; 由“/*”與“*/”之間的內(nèi)容構(gòu)成C語言程序的注釋 部分; 用預(yù)處理命令#include可以包含有關(guān)文件的信息。 在C語言中區(qū)分大小寫,如Main、MAIN、main、 maiN是不相同的。 第1章 C語言程序設(shè)計概述 一個完整的C程序由若干個函數(shù)組成,至少有一 個main函數(shù),每個函數(shù)包括: 函數(shù)說明部分 變量定義 函數(shù)體 語句部分13一、語言字符集1、英文字母:大小寫各26個,共計52個;2、阿拉伯?dāng)?shù):09共10個數(shù)字;3、下劃線:_; 4、特殊符號:通常指由12個符號組成的運(yùn)算符。
9、 算術(shù)運(yùn)算符: + - * / % + - 關(guān)系運(yùn)算符: = 條件運(yùn)算符: ?: 和賦值運(yùn)算符:= 其他分隔符: ( ) . , ;第1章 C語言程序設(shè)計概述1.5 C語言字符集、標(biāo)識符和關(guān)鍵字根據(jù)二維數(shù)組的定義,我們可以類推出多維數(shù)組的定義。static int b223; /*定義了一個維的靜態(tài)整型數(shù)組*/float c2322; /*定義了一個維浮點(diǎn)型數(shù)組*/ 在數(shù)組定義時,多維數(shù)組的維從左到右第一個稱第一維,第二個稱第二維,依此類推。多維數(shù)組元素的順序仍由下標(biāo)決定。下標(biāo)的變化是先變最右邊的,再依次變化左邊的下標(biāo)。 三維數(shù)組b的12個元素是:b000 b001 b002 b010 b01
10、1 b012b100 b101 b102 b110 b111 b112142022/8/14152022/8/141.二維數(shù)組元素的引用形式: 數(shù)組名下標(biāo)1下標(biāo)2下標(biāo)稱第一維下標(biāo)(或稱行),下標(biāo)稱第二維下標(biāo)(或稱列)。下標(biāo)從開始變化,其值分別小于數(shù)組定義中的常量表達(dá)式與常量表達(dá)式。在二維數(shù)組中,一個元素的位置由其下標(biāo)決定。對 float a43;其12個元素是:第 ()行:a00,a01,a02第 ()行:a10,a11,a12第 ()行:a20,a21,a22第 ()行:a30,a31,a32二維數(shù)組的每一個元素都可以作一個變量來使用。如: printf(“%d”,a00); scanf(%
11、d,&a11); a10+=a00+3*a01; mainint a23; printf(”nInput array a:”); for (j=0;j2;j+) for (k=0;k3;k+) scanf(“%d”, &ajk);/*輸入數(shù)據(jù)到二維數(shù)組中*/ printf(”nOutput array a:n”); for (j=0;j2;j+) for (k=0;k3;k+) /*循環(huán)三次,輸出一行共三個元素*/ printf(“%4d”,ajk); printf(“n”); /*輸出一行后換行,再輸出下一行*/ 162022/8/14對二維數(shù)組的輸入輸出多使用二層循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。外層循環(huán)處
12、理各行,循環(huán)控制變量j作為數(shù)組元素的第一維下標(biāo);內(nèi)層循環(huán)處理一行的各列元素,循環(huán)控制變量k作為元素的第二維下標(biāo)。172022/8/14二維數(shù)組的存儲結(jié)構(gòu)設(shè)有定義 int a23; float b32;a00 a01a02a10a11a12第行第行第行B00b01b10b11b20b21第行第行系統(tǒng)為數(shù)組在內(nèi)存中分配一片連續(xù)的內(nèi)存空間,將二維數(shù)組元素按行的順序存儲在所分配的內(nèi)存區(qū)域。數(shù)組a與b的各元素的存儲順序如右圖所示 例7.5 從鍵盤上輸入9個整數(shù),保存在二維數(shù)組中,按數(shù)組原來位置輸出第一行和第一列的所有元素。182022/8/14第0行第1行第2行 0列列列分析:1、輸入數(shù)組。2、輸出數(shù)組
13、時要考慮不是所有數(shù)據(jù)都輸出。思考:應(yīng)該輸出的數(shù)據(jù)在位置關(guān)系上有何特點(diǎn)?(關(guān)鍵?。?include main() int i,j,a33; for(i= 0;i3;i+) /*輸入數(shù)組*/for(j=0;j3;j+) printf(a%d%d=,i,j); scanf(%d,&aij; 192022/8/14 for(i=0;i3;i+) /*輸出數(shù)組*/ for (j=0;j3;j+)if(i=1|j=1) printf(%-6d,aij);else printf(%-6c, ); printf(“n”); 二維數(shù)組的初始化 分行給二維數(shù)組賦初值,每個花括號內(nèi)的數(shù)據(jù)對應(yīng)一行元素。 例:int
14、a23=1,2,3,2,3,4; 將所有初值寫在一個花括號內(nèi),順序給各元素賦值。 例:int a23=1,2,3,2,3,4;只對部分元素賦值,沒有初值對應(yīng)的元素賦0值或空字符(字符數(shù)組)。 例:int a23=1,2,4;給全部元素賦初值或分行初始化時,可不指定第一維大小,其大小系統(tǒng)可根據(jù)初值數(shù)目與列數(shù)(第二維)自動確定;但必須指定第二維的大小。例:int a3=1,2,3,4,5,6;int a3=0,0,5;202022/8/14 例7.6 用如下的33矩陣初始化數(shù)組a33,求矩陣的轉(zhuǎn)置矩陣。123147456258789369轉(zhuǎn)置矩陣:是將原矩陣元素按行列互換形成的矩陣方法1:轉(zhuǎn)置矩陣
15、是將原矩陣元素按行列互換形成的。123147456258789369方法2:沿主對角線將對稱位置元素互換即可。212022/8/14程序如下:#include main()int j,k; int a33=1,2,3,4,5,6,7,8,9,b33; for (j=0;j3;j+)for(k=0;k3;k+) bjk=akj; for(j=0;j3;j+)for(k=0;k3;k+)printf(“%6d”,bjk); printf(“n”);222022/8/147.3 數(shù)組的應(yīng)用 1.利用數(shù)組求fiboncaci數(shù)列的前n項(xiàng)例7.7 求fiboncaci數(shù)列的前20項(xiàng): f0=1 f1=1
16、 fi=fi-1+fi-2 (i=2, 3,n)將前20項(xiàng)輸出到屏幕上,每行五項(xiàng)。232022/8/14分析:根據(jù)這個數(shù)列的組成規(guī)律:從第三項(xiàng)開始,每個數(shù)據(jù)項(xiàng)的值為前兩個數(shù)據(jù)項(xiàng)的和,采用遞推方法來實(shí)現(xiàn)??梢杂靡粋€一維整型數(shù)組fib 20來保存這個數(shù)列的前20項(xiàng)。#include #include main()int i,fib20;fib0=1;fib1=1;for(i=2; i=19;i+) fibi= fibi-1+ fibi-2;printf( Fibonaci Numbers are:n);242022/8/14for(i=0;i20;i+) if (i%5=0)printf(n);
17、printf(%7d,fibi); getch();2.利用數(shù)組處理批量數(shù)據(jù)例7.8 從鍵盤上輸入若干學(xué)生(不超過100人)的成績,計算平均成績,并輸出高于平均分的人數(shù)及成績。輸入成績?yōu)樨?fù)時結(jié)束。 分析:根據(jù)題意,可以定義一個有100個元素的一維數(shù)組score,先將成績輸入到數(shù)組中,并計算平均成績。然后,將數(shù)組中的成績值一個個與平均值比較,輸出高于平均分的成績。 252022/8/14程序如下: #include main() float score100,ave,sum=0,x; int i,n=0,count; printf(Input score:); scanf(%f,&x); whi
18、le (x=0&n=100) sum+=x; scoren+=x; /*輸入的成績保存在數(shù)組score中*/ scanf(%f,&x); ave=sum/n;printf(average= %fn,ave); /*輸出平均分*/262022/8/14/*接上頁*/for (count=0,i=0;iave) printf(%fn,scorei); /*輸出高于平均分的成績*/ count+; /*統(tǒng)計高于平均分成績的人數(shù)*/ if (count%5= =0) printf(“n”); /*每行輸出成績達(dá)5個時換行*/ printf(count=%d n,count); /*輸出高于平均分的人數(shù)
19、*/272022/8/143. 利用數(shù)組排序例7.9 從鍵盤上輸入10個整數(shù),用選擇法 將其按由小到大的順序排列并輸出282022/8/14基本思想:(1)從第個位置到第個位置中選擇出 最小的一個與第個位置的數(shù)交換。(2)從第個位置到第個位置中選擇出最小的一個與第個位置的數(shù)交換。 (9) 從第個位置到第個位置中選擇出最小的一個與第個位置的數(shù)交換。 5 13 3 9 32 22 8 1 23 211 13 5(3) 9 32 22 8 3(1) 23 211 3 13 9 32 22 8 5 23 211 3 5 9 32 22 8 13 23 211 3 5 8 32 22 9 13 23 2
20、1 1 3 5 8 9 22 32 13 23 21 1 3 5 8 9 13 32 22 23 21 1 3 5 8 9 13 21 22 23 32 1 3 5 8 9 13 21 22 23 32 1 3 5 8 9 13 21 22 23 32292022/8/14輸入數(shù)據(jù): 5 13 3 9 32 22 8 1 23 21排序過程如下:#include main()int I,j,t,a10;for(I=0;I10;I+) scanf(“%d”,&aI);/*輸入數(shù)據(jù)到數(shù)組*/302022/8/14內(nèi)循環(huán):在(I,10)內(nèi)選擇最小數(shù)外循環(huán):控制選擇的次數(shù)for(I=0;I9;I+)f
21、or(j=I+1;jaj)t=aI;aI=aj;aj=t;printf(“n”);for(I=0;I10;I+)printf(“%6d”,aI);/*輸出排序后的數(shù)據(jù)*/31 二、標(biāo)識符 就是用來標(biāo)識變量名、符號常量名、函數(shù)名、類型名、文件名等的有效字符序列。 C語言規(guī)定: 標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例如:合法標(biāo)識符: _22A,lea_1,avg3,day,ABCde43xyw8不合法標(biāo)識符:M.J.YORK,$_238,#xy,a*b,8Tea注意: 在C語言中,大小寫字母不等效。因此,a和A,I和i,Sum和sum,分別是兩個不同的標(biāo)識符。第1章 C語言程序設(shè)計概述32三、關(guān)鍵字 就是具有特定含義的標(biāo)識符,用戶不能用來作自定義標(biāo)識符。由ANSI標(biāo)準(zhǔn)推薦的關(guān)鍵字有32個,常用的有: 與數(shù)據(jù)類型有關(guān)的: char int float double sig
溫馨提示
- 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è)發(fā)展前景預(yù)測及投資方向研究報告
- 2025年機(jī)械零件項(xiàng)目可行性研究報告
- 2025年中國汽車用橡膠管市場深度分析及投資戰(zhàn)略咨詢報告
- 2024-2025學(xué)年高中語文第二單元傳記第4課“布衣總統(tǒng)”孫中山節(jié)選練習(xí)粵教版必修1
- 2025年科研項(xiàng)目年度總結(jié)報告
- 2024-2025學(xué)年高中物理第1章電場第6節(jié)示波器的奧秘學(xué)案粵教版選修3-1
- 2024-2025學(xué)年高中物理第6章章末復(fù)習(xí)課教案含解析魯科版選修1-1
- 2025年自動人行道鋁合金踏板項(xiàng)目投資可行性研究分析報告
- 2025年性能測試板行業(yè)深度研究分析報告
- 2024年固體廢物處理市場評估分析及發(fā)展前景調(diào)研戰(zhàn)略研究報告
- 2023年湖南長沙自貿(mào)投資發(fā)展集團(tuán)有限公司招聘筆試真題
- 《電子技能與實(shí)訓(xùn)》課件
- 基礎(chǔ)攝影培訓(xùn)
- 高一政治學(xué)科期末考試質(zhì)量分析報告(7篇)
- 《面試官培訓(xùn)》課件
- 導(dǎo)管相關(guān)性血流感染-7
- 汽車維修保養(yǎng)協(xié)議三篇
- 2024年銀行、金融反詐騙必知知識試題與答案
- 2024年匯算清繳培訓(xùn)
- 幼兒園監(jiān)控項(xiàng)目技術(shù)方案
- 《智能家居系統(tǒng)》課件
評論
0/150
提交評論