《北京航空航天大學(xué)C語言第一講(第一、二章) C概述 算法》由會員分享,可在線閱讀,更多相關(guān)《北京航空航天大學(xué)C語言第一講(第一、二章) C概述 算法(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,主 講,A:,盧 笙,主 講,B:,徐大軍,助 教,:,劉文玲,辦公室,:B1104,電話,:13641386126 -,盧,B0923,電話,:82339533 13581894133-,徐,email:,,,C,語言程序設(shè)計,教學(xué)大綱,1,課程教學(xué)目標(biāo),本課程為非計算機(jī)專業(yè)的基礎(chǔ)課程,,任務(wù),在學(xué)生掌握,C,語言的基本內(nèi)容、程序設(shè)計的基本方法與編程技巧的過程中,向?qū)W生介紹進(jìn)行科學(xué)計算的一般思路。,2,,教材,C,程序設(shè)計,第三版 譚浩強(qiáng) 清華出版社,3,教學(xué)內(nèi)容及基本要求,Page X,III,
2、XX,I,目錄,4,,,課程安排,上課,28,學(xué)時,周二上午,8-10,點,第,2-15,周;,考試,2,學(xué)時,第,16,周,(12,月,29,日,),第,12,節(jié);,上機(jī),18,學(xué)時,,待定,5,,成績,考勤成績占,5%,,上機(jī)成績占,20%,,,作業(yè)成績占,5%,,期末筆試成績占,70%,。,第一章,C,語言概述,/,*example1.1 The first C Program*,/,#include,int,main(),printf,(,歡迎,39151X,班,同學(xué)!,n);,return 0;,注釋,編譯預(yù)處理,函數(shù),語句,歡迎,39151X,班同學(xué)!,例,1.1,第一個程序,歡迎
3、詞,格式特點,習(xí)慣用,小寫,字母,大小寫敏感,不使用行號,,無程序行,概念,可使用空行和空格,用,鋸齒形,書寫格式,#include,void main(),/,主函數(shù),int,i,j,sum;,/,變量,sum=0;,for(i=1;i10;i+),for(j=1;j,例:,#include,stdio.h,2,函數(shù)與主函數(shù),程序由一個或多個函數(shù)組成,必須有且只能有一個主函數(shù),main,(),程序執(zhí)行從,main,開始,在,main,中結(jié)束,,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。,3,程序語句,C,程序由語句組成,用“,;,”作為語句終止符,4,注釋,/*/,為,C,注釋,不能嵌套,/,為,C+,
4、的注釋,不產(chǎn)生編譯代碼,例:,/*This is the main /*of example1.1*/*/,非法,預(yù)編譯命令,void main(),主函數(shù),/,函數(shù)體開始,聲明部分,執(zhí)行部分,/,函數(shù)體結(jié)束,c,程序結(jié)構(gòu),例,1.2,加法運(yùn)算程序,#include ,stdio.h,/,編譯預(yù)處理,int,main(),int,a,b,sum;,/*,定義變量*,/,a=123;,/*,變量賦值*,/,b=456;,sum=a+b;,/*,算術(shù)表達(dá)式,求和*,/,printf(sum,is%dn,sum);,/*,輸出,sum,的值*,/,return 0;,在,C,中,變量必須先定義,后使
5、用,運(yùn)行結(jié)果:,sum is 579,語句具有規(guī)定的語法格式和特定的功能,;,為語句的終止符。,表示程序的結(jié)構(gòu)層次范圍,并且必須配對使用,。,注釋格式,/*,注釋內(nèi)容,*,/,例,1.3,求最大值,#include,stdio.h,int,max(int,x,int,y),int,z;,if(xy)z=x;,else z=y;,return(z);,void main (),int,a,b,c;,scanf(%d,%d,&a,&b,);,c=max(a,b);,printf(max,=%dn,c);,程序由函數(shù)組成,至少包含一個且僅有一個名為,main(),的主函數(shù),。,程序從主函數(shù),main
6、(),開始執(zhí)行。,函數(shù)的語法結(jié)構(gòu):,函數(shù)類型 函數(shù)名(,形參說明,形參),內(nèi)部變量說明;,執(zhí)行語句部分;,return,計算結(jié)果,;,注意:書寫格式,main(),函數(shù)的位置可以任意,技巧,:,為避免遺漏必須配對使用的符號,例如注釋符號,“,/*/,”,、函數(shù)體的起止標(biāo)識符,“,”,、圓括號,“,(),”,、,“,”,、,“,”,等等,在輸入時,可連續(xù)輸入這些起止標(biāo)識符,然后再在其中插入內(nèi)容來完成編輯。當(dāng)起止標(biāo)識符嵌套時,或相距較遠(yuǎn)時,這樣做更有必要。它在任何時候都是可調(diào)試的。,編程的重要原則:,成對編碼原則,代碼規(guī)范化原則,編輯,鏈接,編譯,執(zhí)行,C,程序的開發(fā)步驟,程序代碼的錄入,生成源程
7、序,*,.c,語法分析查錯,翻譯生成目標(biāo)程序,*,.,obj,與其它目標(biāo)程序或庫鏈接裝配,生成可執(zhí)行程序,*,.exe,課堂練習(xí)題 一,-,1,、在,C,程序中,,main(),的位置,(),。,A.,必須作為第一函數(shù),B.,必須作為最后一個函數(shù),C.,可以任意,D.,必須放在它所有調(diào)用的函數(shù)之后,2,、,C,程序的執(zhí)行是從,開始執(zhí)行的。,3,、,C,語言源程序的語句分隔符是,。,第二章 程序的靈魂,算法,一個程序應(yīng)包括對數(shù)據(jù)的描述和對數(shù)據(jù)處理的描述。,1,對數(shù)據(jù)的描述,即數(shù)據(jù)結(jié)構(gòu)。,在,C,語言中,系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類型的形式出現(xiàn)的。,2,對數(shù)據(jù)處理的描述,即計算機(jī)算法。,算法是為
8、解決一個問題而采取的方法和步驟,是程序的靈魂。為此,著名計算機(jī)科學(xué)家沃思(,Nikiklaus,Wirth,),提出一個公式:,數(shù)據(jù)結(jié)構(gòu),+,算法,=,程序,實際上,一個程序除了數(shù)據(jù)結(jié)構(gòu)和算法外,還必須使用一種計算機(jī)語言,并采用結(jié)構(gòu)化方法來表示。,2.1,算法的概念,2.2,算法的描述,自然語言描述法,流程圖表示法,用偽代碼表示法,用計算機(jī)語言表示法,例,2.,1,有,82,個學(xué)生,要求將英語成績在,80,分以上者打印出來。,方法,:,用,n,表示學(xué)號,,n,1,代表第一個學(xué)生學(xué)號,,n,i,代表第,i,個學(xué)生學(xué)號。用,g,代表學(xué)生英語成績,,g,i,代表第,i,個學(xué)生英語成績,算法可表示如下
9、:,S1,:,1,i,S2,:,如果,g,i,80,,則,打印,n,i,和,g,i,,,否則不打印,S3,:,i+1,i,S4,:,如果,i 82,返回,S2,,,繼續(xù)執(zhí)行;否則,算法結(jié)束。,用自然語言描述法,例,2.2,將學(xué)生的成績按分?jǐn)?shù)段分級。,該算法的核心部分是對輸入的每一個數(shù)進(jìn)行比較判斷,以確定屬于的級別。,若學(xué)生成績分布是均勻的,,,算法描述如下,:,S1,:,1,i,,輸入一個學(xué)生成績,a,S2,:,判斷,a60,a70,a80,a90,不及格,中等,良好,優(yōu)秀,及格,Y,N,Y,N,Y,N,Y,N,輸入,10000,個數(shù)據(jù),問需進(jìn)行,?,次比較。,S3,:i+1,i,輸入一個學(xué)生
10、成績,a,S4,:,如果,i 10000,返回,S2,;,否則,算法結(jié)束。,轉(zhuǎn)S3,轉(zhuǎn)S3,轉(zhuǎn)S3,轉(zhuǎn)S3,轉(zhuǎn)S3,不:,2000,人,判斷:,1*2000=,2000,次,及:,2000,人,判斷:,2*2000=4000,次,中:,2000,人,判斷:,3*2000=6000,次,31500,次,良:,2000,人,判斷:,4*2000=8000,次,優(yōu):,2000,人,判斷:,4*2000=8000,次,分?jǐn)?shù),059,6069,7079,8089,9099,比例,0.05,0.15,0.4,0.3,0.10,不及格,Y,a90,a80,a70,a=0?,輸出,x,輸出,-x,結(jié)束,輸入,
11、x,Yes x=0 No,輸出,x,輸出,-x,yes,no,例,2.4,輸入,10,個數(shù),把其中的正數(shù)輸出。,當(dāng)型循環(huán),直到型循環(huán),例,2.5,輸入,10,個數(shù),求它們的平均值。,N=1,SUM=0,當(dāng),N=10,輸入,X,SUM=SUM+X,N=N+1,AVER=SUM/10,輸出,AVER,的值,C,程序設(shè)計,第一講,算法和程序初步,用,NS,圖表示法,例,2.6,輸入,50,個學(xué)生的成績,統(tǒng)計出得優(yōu)秀,(90,以上,),的人數(shù)。,N=0,M=0,當(dāng),N90,Y,M=M+1,N=N+1,N,輸出,M,的值,C,程序設(shè)計,第一講,算法和程序初步,1,、求,Y,的值,,X,由用戶給出,1 (
12、x0),2,、,求,1+3+5+.+99,。,課堂練習(xí)二,C,程序設(shè)計,第一講,算法和程序初步,1,、求,Y,的值,,X,由用戶給出,1(x0),輸入,X,X0?,Y,Y=-1,N,X=0?,N,Y,Y=0,Y=1,C,程序設(shè)計,第一講,算法和程序初步,2,、,求和,1+3+5+99,。,N=1,SUM=0,當(dāng)N=99,SUM=SUM+N,N=N+2,輸出,SUM,的值,C,程序設(shè)計,第一講,算法和程序初步,2.5,結(jié)構(gòu)化程序設(shè)計方法,C,程序設(shè)計,第一講,算法和程序初步,結(jié)構(gòu)化程序設(shè)計強(qiáng)調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。,1.,自頂向下,宏觀出發(fā),2.,逐步細(xì)化,由抽象而具體,3.,模塊化設(shè)計,分而治之,4.,結(jié)構(gòu)化編碼,用三種基本結(jié)構(gòu)編程,實現(xiàn)結(jié)構(gòu)化程序設(shè)計的方法:,課外練習(xí) 一,C,程序設(shè)計,第一講,算法和程序初步,一、,Page 1213/1.5,1.6,二、,page 36/2.4(4),(8),2.5(2),(5),,,2.8(2),