C語言程序設(shè)計基礎(chǔ)_第1頁
C語言程序設(shè)計基礎(chǔ)_第2頁
C語言程序設(shè)計基礎(chǔ)_第3頁
C語言程序設(shè)計基礎(chǔ)_第4頁
C語言程序設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C語言程序設(shè)計基礎(chǔ)劉新國1回顧分支結(jié)構(gòu)ifif/elseif/else if/else if/elseswitch2假表達(dá)式1表達(dá)式2語句1語句2語句n-1語句n真 表達(dá)式n-1假真 假假真 if/else if語句if (表達(dá)式1) 語句1else if(表達(dá)式2) 語句2else if(表達(dá)式n-1) 語句n-1else 語句nswitch語句流程圖4假v=常量1?語句段1語句段2語句段n語句段n+1真 假真 v=常量2?v=常量n?入口計算表達(dá)式值v出口假假真 從哪個語句段開始執(zhí)行?有n+1個入口可以選擇分別對應(yīng)n個case的入口和1個缺省(default)的入口根據(jù)表達(dá)式的值決定執(zhí)行入

2、口如果表達(dá)式等于常量表達(dá)式k,那么從語句段k開始執(zhí)行第二章循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)do-while循環(huán)結(jié)構(gòu)break語句和continue語句多重/嵌套循環(huán)5for語句回顧for( 表達(dá)式1;表達(dá)式2;表達(dá)式3 ) 循環(huán)體語句for( i=1; i 0.0001 ) item = flag * 1.0/denominator; sum = sum + item; /* 準(zhǔn)備下一項 */ flag = -flag; denominator = denominator + 2;printf( pi = %.4fn, sum * 4 );10item的初值有多重要?while語句應(yīng)用( II )例

3、4-2,P67 輸入一批學(xué)生成績,以負(fù)數(shù)作為結(jié)束標(biāo)志,計算平均成績,統(tǒng)計不及格人數(shù)。int num, failed;double grade, sum;num = failed = 0;sum = 0;printf(Enter grades:);11成績個數(shù)未知!適合while循環(huán)統(tǒng)計學(xué)生成績scanf(%lf, &grade);while( grade =0 ) sum = sum + grade; num +; if( grade 9 )循環(huán)體中break和continue語句例4-4,P70素數(shù)的判定問題:除了1和自身,不能被別的數(shù)整除int i, m;scanf(%d, &m);for

4、( i = 2; im/2 & m!=1 ) printf(Yesn);else printf(No!n);17for循環(huán)中的break語句for( 表達(dá)式1;表達(dá)式2;表達(dá)式3 ) 語句段1 if( exp ) break; 語句段218表達(dá)式2語句段1真假表達(dá)式1 表達(dá)式3語句段2exp真假for循環(huán)中的continue語句for( 表達(dá)式1;表達(dá)式2;表達(dá)式3 ) 語句段1 if( exp ) continue; 語句段219表達(dá)式2語句段1真假表達(dá)式1 表達(dá)式3語句段2exp真假while循環(huán)中的break語句while( 表達(dá)式 ) 語句段1 if( exp ) break; 語句段

5、220表達(dá)式語句段1真假語句段2exp真假while循環(huán)中的coninue語句while( 表達(dá)式 ) 語句段1 if( exp ) continue; 語句段221表達(dá)式語句段1真假語句段2exp真假循環(huán)體中break和continue語句適用于所有的循環(huán)結(jié)構(gòu)for, while, do-while用于靈活控制循環(huán)結(jié)構(gòu)的執(zhí)行流程22多重嵌套循環(huán)for, while, do-while 能夠相互嵌套構(gòu)成多重循環(huán)處理多維數(shù)據(jù)處理復(fù)雜過程23多重嵌套循環(huán)假設(shè)有一幅寬度為width、高度為height的圖像,使用for-for嵌套語句,對它的每一個像素進(jìn)行處理。(例如亮度值放大)for( x = 0

6、; x width; x + ) for( y = 0; y height; y + ) /* 處理坐標(biāo)為(x,y)的圖像像素 */ /* 具體代碼略 */ 24循環(huán)體被執(zhí)行了多少次?width * height每個像素用(x,y)坐標(biāo)表示省略 多重嵌套循環(huán)假設(shè)有一幅寬度為width、高度為height的圖像,使用for-for嵌套語句,對它的每一個像素進(jìn)行處理。(例如亮度值放大)for( x = 0; x width; x + ) for( y = 0; y height; y + ) /* 處理坐標(biāo)為(x,y)的圖像像素 */ 25循環(huán)體被執(zhí)行了多少次?width * height循環(huán)結(jié)構(gòu)

