順序和分支程序結構.ppt
《順序和分支程序結構.ppt》由會員分享,可在線閱讀,更多相關《順序和分支程序結構.ppt(38頁珍藏版)》請在裝配圖網上搜索。
C語言程序設計教程,第3章:順序程序結構和分支程序結構(2課時),本章小結,順序程序結構分支程序結構,順序結構程序是指在程序的每次執(zhí)行過程中,程序中的各條語句按照在程序中的先后順序依次執(zhí)行。每個順序結構程序中的可執(zhí)行語句在每一次程序執(zhí)行的過程中,執(zhí)行且只執(zhí)行一次。順序程序是最簡單的程序。,設計一個程序,首先要將問題分析清楚,然后用適當?shù)姆椒▽栴}描述出來,再根據(jù)問題的描述編成程序,最后調試運行。,描述問題的方法很多,有各種流程圖,層次圖、偽代碼等,更多的時候是多種手段混合使用。,1順序結構程序,/*exam31.c*/*最簡單的C程序*/#includemain()printf(“Hello,world!、n”);,例3.1最簡單的C程序,這也是世界上第一個C程序。,頭文件,主函數(shù),例3.2已知圓的半徑為10,求圓的面積和周長,用計算機求解,程序如下,/*exam32.c*/*計算圓的面積和周長*/#include#definepi3.1415/定義符號常量main()floatarea,s;area=pi*10.0*10.0;s=2*pi*10.0;printf(“面積=%f,周長=%fn”,area,s);,數(shù)值常量,例3.3已知圓的半徑為R(R是一個可變的量),求圓的面積和周長,用計算機求解,完整程序如下,/*exam33.c*/*計算圓的面積和周長*/#includemain()floatr,area,s;scanf(“%f“,1、注釋,2、數(shù)據(jù)說明,3、數(shù)據(jù)輸入,4、數(shù)據(jù)處理,5、結果輸出,例3.4從鍵盤輸入兩個數(shù)a、b,求a除b的余數(shù)。即整除后剩下的數(shù)。編寫完整的程序。,源程序代碼如下:,/exam34.c/求兩個數(shù)的余數(shù)#includemain()inta,b,c;/說明整型變量scanf(“%d,%d”,整除運算符,輸出語句,例3.5以我國1992年工業(yè)產值為100,如果以9%的年增長率增長計算到2000年時的工業(yè)產值。,1算法分析:,對此問題,要找出問題的數(shù)學模型。設r為年增長率,n為年數(shù),v為第n年的總產值。則有v=100*(1+r)n,2數(shù)據(jù)結構,根據(jù)算法分析,至少要用到這么幾個量,年增長率、年數(shù)、第n年的總產值。而這幾個量中,年增長率肯定是小數(shù)(浮點)型數(shù)據(jù),年數(shù)是整數(shù)(整型),總產值不會是整數(shù),應為浮點數(shù)。這些數(shù)據(jù)都要放在相應的變量中,并要進行相應的數(shù)據(jù)說明。,/exam35.c/計算到2000年的工業(yè)產值#include#includemain()intn;floatrate,value;n=2000-1992;rate=0.09;value=100*pow(float)(1+r),(float)n);printf(“2000年的產值為%f:”,value);,pow為求冪的函數(shù)格式pow(底,指數(shù))底,指數(shù)均為浮點數(shù)。,強制類型轉換,3源程序代碼,注意頭文件,此例中,只能算到2000年,且年增長率為9%時的工業(yè)產值。如果將工業(yè)產值改為10%,或者要算到其它年份,必須要修改源程序,使用不便。,方法2:用scanf函數(shù)重新編寫程序,注意開發(fā)環(huán)境的使用。,/exam25a.c/計算到指定年和指定年增長率的工業(yè)產值#include#includemain()intn,year;/說明整型變量floatvalue,rate;printf(“請輸入年份和年增長率:”);scanf(“%d,%f”,強制類型轉換,改寫后的程序使用更靈活。,例3.6雞兔同籠,已知雞兔總頭數(shù)為H(Heads),總數(shù)為F(Feet),問雞兔各有多少只?,1算法分析:,(1)建立數(shù)學模型設雞為x只,兔為y只,由題意有:x+y=h.(1)2*x+4*y=f.(2),(2)求解方程,找出x,y的具體求解公式:,以下用消元法找出方程的解,(2)式-2(1)式,注意:計算機不會自己建數(shù)學模型,也不會自己解方程!,2y=f-2h,y=(f-2h)/2,4(1)式-(2)式,2X=4H-F,X=(4H-F)/2,2數(shù)據(jù)結構,程序中要用到不同的數(shù)據(jù),存放頭、腳數(shù)量的變量,存放方程解(雞、兔數(shù)量)的變量,存放方程判別式的變量等。對于頭、腳的數(shù)量,肯定是整型變量,方程的解理論上講是整型,但在求解方程時要進行運算,為了避免發(fā)生錯誤,最好是用浮點數(shù)據(jù)(實型)。,3偽代碼(由于此問題比較簡單,也可直接編寫程序)。,說明變量x,y,f,h輸入數(shù)據(jù)f,h計算x,y打印結果,偽代碼是一種程序設計工具,介于程序語言與自然語言之間,偽代碼不能被計算機編譯,但它很容易翻譯成高級語言.,/exam36.c#includemain()floatx,y;intf,h;printf(“InputthenumbersofHeadsandFeet:”);scanf(“%d,%d”,4源程序代碼,說明輸入數(shù)據(jù)的內容,輸出語句,賦值語句,問題:,1、從鍵盤輸入一個數(shù),如果該數(shù)為正,打印,否則不打印;,2、將考試成績不及格的學生名單打印出來;,3、解一元二次方程,求出相應的實根或復根。,對于上述或類似問題,需要進行某種判斷,并根據(jù)不同情況進行不同的處理,怎樣進行程序設計?,2分支結構程序設計,解決辦法:,1、引入新的程序結構,分支結構,有時也稱判斷結構或選擇結構。,2、為了和分支結構相配合,同時還要引入邏輯表達式的概念。,3、有三種形式可進行分支結構的程序設計,A、if結構B、多重選擇結構(switch語句)C、無條件轉移結構(goto語句),內容,if語句,關系表達式和邏輯表達式,if語句的變形及嵌套,多重選擇語句(switch語句),無條件轉移語句(goto語句),本章小結,例3.7求一元二次方程,的根,1、算法分析:,2、數(shù)據(jù)結構:由于問題簡單,只需用到一些單精度實數(shù),3、偽代碼,輸入方程系數(shù)a,b,c計算判別式d=b*b-4*a*cif判別式大于等于0then計算兩個實根定位輸出光標打印結果else計算實部計算虛部定位輸出光標打印結果endprogram,4、源程序清單,/exam37.c#include#includemain()floata,b,d,c,x1,x2,p,q;printf(“輸入方程系數(shù):”);scanf(“%f,%f,%f”,求平方根的函數(shù),關系運算符,例3.8商店售貨,按購買貨物款的多少分別給予不同的優(yōu)惠折扣,編程計算實際應付貨款。,購貨不足250元,沒有折扣;購貨250元(含250元,下同),不足500元,減價5%;購貨500元,不足1000元,減價7.5%;購貨1000元,不足2000元,減價10%;購貨2000元及以上,減價15%;,1、算法分析:設購物款為M,折扣為D,則D可表示為:D=0(M250)D=0.05(250M500)D=0.075(500Mb?a:cd?c:dab?a:(cd?c:d),此處使用了條件運算符,3源程序代碼之二,#includemain()inti;printf(“輸入數(shù)字1-7:”);scanf(“%d”,例3.13入星期中的某一天,顯示對應的英文,此例似顯復雜,是否有更好的辦法?,main()inti;printf(“輸入數(shù)字1-7:”);scanf(“%d”,例3.14用switch語句重寫打印星期程序。,main()intI;printf(“輸入數(shù)字1-7:”);scanf(“%d”,例3.15用switch語句重寫例3.4的程序,main()chara;printf(“輸入一個字符:”);a=getchar();if(a=“Y”|a=“N”)if(a=“Y”)printf(“是n”);elseprintf(“否n”);elseprintf(“字符不合要求!n”),顯然,改寫后的程序更清晰,更簡短。,/exam315.c#includemain()chara;printf(“輸入字符:”);a=getchar();switch(a)caseY:printf(“是n”);break;caseN:printf(“否n”);break;default:printf(“字符不合要求!n”);,例3.16在屏幕上顯示菜單,分析:程序首先在屏幕上將功能顯示出來,用戶根據(jù)需要選擇相應的功能,程序根據(jù)用戶的選擇執(zhí)行相應的程序段。,對于這類程序,往往是用戶輸入一個英文字母,然后程序根據(jù)字母來斷別程序該執(zhí)行什么程序段,故一般用switch語句比較方便。,2源程序清單,switch(a)casei:printf(“調用輸入模塊!n”);break;caseo:printf(“調用輸出模塊!n”);break;casel:printf(“調用查找模塊!n”);break;caseq:printf(“調用退出模塊!n”);break;,/exam316.c#includemain()chara;printf(“請選擇:”);printf(“輸入i”);printf(“輸出o”);printf(“找出最長的單詞l”);printf(“退出q”);a=getchar();,執(zhí)行選項時,要調用相應的模塊(程序段)。由于現(xiàn)在還沒有相應的程序,暫用一條打印語句代替。,以后會用相應程序代替,例3.17統(tǒng)計某班級中計算機課程中考試成績高于80分的人數(shù)。假設學生人數(shù)為(結束程序,按Ctrl+Break組合鍵),/exam317.c#includemain()inti=0,fs,j=0;Loop:scanf(“%d”,本章小結,1、分支結構:改變程序的執(zhí)行流程,或有選擇地執(zhí)行程序;,2、ifelse和switch是結構化語句,而goto語句不是;,3、塊if語句可以取代所有的分支結構,而多重分支結構不可;,4、塊if語句中的條件可以是復雜邏輯表達式,而多重分支中的條件只能是簡單表達式;,5、塊if與goto語句結合,可以構造任何復雜的循環(huán),但用專門的循環(huán)語句更方便。,作業(yè),編寫程序,接受用戶輸入的整數(shù),如果是奇數(shù),則乘3加1后輸出結果,是偶數(shù),則除2后輸出結果。已知2006年的12月1日是星期五,編寫程序,接受用戶輸入的131間的整數(shù),判斷是星期幾,打印出結果。將上題的結果按如下格式輸出:,Calendar2006-12-SuMoTuWuThFrSa-31-,作業(yè)(續(xù)),接受用戶輸入的年份和月份,判斷是否是閏年,輸出該月的天數(shù)(用switch語句實現(xiàn))。,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 順序 分支 程序結構
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-3283858.html