




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言簡介誕生1972年BELL實驗室 DennisRitche為描述UNIX操作系統設計重要特征高級語言的全部功能和匯編語言的部分功能標準版本ANSI標準C語言1989年美國國家標準化協會公布的美國標準也是國際標準化組織(ISO)公布的世界標準開發環境和專用版本TURBOC VISUALC/C++GC/GCC FORTEC/C++主要特點優點語言簡潔、程序設計自由度大、可讀性好運算豐富、數據結構使用靈活可直接描述硬件操作、可移植性好程序庫支持十分豐富-->P455標準函數缺點語義不嚴格、維護難度大編譯提供的錯誤信息少、對程序員要求高2.1簡單的C語言程序任務:打印輸出文本“WelcometoC”#include<stdio.h>main(){ printf(“WelcometoC\n”);}主函數(程序入口)標準函數(用于輸出)提供函數名說明字符串常數WelcomtoCC語言程序的基本形式main(){<語句序列
>函數體}main()主函數程序入口;
C程序由語句組成,語句用分號“;”結尾;printf()標準函數,存于函數庫,用于輸出。若干名字說明若干語句數據結構
x,y,temp賦初值
x=5,y=3第二個簡單的C語言程序任務:交換兩個變量的值開始tempx結束xyytemp輸出x,y#include<stdio.h>/*交換兩個整型變量的值*/main(){ intx=5,y=3,temp; temp=x; x=y;y=temp; printf(“\nx=%d,y=%d\n”,x,y);}說明變量x,y,temp是整數類型交換x和y的值第二個簡單的C語言程序程序書寫知識基本詞匯(單詞)名字(標識符),如:main,printf常量,如:23、2.3、“Welcome”分隔符,如:#、(、)、<、>嚴格的語法格式單詞排列規則如:主函數的程序結構main(){
若干名字說明 若干語句
printf(…);}另一個簡單的C語言程序任務:求從鍵盤輸入的兩個整數的和分析:輸入兩個整數x,ysum=x+y輸出sum流程圖sum=x+y輸入兩個整數x,y輸出sum另一個簡單的C語言程序任務:求兩個整數的和#include<stdio.h>main(){ intx,y,sum; printf(“請輸入兩個整數:”); scanf(“%d%d”,&x,&y); sum=x+y; printf(“和等于%d\n”,sum);}說明變量x,y,sum是整數類型標準函數(輸入用)計算和賦值請輸入兩個整數:2398和等于121程序結構頭文件導入 #include引入標準庫的函數說明(在文件stdio.h中)什么是函數表示一個執行過程(若干個語句);用名字標識。
標準函數:編譯系統事先準備好的函數什么是語句表示一個執行步驟;通常以引號結尾。什么是名字說明說明程序中使用的標識符包括:代表函數的函數名、代表數據對象的變量名標識符使用原則標識符(名字)的組成首字符為字母或_,其余字符為數字字符或字母或_標識符區分大小寫使用原則:先說明、后引用適用于所有變量名、函數名變量說明(數據對象說明)說明變量的數據類型格式: 類型變量名;例如: intx; x是整型變量
charc,h; c和h是字符型變量
為提高可讀性,用標識符命令最好“見名知義”,而且規范大小寫的使用方式。include<stdio.h>將文件stdio.h
插入stdio.h
中有函數printf
和scanf
的說明數據結構
n,sum,a,b,cC語言程序4任務:輸入一個三位數,計算每位數字之和。開始an/100結束bn/10-a*10cn%10輸入一個三位數n輸出每位數之和【程序4】#include<stdio.h>main(){intn,a,b,c,sum;printf("Inputn:");scanf("%d",&n);a=n/100;b=n/10-a*10;c=n%10;sum=a+b+c;printf("n=%d,sum=%d\n",n,sum);}Inputn:678
6=67-608n=678,sum=21
程序中的運算算術運算加減乘除 x+yx-yx*yx/y求余數 x%y
(x,y必須為整數)以算術運算表達式的形式出現除法時,x,y都為整數,其結果為整數。賦值運算sum=x+y驅除變量x和y的值,完成加法后;將結果存放到變量sum(改變了其內容)等號=代表賦值,而不是相等。輸入和輸出的實現scanf(“%d%d”,&x,&y)%d 指示整數的輸入輸出(轉換說明符)輸入2個整數依次轉換到變量x和y中用戶在鍵盤輸入回車(Enter)時開始讀入printf(“和等于%d\n”,x)輸出指定的符號串,用變量x的值替換%d,\n是轉義字符,代表“回車符”(換行符)scanf和printf
來自C語言的標準函數庫是預先準備好的程序模塊,供直接使用程序開發環境—TurboC標題欄主菜單窗口控制按鈕信息窗口功能鍵提示符2.2TURBOC的使用方法綜合開發環境文件名:TC.EXE 在D:/TC目錄下提供編輯(Edit)、編譯(Compile)、運行(Run)、調試(Debug)功能上機過程打開計算機、啟動TC.EXE編輯源程序文本編譯運行(預處理、編譯、連接、裝入、執行)輸入數據、查看結果如果有錯誤、重復以上過程;不斷總結提高常用命令程序文本編輯命令進入編輯:Alt+E裝入存在的文件:F3、輸入文件名(***.C)保存編輯結果:F2、輸入文件名(***.C)編譯運行命令生成可執行文件(Make):F9編譯后立即執行:Ctrl+F9系統將指示程序錯誤(在Message窗)或者:報告成功顯示輸出結果命令Alt+F5C語言程序的編制和調試過程編輯程序文本保存程序文本編譯連接運行裝入程序文本新建程序修改存在的程序編譯報錯結果有錯結束其他常用命令無奈的選擇Esc或連續按F6(窗口切換)菜單選擇Alt+首字符跟蹤命令(Trace): F7(單步跟蹤)設置監視點(Watch): Ctrl+F7輸入變量名:message窗將顯示變量值退出TURBOCAlt+X環境配置OptionDirectory設置include和lib文件目錄TurboC演示編輯編譯運行跟蹤2.3內存的概念與賦值的概念程序中的變量:代表內存單元;變量說明語句為變量分配內存單元intx,y;各種類型需要的內存空間大小不同,表示范圍和精度不同變量的值相應的內存單元中的數據值,參與計算賦值(用等號=表示)的意義將數據保存到變量對應的內存空間,如:sum=x+y變量的不同意義變量被賦值時(等號左側):代表內存單元變量的其他使用:代表內存單元中的數據值程序只能訪問分配給自己的內存單元程序例執行過程intx,y,sum;printf(“請輸入兩個整數:”);scanf(“%d%d”,&x,&y);sum=x+y;printf(“和等于%d\n”,sum);…………內存空間xysum9823121請輸入兩個整數:2398和等于121程序與數學計算的區別程序變量的特征是存儲單元,可以保存計算的結果賦值將改變其內容(=表示賦值)過程性語句的順序執行計算結果(變量內容)和語句執行順序有關保存數據的必要性常用算術運算符+(加)-(減)*(乘)/(除)%(求余)【例】將代數式改寫成C語言算術表達式。3.14159*(r*r)/(a+b)
無乘方運算符不能用不能丟不能丟可省略可省略賦值運算應注意:賦值運算符的兩邊數據類型不一致時:例如,inta;a=(int)4.5;4賦給a例如,inta;a=4.5;系統可自動轉換:可人為地轉換:自動轉換成44賦給a表達式的值為4強制類型轉換鍵盤輸入時應注意:1)輸入的整數或實數之間要用空格、制表符(Tab)或回車符隔開。2)輸入時直到輸入項都得到數據為止。若輸入數據有錯,將結束等待,繼續執行后面的語句。注意:出錯時通常不給出出錯信息,而是使得余下的相應變量得不到正確的輸入數據。例:scanf(”%d%d%f”,&a,&b,&f);232535.5<CR>或23<CR>25<CR>35.5<CR>輸入、輸出的格式描述必須注意:
1)格式串中的格式轉換描述和它所對應的參數類型必須按從左到右的順序一一對應匹配。
2)格式串里格式轉換描述個數和其他參數個數應相同。
如果寫錯,引起的后果是無法預料的。2.4選擇結構的實現應用問題根據不同條件,完成不同的計算處理語言支持條件判斷的支持關系運算選擇結構應用例要求:輸入兩個實數,進行比較;輸出比較結果(“等于”,“大于”或“小于”)流程輸入兩個實數x,y輸出“相等”輸出“大于”輸出“”小于x=y?x>y?TFTF應用例的實現#include<stdio.h>main(){
float x,y;printf(“請輸入兩個實數:”);scanf(“%f%f”,&x,&y);if(x==y) printf(“X等于Y\n”);else{ if(x>y) printf(“X大于Y\n”); else printf(“X小于Y\n”);}}說明x和y是浮點數條件表達式條件分支(真、假)條件語句格式:if(條件表達式)
語句 /*真分支*/else
語句 /*假分支*/或者if(
條件表達式)
語句 /*真分支*/關鍵字(保留字)系統已經使用的標識符,如:
ifelseintfloat…常用關系運算符等于==(雙等號)不等!=
大于>
小于<
大于等于>=
小于等于<=其他語言現象else子句和最近的if語句匹配浮點數變量變量說明 floatx; 轉換說明符 %f分程序結構(復合語句)用{和}包裝的一組語句常用于條件分支的描述程序書寫格式(強烈推薦)每個語句占一行采用縮進格式描述條件分支和復合語句用制表符(TAB)進行縮進2.5循環處理的實現考慮計算任務從鍵盤讀入5個整數,輸出它們的和;設計思路設置一個整型變量,保存整數的和設置另一個變量,保存剛讀入的整數每讀入一個整數,將它累加到整數和實現需求為5個整數的處理提供循環控制程序例為實現循環,設置變量i,保存循環次數(計數器)。while語句檢查條件i<5控制循環終止循環條件不成立時執行后面的語句#include<stdio.h>main(){intsum,x;inti; /*循環變量*/sum=0;i=0;while(i<5){ scanf(“%d”,&x); sum=sum+x; i=i+1;
}printf(“sum=%d\n”,sum);}循環語句格式while(條件表達式)
語句 /*循環體*/控制邏輯表示為流程圖注釋表示/*注釋*/條件表達式循環體成立不成立上例的另一種實現方法(實現2)討論內存空間的使用實現1:3個整型變量實現2:5個整型變量算法實現1:存儲概念實現2:數學概念程序運行和數學計算區別:存儲器和賦值的概念提倡用實現1方法#include<stdio.h>main(){intx1,x2,x3,x4,x5;scanf(“%d%d%d%d%d”, &x1,&x2,&x3,&x4,&5);printf(“sum=%d\n”, x1+x2+x3+x4+x5);}語言小結(一)變量說明int float char控制語句if語句 while語句賦值語句變量=表達式算術運算(左結合)+-*/% 加減乘除求余數據類型的約束:結果取精度高的類型強制類型轉換:(類型名)表達式關系運算
==!=><>=<=等于不等大于小于大于等于小于等于語言小結(二)
控制語句
if語句 while語句輸入輸出
scanf函數 printf函數格式轉換符
%d%f%c整數浮點數字符包含命令(預處理)
#include<stdio.h>標準輸入輸出2.6讀解程序#include<stdio.h>#include<math.h>main(){ inta,b,c; floatt1,t2; scanf(“%d%d%d”,&a,&b,&c); t1=b*b–4*a*c; if(t1==0) printf(“x=%f\n”,-(float)b/2a); elseif(t1>0){ t2=sqrt(t1); printf(“x1=%f,x2=%f\n”,(-b+t2)/(2*a),(-b-t2)/(2*a)); }else printf(“無解\n”);}強制類型轉換數學函數說明求平方根流程剖析一元二次方程aX2+bX+c求解過程變量保存數學計算中的中間結果輸入a,b,cb2-4act1t1=0YNt1>0輸出-b/2a輸出(-b+t2)/2a(-b-t2)/2a輸出“無解”YN
t1t2Y格式化輸入輸出函數小結輸入scanf(格式說明,變量地址,變量地址…);按照指定格式從標準輸入文件(鍵盤)讀數據,寫入指定的變量常用&來獲得變量地址(內存單元地址)輸出printf(格式說明,表達式,表達式…);按照指定格式將各個表達式的值寫入標準輸出文件(顯示器)常用格式轉換符%d整數 %c字符 %f浮點數 %s字符串程序測試
測試設計考慮數據的各種取值,準備測試用例檢查每個程序分支
b2-4ac等于0,大于0,小于0
測試用例
121b2-4ac=0
263b2-4ac=12
433b2-4ac=-39第二章作業
閱讀教科書第二章自我測試2.3,2.4,2.5,2.6
程序設計練習(練習本)
2.192.232.293.133.17
上機作業實驗2.1實驗2.2第三章算法初步算法解題過程的精確描述可完全精確執行、有確定結果的有窮指令序列算法的控制結構選擇結構(如:C語言的if語句)循環結構(如:C語言的while語句)順序結構(語句組)3種結構可以滿足各種算法的所有控制要求算法描述的必要性程序設計過程:算法設計+程序實現算法描述:描述解題邏輯,驗證正確性獨立于程序設計語言程序實現:利用程序設計語言的功能,實現算法熟悉語言的語法、語義、支撐環境算法描述方法流程圖偽碼偽碼描述例:求5個整數之和數據對象考慮sum保存已經輸入的整數之和算法描述:賦值0sum重復執行5次2.1
讀入一個整數2.2
累加到sum輸出整數和
sum僅考慮主要數據對象和控制結構程序實現階段考慮數據對象和控制結構的具體實現3.1實例1:考試成績統計任務:輸入某班級人數和某課程的考試成績(100分制),輸出及格率(>60)和不及格率。基本方法逐個輸入成績,判斷及格否,統計及格人數和不及格人數數據對象考慮班級人數 num及格人數 pass不及格人數 fail輸入成績 score過程描述(流程圖)初值設置0pass0fail讀入成績
score讀入學生人數
numnum=0score<60fail加一num減一pass加一num減一計算及格率pass/(pass+fail)和不及格率fail/(pass+fail)并輸出YNYN算法的驗證模擬算法的計算過程,跟蹤數據的變化動作numpassfailscore初值設置00輸入人數3輸入分數2169輸入分數1157輸入分數0282輸出程序結構設計流程圖的結構從外層到內層順序
循環
選擇程序結構復合語句while語句if語句while條件:num==0if條件:score<60細節問題輸出格式:65.5%涉及浮點數的處理程序實現#include<stdio.h>main(){intnum,pass,fail,score;
while(0!=num){
}}printf(“輸入分數:”);scanf(“%d”,&score);if(score<60){ fail+=1; num-=1;}else{ pass+=1; num-=1;}num=pass+fail;printf(“passed%f\%\n”,(float)pass/num*100);printf(“failed%f\%\n”,(float)fail/num*100);pass=fail=0;printf(“請輸入學生人數:”,&num);初值設置和輸入學生人數輸出及格率和不及格率輸入分數統計及格人數和不及格人數語言現象賦值表達式pass=(fail=0) 賦值運算符= 右結合簡化賦值(自反運算)pass+=1等價于pass+=1printf(“passed%d\%\n”,100*(float)pass/num);強制類型變換(類型名)表達式 改變其數據類型轉義字符\%用于輸出%設計方法分析Programs=Algorithms+DataStrcture
程序=算法+數據結構程序設計過程問題定義:輸入輸出要求(數據與格式)數據結構:分析需要保存的信息,組織數據結構算法設計:編制解題步驟程序編碼:選用程序設計語言,實現解題步驟程序測試:排錯和測試學習方法算法的學習(長期任務)利用變量就是存儲器的概念,考慮解題過程中必須保存的數據利用3種控制結構(順序、選擇、循環),考慮數據變化過程,設計處理過程應能夠熟練地設計數據組織和簡單的算法程序設計語言的學習閱讀程序實例,理解新的語言現象程序設計實踐,上機排錯調試對主要語言功能和上機編程操作應該達到十分熟練3.2實例2統計數字字符的出現次數任務統計一行輸入字符中每個數字字符的出現次數數據對象考慮應保存10個整數;設置數組digits[10]每個元素存一個數字的出現次數數字字符a保存在digits[a]中輸入字符ch算法的描述(偽碼)設digits數組元素為0讀入一個字符
ch如果ch不是換行符,則3.1
如果ch是數字字符,則3.1.1digits[ch]加一3.2
讀入一個字符
ch3.3
重復處理3輸出digits數組算法細化設digits數組元素為0設循環變量i為0當i小于10時2.1
設0
digits[i]2.2i加一2.3
重復2輸出digits數組設循環變量i為0當i小于10時2.1
輸出digits[i]2.2i加一2.3
重復2程序結構設計算法過程分析3個循環:主算法、2個細化算法程序結構采用while語句循環控制:換行符檢查、數組下標數據結構一維整數數組下標問題:數字字符
整數(利用ASCII值)#include<stdio.h>main(){ intdigits[10],i=0; charch; while(i<10) digits[i++]=0; scanf(“%c”,&ch); while(ch!=‘\n’){ digits[ch–‘0’] +=1; scanf(“%c”,&ch); } i=0; while(i<10){ printf(“%d:%d”,i,digits[i]); i++;} }利用字符的ASCII值程序實現自增運算賦值后加1整數數組程序說明數組聲明類型數組名[數組大小N];數組引用數組名[表達式]下標范圍0到N-1自增和自減運算(++,--)前置: ++i等效于i=i+1后置: i++計算在得到i的值之后,將i加一字符的運算以其ASCII值參加整數運算C語言支持不同類型的混合運算數據類型和運算數據類型的作用說明內存空間的需求說明可參加的運算(不同類型數據的機器指令不同)C語言的基本數據類型和轉換說明符類型內存空間類型內存空間int整型機器字長%dchar字符型1個字節%cshort短整型2個字節%dfloat浮點數4個字節%flong長整型4個字節%lddouble雙精度數8個字節%lfunsigned無符號整數機器字長%u結構化程序方法自頂向下首先描述外層核心算法與主要數據對象突出解題邏輯,忽略細節控制結構不超過兩層循環限制了算法的難度逐步求精在確立了外部算法的基礎上逐步描述各個細節算法及其相關數據對象(如:上例中的digits初始化和輸出)復雜情況下,細節算法仍應進一步逐步求精數據對象與變量數據對象的設置分析算法中,需要保存的數據有明確的意義,不多不少,避免重復變量的設置為數據對象的保存提供存儲空間提供數據結構(如:數組等)避免同一變量在不同時刻代表不同的數據對象影響程序可讀性的關鍵因素之一3.3實例3計算最大公約數任務給定兩個正整數,計算最大公約數算法(歐幾里德算法)
n 如果m整除ngcd(m,n)=gcd(n,mod(m,n))否則條件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計單位文件管理制度
- 設計裝飾公司管理制度
- 診室護士日常管理制度
- 診所污水采樣管理制度
- 試劑耗材存放管理制度
- 財務資金收款管理制度
- 財政補助收入管理制度
- 貨架生產倉庫管理制度
- 貨物進出碼頭管理制度
- 貨運電梯安全管理制度
- 疾病預防控制體系建設與發展
- 核電工程施工隱患排查專項培訓課件
- 河南省開封市體育中心PPP項目案例分析
- 基于UG NX 5.0的箱體零件的數控加工
- Q_SLB0402-2005 產品鋼印及標記移植
- 一種基于SG3525的半橋高頻開關電源
- 勞動者個人職業健康監護檔案(樣板)
- 空客A320-IPC手冊使用介紹
- 嚴文井《小溪流的歌》語文版七上18課課文原文
- 初三中考前一周沖刺主題班會ppt課件
- 格氏試劑(課堂PPT)
評論
0/150
提交評論