版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、《 C語言程序設(shè)計(jì)案例教程》,Huanghuai University Department of Information Engineering,主講:傅 豐黃淮學(xué)院信息工程學(xué)院,北京大學(xué)出版社,汪新民、劉若慧主編,自我介紹,傅豐1969年4月19日戍時(shí)生O型血、白羊座工作經(jīng)歷:從教21年專業(yè):數(shù)學(xué)—計(jì)算機(jī)Tel:2853011QQ:10840899Email:fu_feng@sina.com,,一、課程的基本要
2、求: 1、掌握C語言的語法規(guī)則,數(shù)據(jù)類型;掌握C程序的結(jié)構(gòu)。 2、學(xué)習(xí)運(yùn)用高級(jí)語言進(jìn)行程序設(shè)計(jì)的思想和方法。 3、熟悉并掌握一些基本算法和程序設(shè)計(jì)技術(shù),并能用C語言解決實(shí)際問題。二、課程設(shè)置目的: 本課程是計(jì)算機(jī)專業(yè)學(xué)生的基礎(chǔ)課,是一門理論性和實(shí)踐性較強(qiáng)的課程。 通過本課程的學(xué)習(xí)掌握傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)的一般方法,培養(yǎng)嚴(yán)謹(jǐn)?shù)某绦蛟O(shè)計(jì)思想和較強(qiáng)的動(dòng)手能力,并以此為基礎(chǔ)逐漸掌握復(fù)雜軟件的設(shè)計(jì)和開發(fā)手段,為后序課程的學(xué)
3、習(xí)打下扎實(shí)的理論和實(shí)踐基礎(chǔ)。,課程簡介,1、C語言程序設(shè)計(jì),何欽銘、顏暉主編,高等教育出版社2、C語言程序設(shè)計(jì),譚浩強(qiáng)主編,清華大學(xué)出版社3、C語言程序設(shè)計(jì)教程 ,蘇小紅等著,高等教育出版社 4、《C語言程序設(shè)計(jì)實(shí)習(xí)指導(dǎo)與習(xí)題集》 ,譚浩強(qiáng)等編著,清華大學(xué)出版社5、《C語言程序設(shè)計(jì)》,夏寬理編著,復(fù)旦大學(xué)出版社,參考資料,開復(fù)學(xué)生網(wǎng): 給中國學(xué)生的第五封信——你有選擇的權(quán)利
4、 (主題思想:積級(jí)主動(dòng)),記憶語法、思考算法。讀懂程序、循序漸進(jìn)。記好筆記、上機(jī)調(diào)試。,學(xué)習(xí)方法,第一章 C語言概述,§1 程序設(shè)計(jì)語言概述§2 用庫函數(shù)組裝C程序§3 自己設(shè)計(jì)C函數(shù)課后作業(yè)上機(jī)任務(wù),§1 程序設(shè)計(jì)語言,一、計(jì)算機(jī)語言的種類,機(jī)器語言,匯編語言,高級(jí)語言,面向機(jī)器,面向過程,面向?qū)ο?,,,二、程序翻譯方式,解 釋,編
5、 譯,邊翻譯邊執(zhí)行不產(chǎn)生目標(biāo)代碼,先翻譯后執(zhí)行產(chǎn)生目標(biāo)代碼,,,,Basic,,C、C++,,例如:,X=1Y=2Print X+Y,main( ){int x , y; x=1; y=2; printf(“%d,%d\n”,x,y);},Basic源程序,C源程序,01代碼,01代碼,01代碼,01代碼,執(zhí)行,執(zhí)行,執(zhí)行,,,,解 釋,,,,,,…,01代碼,執(zhí)行,,,,編 譯,目標(biāo)程序,三、程序語言的運(yùn)行環(huán)境
6、,裸機(jī),操作系統(tǒng),語言編譯系統(tǒng),用戶編寫的源程序,四、C語言編譯系統(tǒng),Visual C++6.0,可視化開發(fā)環(huán)境Windows界面編譯C++程序,,五、C語言程序的調(diào)試、運(yùn)行步驟,§2 用庫函數(shù)組裝C程序,例1:顯示一行信息。,main( ){ printf (“This is a C program\n”);},main為函數(shù)名,表示主函數(shù),( )內(nèi)為函數(shù)參數(shù),無參時(shí)()不能省。每個(gè)函數(shù)完成獨(dú)立的功能。一個(gè)程
7、序必須有一個(gè)主函數(shù),程序從主函數(shù)開始執(zhí)行。,{ }內(nèi)為函數(shù)體,printf是標(biāo)準(zhǔn)函數(shù)庫中的輸出函數(shù),在屏幕上顯示指定內(nèi)容?!啊北硎咀址丛瓨虞敵?。\n為轉(zhuǎn)義字符(換行符)。,一、C語言程序是由函數(shù)組成的。,說明部分,執(zhí)行部分,由若干語句組成,語句以“;”號(hào)結(jié)束,定義函數(shù)用到的數(shù)據(jù)類型(可以沒有說明部分),,,運(yùn)行結(jié)果:This is a C program,main( ){ printf(“Programming \n”);
8、 printf(“is fun.\n”);},運(yùn)行結(jié)果:Programmingis fun.,舉例:對比程序,理解\n的作用。,main( ){ printf(“Prog”); printf(“ramming i”); printf(“s fun.\n”);},運(yùn)行結(jié)果:Programming is fun.,main函數(shù)調(diào)用printf函數(shù),main,printf,,例2:計(jì)算正弦值。,#include
9、“math.h”main( ) { float x; /*說明x為實(shí)型變量*/ x=sin(0.19199); /*調(diào)用sin函數(shù)*/ printf(“%f \n”, x);},二、編譯系統(tǒng)的庫文件提供的庫函數(shù),運(yùn)行結(jié)果:0.190813,%f為格式字符 ,此處用“”后對應(yīng)的變量值代替。%f實(shí)型、%d十進(jìn)制整數(shù)、%c字符、 %s字符串、%o八進(jìn)制整數(shù),,
10、P352附錄IV,math.h為數(shù)學(xué)庫函數(shù)頭文件。用庫函數(shù)前應(yīng)用預(yù)處理命令聲明(末尾不帶;號(hào)),說明部分,執(zhí)行部分,/*與*/之間為注釋,不編譯不執(zhí)行,庫函數(shù)頭文件:數(shù)學(xué):math.h字符:ctype.h字符串:string.h輸入輸出:stdio.h動(dòng)態(tài)分配:malloc.h,main調(diào)用sin和printf函數(shù),1補(bǔ)充舉例,2說明,,,補(bǔ)充:舉例說明格式字符的用法,#include main( ) /*兩數(shù)之
11、和*/{ int a,b,sum; /*聲明部分*/ a=123; b=456; /*賦值語句*/ sum=a+b; printf(“sum is %d\n”,sum);},運(yùn)行結(jié)果:sum is 579,思考輸出結(jié)果:printf(“%d+%d=%d\n”,a,b,sum);,,例:求兩數(shù)之和。,返回,1、一個(gè)函數(shù)可以調(diào)用另一個(gè)函數(shù),但任何函數(shù)不能 調(diào)用main函數(shù)。,#in
12、clude “math.h”main( ) { printf(“%f \n”, sin(0.19199) );},main調(diào)用printf函數(shù),printf又調(diào)用sin函數(shù),,,說明:,main,printf,,sin,,一行內(nèi)可寫多條語句,一個(gè)語句可能分寫在多行上; 每條語句最后必須有一個(gè);號(hào)。 可以用/* */做注釋,增加程序的可讀性。 區(qū)分大小寫。如:sum和Sum為兩個(gè)不同的變量。 建議采用內(nèi)縮對齊格式書寫
13、,使程序清晰。 一個(gè)函數(shù)可以沒有聲明部分,甚至可以兩者都沒有。如: void dump() { 空函數(shù),什么也不做,但合法 },2、C程序的書寫格式:,三、課堂練習(xí):,P15:6、求函數(shù)值:log90、e2.5678、,#include “math.h”main( ) { float x; x=log10(90); prin
14、tf(“%f \n”, x);},x=exp(2.5678);,,x=sqrt(5);,§3 自定義函數(shù),標(biāo)準(zhǔn)庫函數(shù),用戶自定義函數(shù),用預(yù)處理命令: #include “頭文件名”聲明后便可使用,需用戶自己定義函數(shù)后才能使用,,,,函 數(shù),若在函數(shù)庫中找不到所需函數(shù)時(shí),需要自己定義函數(shù),例3:求三個(gè)數(shù)的平均值。,main( ) /*主函數(shù)*/{ float a, b, c, ave; a=3.5
15、; b=4.6; c=7.9; ave=average(a, b, c); printf(“average= %f\n”, ave);},/*自定義函數(shù)*/float average(float x, float y, float z){ float aver; aver=(x+y+z)/3; return(aver);},,,數(shù)據(jù)類型:float 實(shí)型(單精度)int 整型char 字符型
16、double 實(shí)型(雙精度),,舊風(fēng)格:float average(x, y, z)float x, y,z;,函數(shù)首部,函數(shù)體,,,函數(shù)值類型 函數(shù)名(變量類型 變量名,…){ 說明部分;/*聲明用到的量*/ 執(zhí)行部分;/*return一般在最后,可沒有*/},兩種放置順序:,float average(float x, float y, float z) /*自定義函數(shù)*/{ float ave
17、r; aver=(x+y+z)/3; return(aver);} main( ) /*主函數(shù)*/{ float a, b, c, ave; a=3.5; b=4.6; c=7.9; ave=average(a, b, c); /*函數(shù)調(diào)用*/ printf(“average= %f\n”, ave);},先定義后使用的順序:,main(
18、) /*主函數(shù)*/{ float average(float x, float y, float z); /*調(diào)用聲明*/ float a, b, c, ave; a=3.5; b=4.6; c=7.9; ave=average(a, b, c); /*函數(shù)調(diào)用*/ printf(“average= %f\n”, ave);} float avera
19、ge(float x, float y, float z) /*自定義函數(shù)*/{ float aver; aver=(x+y+z)/3; return(aver);},定義在后的順序: (需在調(diào)用函數(shù)的說明部分寫調(diào)用聲明語句),例4:求任意三個(gè)數(shù)的平均值。,main( ) /*主函數(shù)*/{ float average(float x, float y, float z);
20、/*調(diào)用聲明*/ float a, b, c, ave; a=3.5; b=4.6; c=7.9; ave=average(a, b, c); /*函數(shù)調(diào)用*/ printf(“average= %f\n”, ave);} float average(float x, float y, float z) /*自定義函數(shù)*/{ float aver;
21、 aver=(x+y+z)/3; return(aver);},scanf(“%f, %f, %f”, &x, &y, &z);,,,運(yùn)行結(jié)果:輸入3個(gè)實(shí)數(shù),以逗號(hào)分開,如:3.5, 4.6, 7.9average=5.333333,演示運(yùn)行,注意地址運(yùn)算符&和格式字符%f間的逗號(hào),例5:求兩數(shù)中較大者。(教材有錯(cuò):兩實(shí)數(shù)不能比較大小),main( ) /*主函數(shù)*/{
22、 int a,b,c; scanf(“%d,%d”,&a,&b);/*鍵盤輸入*/ if (a>b) printf(“max= %d\n”,a); else printf(“max=%d\n”,b);},運(yùn)行結(jié)果:輸入:-10,5max=5.000000,方法一,不使用自定義函數(shù),main( ) /*主函數(shù)*/{ void max(i
23、nt x, int y); /*調(diào)用聲明*/ int a,b,c; scanf(“%d,%d”,&a,&b);/*鍵盤輸入*/ max(a,b);},void max(int x,int y){ if (x>y) printf(“max=%d\n”, x); else printf(“max=%d\n”, y);},,,運(yùn)行結(jié)果:輸入
24、:-10,5max=5.00000,方法二,自定義函數(shù)無返回值,main( ) /*主函數(shù)*/{ int max(int x, int y); /*調(diào)用聲明*/ int a,b,c; scanf(“%d,%d”,&a,&b);/*鍵盤輸入*/ c=max(a,b); printf(“max= %d\n”,c);},int max(int x,int y){
25、 int z; if (x>y) z=x; else z=y; return(z);},,,運(yùn)行結(jié)果:輸入:-10,5max=5.000000,方法三,自定義函數(shù)有返回值,例6 (了解) :求1+2+3+…+10的值。,main( ) /*主函數(shù)*/{ int sum,i; sum=0; i=1; while (i<=10) {
26、 sum=sum+i; i=i+1; } printf(“%d\n”, sum);},運(yùn)行結(jié)果:55,方法一,不使用自定義函數(shù),int f(int n){ int sum, i; sum=0; i=1; while (i<=n) { sum=sum+i; i=i+1; } return(sum);},,,運(yùn)
27、行結(jié)果:55,方法二,使用自定義函數(shù),main( ) { int m,total; scanf(“%d”,&m); total=f(m); printf(“total=%d\n”, total);},課堂練習(xí):,7、編寫一個(gè)求0~100之間全部偶數(shù)之和的程序,main( ) { int sum,i; sum=0; i=2; while (i<=100)
28、 { sum=sum+i; i=i+2; } printf(“%d\n”, sum);},運(yùn)行結(jié)果:2550,等差數(shù)列前n項(xiàng)和公式:S=n(a1+an)/2=50(2+100)/2=2550,課堂練習(xí):,7、求三個(gè)整數(shù)之和:(1)只用main函數(shù) (2)用求兩個(gè)整數(shù)之和的函數(shù)實(shí)現(xiàn),main( ) {
29、 int a, b, c, sum; scanf(“%d, %d,%d”, &a, &b, &c); sum=a+b+c; printf(“sum=%d\n”,sum);},printf(“%d+%d+%d=%d\n”,a,b,c,a+b+c);,,,1,課堂練習(xí):,7、求三個(gè)整數(shù)之和:(1)只用main函數(shù)
30、 (2)用求兩個(gè)整數(shù)之和的函數(shù)實(shí)現(xiàn),main( ) /*主函數(shù)*/{ int a, b, c, sum; scanf(“%d, %d,%d”, &a, &b, &c); sum=two(two(a,b),c); printf(“sum=%d\n”,sum);},2,int two(int x,int y){ int z; z=x+y; ret
31、urn(z);},,,,,課堂練習(xí):,7、編定寫一個(gè)程序從5個(gè)整數(shù)中找出最小的數(shù),main( ) { int a1,a2,a3,a4,a5,min; scanf(%d%d%d%d%d”,&a1,&a2,&a3,&a4,&a5); min=a1; if (a2<min) min=a2; if (a3<min) min=a3; i
32、f (a4<min) min=a4; if (a5<min) min=a5; printf(“min=%d\n”, min);},C程序是由函數(shù)構(gòu)成的。 一個(gè)C程序包含且只能包含一個(gè)main函數(shù),它是整個(gè)程序的入口(無論放在何處)。被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫函數(shù)(如:printf、scanf)也可以是用戶自己設(shè)計(jì)的函數(shù)(如前面的average)。編寫C程序就是編寫一個(gè)個(gè)函數(shù)。 一
33、個(gè)函數(shù)是由函數(shù)首部和函數(shù)體組成的。,函數(shù)首部,函數(shù)體,函數(shù),聲明部分,執(zhí)行部分,,,程序,,函數(shù),函數(shù),小結(jié),定義用到的變量及對調(diào)用函數(shù)的聲明(帶“;”號(hào)),函數(shù)首部: 函數(shù)類型 函數(shù)名 參數(shù)類型 參數(shù)名 int max ( int x, int y) —— 不帶;號(hào) 函數(shù)體:函數(shù)首部下有多個(gè){ }號(hào),最外層的{ }中的部分為函數(shù)體。,,,,,
34、int max(int x,int y){ int z; if (x>y) z=x; else z=y; return(z);},函數(shù)首部,函數(shù)體,聲明部分,執(zhí)行部分,,,,,,,由多條語句組成,語句以;號(hào)結(jié)束,小結(jié)(續(xù)),課后作業(yè),課后作業(yè): 4、5、6(2)(3)(4)、7、8,要求:1、準(zhǔn)備兩個(gè)作業(yè)本:實(shí)驗(yàn)報(bào)告作業(yè)本、課后作業(yè)本。2、每章結(jié)束后交課后作業(yè)。3、每次上機(jī)結(jié)束前10分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校精品課程網(wǎng)絡(luò)平臺(tái)建設(shè)
- 精品課程建設(shè)
- 高職學(xué)院精品課程建設(shè)研究.pdf
- 精品課程建設(shè)方案
- 《構(gòu)成設(shè)計(jì)》精品課程建設(shè)方案
- 精品課程共享平臺(tái)建設(shè)和運(yùn)營方案
- 經(jīng)濟(jì)學(xué)院精品課程建設(shè)情況
- 河北北方學(xué)院精品課程
- 精品課程網(wǎng)站設(shè)計(jì)--操作系統(tǒng)精品課程網(wǎng)站設(shè)計(jì)
- 精品課程建設(shè)-上海中醫(yī)藥大學(xué)精品課程網(wǎng)
- 《plc》精品課程建設(shè)計(jì)劃doc
- 巢湖學(xué)院精品課程建設(shè)與管理辦法
- 蘭州城學(xué)院精品課程建設(shè)管理辦法
- 溫州大學(xué)甌江學(xué)院精品課程
- 化工與材料學(xué)院精品課程
- 大慶石油學(xué)院精品課程
- 溫州大學(xué)甌江學(xué)院精品課程
- 精品課程建設(shè)的心得
- 量子物理_5-武警學(xué)院精品課程建設(shè)
- 淮海工學(xué)院精品課程建設(shè)項(xiàng)目
評(píng)論
0/150
提交評(píng)論