




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計
C語言程序設計教學要求知識:掌握程序設計語言的基本知識素質:常用算法能力:初步的程序設計能力學習方法自主學習重視上機實踐學生要按時上課和上機、課后要看書、認真獨立完成作業成績評定方式:平時成績占40%(包括平時考勤、上機作業情況、期中考試);期末成績占60%如何盡快學會用C語言進行程序設計了解程序設計語言(C語言)模仿、改寫、編寫通過不斷的編程實踐,逐步領會和掌握程序設計的基本思想和方法教材和參考書C語言程序設計,何欽銘、顏暉主編,高等教育出版社,2008年第1版
C語言程序設計,梅創社編著.北京理工大學出版社.2010年7月第1版
譚浩強編著.C語言程序設計.清華大學出版社.
楊路明編著.C語言程序設計.北京郵電大學出版社.2005年12月第2版
C語言編程(第3版),[美]Stephen,G.Kochan,張小潘譯,電子工業出版社,2006C語言教程(第4版),[美]AlKelley,IraPohl,徐波譯,機械工業出版社,2007第一章引言一個C語言程序程序與程序設計語言C語言的發展歷史與特點實現問題求解的過程重點:C語言的語法包含的內容、C語言程序的基本框架、
C語言程序的上機步驟1.1一個C語言程序例1-1求階乘問題。輸入一個正整數n,輸出n!。#include<stdio.h>/*編譯預處理命令*/intmain(void)/*主函數*/{
intn; /*變量定義*/
int
factorial(intn);/*函數聲明*/
scanf("%d",&n);/*輸入一個整數*/
printf("%d\n",factorial(n));/*調用函數計算階乘*/return0;}
int
factorial(intn) /*定義計算n!的函數*/{
inti,fact=1;for(i=1;i<=n;i++)/*循環*/ fact=fact*i;returnfact;}輸入4輸出24C程序由函數組成有且只有一個主函數main
回顧:1、在程序的開始要使用編譯預處理命令#include。
2、main()是程序中的主函數。3、int是整型,其后面的n是被定義成整型的變量。4、scanf(“%d”,&n);是輸入語句,其中:%d說明從鍵盤上輸入的是十進制整型數據,&n表示輸入的數據放在變量n中。5、printf
(“%d\n”,factorial(n));是輸出語句,其中:%d說明從屏幕上輸出的是十進制整型數據,\n表示回車(換行)。此語句在這里還有函數調用的功能,調用的是用戶自定義函數factorial6、return0;是返回語句,一般函數結束調用后都要返回到主調函數中去。這里因為main()是主函數,所以用的是return0。作業1為什么在程序的開始要使用編譯預處理命令。2為什么說主函數是不可或缺的(因為C程序由函數組成有且只有一個主函數main),空類型的主函數與整型的主函數在寫法上有何不同。3為什么在主函數中一開始就要進行變量定義,變量定義語句的格式。4為什么要進行函數聲明,函數聲明語句的格式。5怎樣通過鍵盤接收1個整型數據,scanf函數的格式。6例1-1是如何利用標準輸出函數printf調用用戶自定義函數factorial的,factorial函數的作用是什么。7factorial函數是怎樣實現求n的階乘的8函數定義語句的格式。9factorial函數體中有幾條語句,它們的作用是什么。10for循環語句的三要素是什么。11寫出累乘器和累加器的形式,它們的初值都是什么。注:將作業題抄題并將答案寫到作業本上,本皮上寫明班級,姓名和學號。學生練習:要求仿照例1-1求累加和問題。即:輸入一個正整數n,輸出1+2+3+….+n的和。1.2程序與程序設計語言程序人們為解決某種問題用計算機可以識別的代碼編排的一系列加工步驟程序的執行過程實際上是對程序所表達的數據進行處理的過程程序設計語言提供了一種表達數據與處理數據的功能要求程序員按照語言的規范編程1.2程序與程序設計語言程序與指令程序設計語言的功能程序設計語言的語法程序的編譯與編程環境1.2.1程序與指令指令:可以完成計算機的一個最基本的功能如實現一次加法運算或實現一次大小的判別計算機的指令系統:是指計算機所能實現的指令的集合程序與指令之間的關系是:程序是一系列計算機指令的有序組合關于程序與指令,下面舉1道例題例1-2編寫程序,分別求和與乘積先介紹:虛擬的計算機指令系統(共7條指令)指令1:InputX將當前輸入數據存儲到內存的X單元指令2:OutputX將內存X單元的數據輸出。指令3:AddXYZ將內存X單元的數據與Y單元的數據相加并將結果存儲到Z單元。指令4:SubXYZ將內存X單元的數據與Y單元的數據相減并將結果存儲到Z單元。指令5:BranchEqXYP比較X與Y,若相等則程序跳轉到P處執行,否則繼續執行下一條指令。指令6:JumpP程序跳轉到P處執行。指令7:SetXY將內存Y單元的值設為X。對以上7條指令進行不同組合就可以實現多項功能,具體請看下面的例題:1.2.1程序與指令(1)輸入3個數A,B和C,求A+C和B
+C的結果InputA;輸入第1個數據到存儲單元A中InputB;輸入第2個數據到存儲單元B中InputC;輸入第3個數據到存儲單元C中AddACD;將A、C相加并將結果存在D中AddBCE;將B、C相加并將結果存在E中OutputDE;輸出D,E的內容對應C語言程序如下:#include<stdio.h>main(){inta,b,c,d,e;a=12;b=24;c=10;d=a+c;e=b+c;printf("a+c=%d,b+c=%d\n",d,e);}程序的運行結果是:a+c=22,b+c=34學生練習:【1】要求仿照上題編程求三個整數之和,并輸出。程序與指令(2)輸入2個數A和B,求A*B的結果1.InputA;
輸入第1個數據到存儲單元A中2.InputB;輸入第2個數據到存儲單元B中3.Set0X;將X設為0,此處X用以統計A累加的次數4.Set0Z;將Z設為0,此處Z用以存放A*B的結果5.BranchEqXB9;判別X與B是否相等;若相等說明A已累加了B次,程序跳轉到第9條指令,輸出結果6.AddZAZ;Z=Z+A7.Add1XX;X=X+18.Jump5;程序跳轉到第5條指令,繼續循環執行第6條、7條指令9.OutputZ;
輸出Z的值,該值等于A*B對應的C語言程序如下:#include<stdio.h>intmain(){
intA=5;
intB=6;
intx=0;
intz=0;flag5:if(x==B)gotoflag9;elsez=z+A;x=x+1;
gotoflag5;flag9:printf(“%d\n”,z);return0;}
1.2.2程序設計語言的功能1數據表達:是指表達所要處理的數據2流程控制:即控制數據處理的流程下面分別加以介紹:1數據表達(1)數據表達的方法:一般將數據抽象為若干類型,這些類型被稱為數據類型。(2)數據類型:是對某些具有共同特點的數據集合的總稱.通過數據類型可以知道:A該數據的定義域B在這些數據上可以做些什么(即操作或稱運算)例如:整數類型包含的數據:{…,-2,-1,0,1,2,…}作用在整數上的運算有:+、-、*、/等數據表達(3)C語言提供的數據類型分為兩大類,即:A基本數據類型:是程序設計語言事先定義好,可供程序員直接使用的,如整型、實型(浮點型)、字符型等B構造類型:是由程序員自己構造的,如數組、結構、文件、指針型等各種數據類型的常量與變量形式常量(常數)與變量
流程控制結構化程序設計方法將復雜程序劃分為若干個相互獨立的模塊模塊:一條語句(Statement)、一段程序或一個函數(子程序)等單入口、單出口流程控制任何程序都可以將模塊通過3種基本的控制結構進行組合來實現順序結構循環結構分支結構下面分別加以簡單介紹:A)順序結構(略)B)分支結構即:用分支語句實現分支控制過程,根據不同的條件執行不同的語句(或語句模塊)。C)循環結構C語言實現循環控制的過程具體有3種形式,即while語句、for語句、dowhile語句。流程控制語句級控制:3種基本的控制結構順序控制結構:自然順序執行分支控制結構(選擇結構):根據不同的條件來選擇所要執行的模塊循環控制結構:重復執行某個模塊單位級控制:函數的定義與調用處理復雜問題時,將程序分為若干個相對獨立的子程序(函數)1.2.3程序設計語言的語法用程序設計語言所寫的程序必須符合相應語言的語法源程序(源代碼)是一個字符序列,這些字符序列按順序組成了一系列“單詞”,“單詞”的組合就形成了語言有意義的語法單位,一些簡單語法單位的組合又形成了更復雜的語法單位,最后一系列語法單位組合成程序1.2.3程序設計語言的語法C語言的主要“單詞”(1)標識符:在程序中用來標識各種程序成份,命名程序中的一些實體,如變量、常量、函數、類型、標號等對象的名字C語言的標識符規定由字母、數字以及下劃線組成,且第一個字符必須是字母或下劃線例:以下是合法的標識符:x,c,a1,a2,op,y_1,zhou_prg,radius,prime,program,prg_1,cout,sun,day
以下是不合法的標識符:
a.1,1computer,x+y,!abc,99999,$100,π,3c標識符C語言中標識符要區分大小寫例:標識符abc與標識符ABC是不同的標識符
習慣上符號常量用大寫字母表示,變量名稱用小寫字母表示
標準C中,標識符的長度可以是任意的,一般有效長度為8個字符,TURBOC中標識符最大長度為32個字符標識符取名時不能與關鍵字同名,也不能與系統預先定義的標準標識符(如標準函數)同名,
最好能“見名知義”,以提高程序的可讀性一般選用相應英文單詞或拼音的縮寫形式,盡量不要使用簡單代數符號,例如:a,b,c,x,y,z等標識符大多數采用“匈牙利”表示法,每個單詞第一個字母大寫例如:StudentName、YearMonthDate。關于標識符做一個練習:P15習題1-1對C語言來說,下列標識符中哪些是合法的,哪些是不合法的?
Total,_debug,Large&Tall,Counterl,begin_,2n1.2.3程序設計語言的語法(2)保留字(關鍵字):它們是C語言規定的、賦予它們以特定含義、有專門用途的標識符例如:類型名稱int、float,語句特征if、switch、while,運算符號sizeof等常見關鍵字有32個,參見書上P308附錄1,也可參見下個課件32個關鍵字:(由系統定義,不能重作其它定義)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile再重申一下:關鍵字不允許用戶重新定義<
C語言程序設計
第一章C語言概述1.2.3程序設計語言的語法(3)自定義標識符:包括在程序中定義的變量名、數據類型名、函數名以及符號常量名最好用:有意義的英文單詞,可以見名知意。(4)常量:常量是有數據類型的,如,123、12.34(5)運算符:代表對各種數據類型實際數據對象的運算。如,+(加)、-(減)、*(乘)、/(除)、%(求余)、>(大于)根據運算對象的個數不同,運算符可分為單目運算符、雙目運算符和三目運算符,又稱為一元運算符、二元運算符和三元運算符1.2.3程序設計語言的語法C語言的主要語法單位(1)表達式:運算符與運算對象組合就形成了表達式。如,2+3*4(2)變量定義:變量也有數據類型,所以在定義變量時要說明相應變量的類型。如:inti;(3)語句:語句是程序最基本的執行單位,程序的功能就是通過對一系列語句的執行來實現的C語言語句必須以分號結束(4)注釋:以“/*”開始,以“*/”結束下面,關于前面提到的第3點語句,我還要詳細加以介紹(3)語句:表達式語句:表達式加分號“;”分支語句:實現分支控制過程if(a>b)x=a;elsex=b;循環語句:實現循環控制的過程sum=0; /*初始化sum和i*/i=1;while(i<=100){/*while循環語句*/sum=sum+i;i=i+1;}復合語句:用一對“{}”,將若干語句順序組合在一起就形成了一個程序段(5)函數定義與調用函數:是完成特定任務的獨立模塊,函數的使用最主要涉及到函數的定義與調用(a)C程序由若干函數組成,其核心成份是函數①必須有一個且只能有一個主函數main(),
主函數的名字為main
②可以是系統預定義的標準函數,如scanf函數、printf函數等函數之間是平行的關系C語言被稱為函數式語言①函數頭給出函數的特征描述,包括函數的屬性、類型、名字、參數及參數類型。例:求最大值函數的函數頭:
intmax(inta,intb)/*函數屬性缺省,函數類型整型,函數名字max,函數參數x,y,整型*/
②函數體給出函數功能實現的數據描述和操作描述,是程序中用花括號括起的若干語句函數體可以為空,可以沒有數據描述部分(b)函數由函數頭(函數的說明部分)與函數體(函數的語句部分)兩部分組成
例:求兩個數中的較大值。作法一:
#include″stdio.h″
intmax(intx,inty)/*求最大值函數{intt;if(x>y)t=x;elset=y;return(t);}
main()/*主函數*/{intmax(intx,inty)
;
inta,b;
intc;
scanf(″%d,%d″,&a,&b);c=max(a,b);/*調用求最大值的函數*/
printf(″max=%d\n″,c);}輸入數據:12,3運行結果:max=12作法二:#include<stdio.h>main()/*主函數*/{
int
max(intx,inty);
int
a,b,c;
scanf("%d,%d",&a,&b);c=max(a,b);/*調用求最大值的函數*/
printf("max=%d\n",c);}int
max(intx,inty)/*求最大值函數*/{
intt;if(x>y)t=x;elset=y;return(t);}程序說明:int
max(intx,inty);這1條語句是聲明1個返回整型數據并帶有2個整型參數的函數。
c=max(a,b);是調用max函數,同時將整型變量a,b的數值做為實參復制給形參x,y。if(x>y)t=x;elset=y;這2條語句是求x和y的值誰大,并把大的值賦給t。首先判別if后面的(x>y),如果條件成立,就執行”t=x;”,否則執行”t=y;”。將求得較大的數t的值,返回給主函數中的c。學生練習:要求仿照上題編程求兩個整數中的較小值。(5)輸入輸出:C語言沒有輸入輸出語句,用庫函數printf、scanf等實現,例如前面例題中的例如前面例題中的scanf()和printf()函數就是用來輸入輸出數據的。1.2.4程序的編譯與編程環境程序的編譯
程序————》即為計算機直接能理解的指令序列編譯器:對源程序進行詞法分析、語法與語義分析,生成可執行的代碼并直接指出程序中的語法錯誤編程環境包括編輯程序(Edit)、編譯(Compile)、調試(Debug)等過程
掌握程序設計語言:根據語言的語法,用語言表達數據、實現程序的控制,并會使用編程環境C語言上機過程源程序
test.c
test.obj
可執行代碼
test.exe編譯連接運行1.3C語言的發展歷史與特點歷史1972年:貝爾實驗室的DennisRitchie在B語言的基礎上設計并實現了C語言1978年:B.W.Kernighan和D.Ritchie(簡稱K&R)合著的《TheCProgrammingLanguage》是各種C語言版本的基礎,稱之為舊標準C語言1983年:美國國家標準化協會(ANSI)制定了新的C語言標準,稱ANSICC語言的特點1.C語言是一種結構化語言
用函數實現結構模塊2.C語言語句簡潔、緊湊,使用方便、靈活32個關鍵字,9種控制語句,程序書寫形式自由3.C語言程序易于移植C語言輸入/輸出功能用庫函數實現,編寫的程序移植性好4.C語言有強大的處理能力C語言允許直接訪問物理地址,能進行位運算,能實現匯編語言的大部分功能,
能直接對硬件進行操作。C語言是高級語言中的低級語言5.C語言編譯系統小,生成的目標代碼質量高,運行效率高C語言的特點6.數據類型檢查不嚴格,表達式易出現二義性,不具備數據越界自動檢查功能,運算符的優先級與結合性對初學者難以掌握C語言中大小寫字母代表不同含義1.4實現問題求解的過程問題:求1~100間所有偶數的和。1.問題分析與算法設計求在一定范圍內(1~100)、滿足一定條件(偶數)的若干整數的和,求累加和
思路:設置一個變量(sum),其初值為0,然后在1~100的數中(i)尋找偶數,將它們一個一個累加到sum中一步累加:sum=sum+i;重復累加,用循環語句實現,在循環過程中:(1)判別i是不是偶數:用分支控制語句來實現(2)對循環次數進行控制:通過i值的變化1.問題分析與算法設計思路——》確定算法算法:一組明確的解決問題的步驟,它產生結果并可在有限的時間內終止算法的描述:自然語言偽代碼流程圖:算法的圖形表示法,具體參見下圖:sum=0i=1i<=100i是偶數?sum=sum+ii=i+1輸出sum真真假假學生練習:要求仿照上圖,做書上P152題2.編輯程序生成程序的源文件,C語言源文件的后綴為.c或.cpp例如,由上圖可編輯并生成如下的C語言源文件:#include<stdio.h>intmain(void){
inti,sum=0;
for(i=1;i<=100;i++)if(i%2==0)sum=sum+i;
printf("%d",sum);return0;}
預處理命令說明:1、for(i=1;i<=100;i++)是一個循環,它表示從i等于1的時候開始循環,每循環一次i加上1(i++),只要i的值小于等于100,這個循環就一直進行(也就是說i等于101時就退出循環了),每次循環執行的內容就是它后面的if語句。對于重復執行的問題,用for語句就能輕而易舉的解決。2、if(i%2==0)sum=sum+i;表示:如果i是偶數,就將i累加到sum中。i%2==0即為:如果i被2除后余數為0,則說明它是一個偶數。在C語言中,相等的判斷用兩個等號(==)來表示,不相等的判斷用!=來表示。其中i<=100是循環執行的條件,只要這個條件被滿足,循環體就會一直反復執行。應該注意到,由于循環體每循環一次,i被加1(i=i+1),所以,當循環到一定的時候,i的值就會超過100,即循環條件i<=100不再滿足了,循環就結束了。學生練習:要求仿照上題編程求1~100間所有奇數的和。學生練習:要求仿照上題做做書上P153題#include<stdio.h>intmain(){ intsum=0,i; for(i=1;i<=100;i++) { if(i%6==0) sum=sum+i;//100以內能被6整除的數累加
if(i%6==0)printf("i=%d\n",i);//顯示100以內能被6整除的數
}
printf("sum=%d\n",sum);//顯示100以內能被6整除的數的累加和
return0;}C程序的書寫
(1)一行一般寫一條語句。當然一行可以寫多條語句,一條語句也可以寫在多行上
(2)整個程序采用緊縮格式書寫。表示同一層次的語句行對齊,縮進同樣多的字符位置。如循環體中的語句要縮進對齊,選擇體中的語句要縮進對齊
(3)花括號的書寫方法較多,本書采用花括號對齊的書寫方式,左邊花括號處于第一條語句的開始位置,右邊花括號獨占一行,與左邊花括號對齊
(4)在程序中恰當地使用空行,分隔程序中的語句塊,增加程序的可讀性3.程序編譯連接
編輯程序后,用該語言的編譯程序對其進行編譯,以生成二進制代碼表示的目標程序(.obj),與編程環境提供的庫函數進行連接(Link)形成可執行的程序(.exe)。編譯程序會指出語法錯誤
語法錯誤VS邏輯錯誤,稍后我會加以介紹1.4實現問題求解的過程4.運行與調試經過編輯、編譯、連接,生成執行文件后,就可以在編程環境或操作系統環境中運行該程序如果程序運行所產生的結果不是你想要的結果,這是程序的語義錯誤(邏輯錯誤),邏輯錯誤編譯程序不會指出,靠自己去發現。調試:在程序中查找錯誤并修改錯誤的過程。調試的方法設置斷點單步跟蹤調試是一個需要耐心和經驗的工作,也是程序設計最基本的技能之一開始結果語法錯誤源程序.c/.cpp目標程序.obj可執行程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自建房改造成倉庫協議書9篇
- 勞動和社會保障部和餐飲業勞動合同6篇
- 心內科護士長年度工作總結報告:反思與提升之路
- 運輸裝卸合同8篇
- 電捕設備出售合同協議
- 特價優惠協議書模板
- 電子屏安裝合同協議模板
- 疆火災避難協議書模板
- 電纜勞務施工合同協議
- 琴行合作協議合同協議
- 南通2025年江蘇如皋市部分事業單位招聘78人筆試歷年參考題庫附帶答案詳解
- 2024年云南民族大學附屬中學西山分校在職骨干教師招聘筆試真題
- 紅酒加工合同協議
- 家畜飼養考試題及答案
- 媒體宣發合同協議
- 變電站交、直流系統培訓課件
- AQ 1083-2011 煤礦建設安全規范 (正式版)
- DZ∕T 0148-2014 水文水井地質鉆探規程(正式版)
- GB/T 31997-2015風力發電場項目建設工程驗收規程
- 迦陵頻伽與鳳鳥關聯性研究
- 成都地鐵-關于修訂并發布《運營線施工檢修管理規則》的通知
評論
0/150
提交評論