




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、模塊二:三種基本結構及流程控制C程序的三種基本結構是順序結構、選擇結構、循環結構。這三種結構分別需要借助于特定的語句控制實現。(1)順序結構:賦值語句和函數調用語句是控制該結構的主要語句。函數調用語句中最常用的是:scanf( )、printf( )、getchar( )、putchar( )等用于控制輸入輸出的語句。注意用scanf( )輸入變量值時要嚴格按照格式控制串的形式要求輸入,用printf( )輸出時要進行相應的格式控制,需要熟記幾種格式轉換說明符:%c、%s、%d、%f、%lf(當變量為double類型時,在scanf中必須用%lf,但輸出時用%f就可以了)。練習:1、已知a、b
2、、c為int型變量,用于輸入的語句為:scanf(a=%d,b=%d,c=%d,&a,&b,&c);,若想使a的值為1,b的值為2、c的值為3,應當怎樣輸入?如果提供的輸入方法為1,2,3,則對應的輸入語句是什么?2、float v1234.5678;,輸出格式為:輸出總寬度為10,精度為3,則應使用語句printf(_);實現;若輸出語句為:printf(“%.3f”,v);,輸出的內容為:_(2)選擇結構:用if.else、switch語句配合復合語句、break語句控制實現。If語句有三種形式:單分支if、雙分支if、嵌套if,注意else應與其前最靠近的未匹配過的if相對應,而與對齊的
3、形式無關,每一個else實際上都隱含了一個條件,要充分利用這些條件分析程序;if后的條件通常是關系表達式,但是實際上可以是任何表達式,僅以該表達式是0或非0來判斷條件的假和真。注意:if ( )及else后面都只能控制一條語句,經常需要用到復合語句。switch語句中特別要注意的是:(1)switch后面的表達式類型應當為整型、字符型、枚舉型,而不可以是float或double型,因為表達式的取值必須是離散值。(2)找到與表達式匹配的常量后開始執行,直到遇到break或語句結束才會停止。因此每一個分支后如果沒有及時用break,則繼續向下執行,這樣,switch結構可以選擇多個分支執行(3)這
4、些常量的順序調整不影響程序的正確性,只要每個分支執行的功能固定就可以了。練習:1、已知變量tf為整型,下面的條件語句中,五種表達有一種與其它四個不等價,它是?if (tf ) 語句1; else 語句2; B、if ( tf=0 ) 語句2; else 語句1;C、if (tf!=0 ) 語句1; else 語句2;D、if (!tf ) 語句2; else 語句1;E、if (tf=1 ) 語句1; else 語句2;2、設以下所有變量均為整型,下列程序所實現的分段函數是? if (x0) y=1; else y=0; if (xb)c=a;a=b;b=c;4、設有聲明int a=1, b=
5、2,則下面程序段的輸出結果是? 如果是內層的每個case后有break,而外層沒有break,輸出結果是?switch (a)case 1:printf(#n);switch (b)case 1: printf(*n); case 2: printf(*n); case 3: printf(*n); break;case 2: printf(#n); break;(3)循環結構:常用while、dowhile、for三種流程控制語句實現,注意while和for屬于當型循環,dowhile屬于直到型循環,若while后的條件為非0則繼續循環,若為0則結束,三種循環是可以相互轉化的。這里特別強調的
6、是:循環的退出一般是條件為0(for的表達式2,如果表達式2缺省,則表示永真條件、while或do while后的表達式就可以表示條件,如:while (A) ,這就是一個永真條件)時不進入循環體,但是在循環體內也可以用一定條件下的break語句退出本層循環。如果表示條件的表達式值永遠不可能為0,則為一個死循環,這一點要注意!在循環語句中可以用break表示退出本層次循環、continue表示忽略本次循環體中的后續語句,重新開始下一次循環條件的判斷,以便決定是否要繼續循環。循環體只有一條語句,注意復合語句的正確使用,不要誤用分號形成循環體為空語句,例如:for (i=0;i3;i+); s+=
7、i;注意:有關退出的幾個操作:(1)在循環結構中用break結束本層循環、在switch語句中用break結束本層switch中當前分支的執行;(2)在函數體內的return語句結束本函數的調用,返回到調用點;(3)庫函數exit結束程序的執行,返回到操作系統,該函數在頭文件中練習:1、若已有定義int i,則對于如下循環語句,循環體執行的次數分別為_。for( i=0 ; ; i+ )printf(%d ,i);for( ; i=0 ; i+ )printf(%d ,i);for( i=0 ; i0 ; i+ )printf(%d ,i); i=0; while (i=1) i+;2、下列程
8、序運行后,x和y的值分別是?#include void main()int x=1,y=2;for(;x7 )printf(x=%d y=%dn,x,y);break;if ( x= =6 ) continue;y *= x;這一模塊中有很多經典算法,下面幾個是同學們必須非常熟悉的:質數問題判斷一個整數是否為質數(用一層循環可以解決)會定義函數實現,函數原型:int prime(int n); 判斷參數n是否為質數,如果是,返回1,如果不是,返回0。找出一定范圍內所有的質數(用兩層循環可以解決)會定義函數實現,函數原型:void prime(int low,int high); 找出從low到
9、high范圍內的所有質數,是質數則輸出。如果函數需要返回該范圍內的質數個數,則應該將返回值類型修改為int。能按一定的格式輸出(2)求最大公約數問題可以用輾轉相減或相除的方法都可以得到。會定義函數實現,函數原型:int gcd(int m,int n);在輾轉相除法中,當余數為0時的除數即為最大公約數,注意循環控制方式的不同可能導致返回值的不一樣。求最小公倍數:a*b/gcd(a,b)(3)求和問題:掌握求和問題中條件的控制方式、累加的方式:可以根據求和的項數要求來求解,例如:求100項之和;可以根據每一項的精度進行求解,例如:求到這一項的絕對值不超過1E-6為止,注意這時的循環條件應該為:while(fabs(term)=1E-6),如果用do.while循環,條件也是這樣表示。注意分子、分母、當前項、和分別用一個變量表示,正確定義變量的類型,正確解決變符號問題:s=-s;(4)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西省朔州市朔城區四中學2025年初三下學期期末質量調查語文試題含解析
- 山東省菏澤市鄆城縣侯咽集鎮2024-2025學年數學四下期末質量跟蹤監視模擬試題含解析
- 響水縣2024-2025學年小升初總復習數學測試題含解析
- 內蒙集寧二中2025屆高三下學期第三次調考英語試題含解析
- 山西省太原志達中學2025年初三第六次質量檢測試題語文試題含解析
- 產品銷售代理合同協議書實例
- 房屋采購合同范本共
- 企業間租賃合同的優異典范
- Brand KPIs for pet supply online shop Zen Animal in Brazil-外文版培訓課件(2025.2)
- 小班藝術《魚眾不同》+教案
- JT-T-1051-2016城市軌道交通運營突發事件應急預案編制規范
- 被執行人生活費申請書范文
- 江蘇省無錫江陰市四校2023-2024學年高一下學期期中聯考試卷
- 2024年鄭州鐵路職業技術學院單招職業技能測試題庫及答案解析
- 家政服務平臺的綠色發展與可持續發展研究
- 17-軟件版本說明-GJB438C模板
- 38鉻鉬鋁熱處理工藝
- 醫院醫療機構醫療風險管理工作方案(完整版)
- 京東商城的物流體系分解
- 世界文化遺產萬里長城課件
- 2024年貴州高速公路集團有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論