7、的設(shè)計循環(huán)程序的實(shí)現(xiàn)要點(diǎn):歸納出哪些操作需要反復(fù)執(zhí)行? 循環(huán)體這些操作在什么情況下重復(fù)執(zhí)行? 循環(huán)條件選用合適的循環(huán)語句for while do-while循環(huán)具體實(shí)現(xiàn)時考慮(循環(huán)條件):事先給定循環(huán)次數(shù),首選for通過其他條件控制循環(huán),考慮while或do-while至少執(zhí)行1次,用do-while否則,用while26例4-8,P78 n個成績的最高分int n, i, grade, max;printf(Enter n: );scanf (%d, &n);printf(Enter %d marks: , n);scanf (%d, &mark);max = mark;/* 剩余成績循環(huán)處

8、理 */* 次數(shù)未知,適合while語句 */27例4-8,P78 n個成績的最高分for( i = 1; i n; i+ ) scanf (%d, &mark); if( max =0 ) if( max mark ) max = mark; scanf (%d, &mark); printf(Max = %dn, max);30例4-9,P80 將整數(shù)按照數(shù)字逆序輸出例如:x = 12345 的逆序?yàn)?54321如何得到呢?從低位開始逐個計算 5 = x % 10,x x/10 = 1234 4 = x % 10,x x/10 = 123 3 = x % 10,x x/10 = 12 2

9、= x % 10,x x/10 = 1 1 = x % 10,x x/10 = 0 結(jié)束31例4-9,P80 將整數(shù)按照數(shù)字逆序輸出int x;printf(Enter x: );scanf (%d, &x);/* 對每一位數(shù)字進(jìn)行循環(huán)處理 */* 次數(shù)未知,適合while語句 */32例4-9,P80 將整數(shù)按照數(shù)字逆序輸出while( x != 0 ) printf( %d, x%10 ); x = x/10;33例4-9,P80 將整數(shù)按照數(shù)字逆序輸出/* 用 do-while 實(shí)現(xiàn) */do printf( %d, x%10 ); x = x/10; while( x != 0 )用

10、do-while 實(shí)現(xiàn)更好,對0也work!34例4-10,P81求100以內(nèi)的素數(shù)每行輸出10個需要考察的整數(shù)范圍2,3,4,100素數(shù):沒有真因子。 對于整數(shù) m,真因子的范圍是:1 真因子 m1 真因子 = m/2如非素數(shù),必有真因子滿足:1 真因子 = m1/2每行輸出10個當(dāng)個數(shù)是10的倍數(shù)時,輸出換行符printf(n);35#include#includeint count, m, n, i;count = 0;for( m = 2; m100; m+ ) n = sqrt(m); for( i=2; i=n; i+ ) if( m%i=0 ) break; if( i=n )

11、continue; printf(%6d, m); count +; if( count%10=0 ) printf(n);36例4-11,P82計算并輸出:斐波那契數(shù)列前10項1 1 2 3 5 8 13 21 從第3項起,等于前2項之和int x1, x2, x, i;x1 = x2 = 1;printf(%6d%6d,x1,x2);37例4-11,P82計算并輸出:斐波那契數(shù)列前10項for( i=3; i=10; i+ ) x = x1 + x2; printf(%6d,x); x1 = x2; x2 = x;printf(n);38例4-12,P82窮舉算法(搬磚)男人:3塊/人女人

12、:2塊/人小孩:1塊/2人問:45人搬45塊磚,有多少種搬法?int men, women, child;39例4-12,P82窮舉算法(搬磚)for( men=0; men=45; men+ )for( women=0; women=45; women+ )for( child=0; child=45; child+ ) if( men+women+child=45 & men*3+women*2+child*0.5=45 ) printf(men=%d, women=%d, child=%dn, men, women, child); 40合計執(zhí)行多少次循環(huán)操作?45*45*45改進(jìn)1for( men=0; men=45; men+ )for( women=0; women=0 & men*3+women*2+child*0.5=45 ) printf(men=%d, women=%d, child=%dn, men, women, child); 41合計執(zhí)行多少次循環(huán)操作?45*45改進(jìn)2for( men=0; men=15; men+ )for( women=0; women=22; women+ ) child = 45-men-women; if( men*3+women*2+child*0.5=45

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論