ch4選擇結(jié)構(gòu)程序設(shè)計(jì)_第1頁
ch4選擇結(jié)構(gòu)程序設(shè)計(jì)_第2頁
ch4選擇結(jié)構(gòu)程序設(shè)計(jì)_第3頁
ch4選擇結(jié)構(gòu)程序設(shè)計(jì)_第4頁
ch4選擇結(jié)構(gòu)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩196頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、4.1 一個(gè)簡單的選擇結(jié)構(gòu)程序4.2 if語句4.3 ifelse語句4.4 ifelse if語句4.5 if 語句的嵌套4.6 switch語句4.7 實(shí)驗(yàn)指導(dǎo)4.8 練習(xí)第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)1 教 學(xué) 目 的內(nèi) 容1 教 學(xué) 要 求2 重 點(diǎn) 難 點(diǎn)3 教 學(xué) 內(nèi) 容42教 學(xué) 目 的 語句是程序完成一次完整操作的基本單位,在C#中有很多語句,通過這些語句可以控制程序代碼的執(zhí)行次序,提高程序的靈活性,從而實(shí)現(xiàn)比較復(fù)雜的程序。通過本章的學(xué)習(xí),應(yīng)該重點(diǎn)掌握if語句、ifelse語句、ifelse if語句和switch語句的用法,因?yàn)檫@幾種語句在程序開發(fā)中會(huì)經(jīng)常用到。3教 學(xué) 要 求了解

2、什么是if/ifelse選擇語句;掌握if/ifelse語句的使用方法;了解什么是ifelse if語句;掌握ifelse if語句的使用方法;了解什么是switch語句;掌握switch語句的使用方法。4重 點(diǎn) 難 點(diǎn)重點(diǎn):if語句的使用;Ifelse語句的使用;Ifelse if語句的使用;switche語句的使用。難點(diǎn):Ifelse if語句的使用;switch語句的使用。5教 學(xué) 內(nèi) 容if語句;Ifelse語句;Ifelse if語句;switch語句;6【例4.1】 構(gòu)造一個(gè)C#控制臺(tái)應(yīng)用程序,使之實(shí)現(xiàn)下列分段函數(shù)的功能:4.1一個(gè)簡單的選擇結(jié)構(gòu)程序 分段函數(shù)的實(shí)現(xiàn)71.創(chuàng)建一個(gè)控

3、制臺(tái)應(yīng)用程序PiecewiseFunction:運(yùn)行該程序,從鍵盤上輸入一個(gè)數(shù)值數(shù)據(jù),如圖4-1所示。圖4-1 該例程序運(yùn)行結(jié)果static void Main(string args) double x; int f; x = Convert.ToDouble(Console.ReadLine(); if (x 0) f = 1; else if (x = 0) f = 0; else f = -1; Console.Write(f( + x.ToString() + ) = + f.ToString(); Console.ReadLine();82. 選擇結(jié)構(gòu)解析如果x0,則f=1如果x=

4、0,則f=0如果x0,則f=-1選擇結(jié)構(gòu)9當(dāng)在邏輯上需要根據(jù)條件進(jìn)行判斷時(shí),使用條件語句。條件語句以邏輯判斷為基礎(chǔ),可以根據(jù)條件是否滿足或表達(dá)式的值來控制程序的執(zhí)行。選擇結(jié)構(gòu)主要有:單入口雙分支單入口三分支(如上面的if語句實(shí)現(xiàn)的選擇結(jié)構(gòu))單入口多分支(三個(gè)或三個(gè)以上的分支)對于這些選擇結(jié)構(gòu),除了可以利用if語句來實(shí)現(xiàn)以外,還可以用switch語句來完成。 104.2 if語句選擇結(jié)構(gòu)也稱為分支結(jié)構(gòu),一般分為單分支、雙分支、多分支三種。if語句,用于判斷特定的條件能否滿足,一般用于單分支和雙分支選擇,也可以用于多分支選擇。if語句也稱為條件語句,是程序設(shè)計(jì)中基本的選擇語句,它根據(jù)條件表達(dá)式的值

5、選擇要執(zhí)行的語句塊。if語句一般用于簡單選擇,即選擇項(xiàng)中有一個(gè)或兩個(gè)分支,語句執(zhí)行過程中根據(jù)不同的情況選擇其中一個(gè)分支執(zhí)行。11基本語法格式如下:if (條件表達(dá)式) 語句;其中,“條件表達(dá)式”是一個(gè)關(guān)系表達(dá)式或邏輯表達(dá)式,當(dāng)“條件表達(dá)式”為true時(shí),執(zhí)行后面的“語句”。 if語句的流程圖如下圖所示。圖4-2 if語句流程圖12if語句是最簡單的一種if語句,其語法格式如下:if (布爾表達(dá)式) 語句塊說明:該語句的作用是:如果括號(hào)中布爾表達(dá)式的值為true,則執(zhí)行后面的語句塊(語句塊是指放在大括號(hào)“”和“”之間的語句序列),否則什么都不做。如果語句塊僅由一條語句組成,那么大括號(hào)“”和“”可

6、以省略?!癷f (布爾表達(dá)式)”和“語句塊”可以放在一行上,也可以分在兩行上。“if”后面括號(hào)中的表達(dá)式的返回值必須為布爾類型,即返回true或false,這一點(diǎn)與C/C+不同;此外,關(guān)鍵字“if”后面沒有“then”。13【例4.2】創(chuàng)建控制臺(tái)應(yīng)用程序getmax,從鍵盤上輸入兩個(gè)整數(shù),然后輸出較大的整數(shù)。經(jīng)過該語句后x總是保存了它們當(dāng)中的最大者 圖4-3 運(yùn)行結(jié)果14【例4.3】創(chuàng)建控制臺(tái)應(yīng)用程序Abs,求給定整數(shù)的絕對值。分析:求x絕對值的算法很簡單,若x0,則x即為所求,若x0,則x為x的絕對值。所以可以先假設(shè)x0,即絕對值y=x,然后判斷是否x0,如果是的話,則y=-x,否則y的值不

7、用改。對應(yīng)的算法流程圖見圖。圖4-4 求絕對值算法流程圖15程序代碼class Program static void Main(string args) int x, y; Console.WriteLine(input the value of x:); x = Convert.ToInt16(Console.ReadLine(); y = x; if (x 0) y = -x; Console.WriteLine(|x|=0, y); 圖4-5 該例程序運(yùn)行結(jié)果示意圖16【例4.4】創(chuàng)建控制臺(tái)應(yīng)用程序IfSample,計(jì)算下面公式中的b的值,代碼如下。static void Main(s

8、tring args) Console.Write(請輸入a的值:); int a = int.Parse(Console.ReadLine()/用于進(jìn)行數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換; int b = a; if (a = 100) b = 2 * a + 1; Console.WriteLine(b=0, b);圖4-6 運(yùn)行結(jié)果17語法形式如下:if (條件表達(dá)式) 語句1;else 語句2;其中的“條件表達(dá)式”是一個(gè)關(guān)系表達(dá)式或邏輯表達(dá)式。當(dāng)“條件表達(dá)式”為true時(shí)執(zhí)行“語句1”;當(dāng)“條件表達(dá)式”為false時(shí)執(zhí)行“語句2”。 圖4-7 ifelse語句流程圖4.3 ifelse語句18說明:

9、若布爾表達(dá)式的值為真時(shí),程序執(zhí)行內(nèi)嵌語句序列1,否則執(zhí)行內(nèi)嵌語句序列2。 if.else語句中,內(nèi)嵌語句序列1和內(nèi)嵌語句序列2可以是簡單語句,也可以是復(fù)合語句。如果內(nèi)嵌語句序列中為多個(gè)執(zhí)行語句,則要使用花括號(hào)()組合為一個(gè)語句塊。19【例4.5】創(chuàng)建控制臺(tái)應(yīng)用程序ifelseSample,使用ifelse語句來判斷一個(gè)輸入的整數(shù)是奇數(shù)還是偶數(shù)。static void Main(string args) int num; Console.WriteLine(請輸入一個(gè)整數(shù):); num = int.Parse(Console.ReadLine(); if (num % 2 = 0) Consol

10、e.WriteLine(您所輸入的0是偶數(shù)。, num); else Console.WriteLine(您所輸入的0是奇數(shù)。, num);圖4-8 運(yùn)行結(jié)果20【例4.6】創(chuàng)建窗體應(yīng)用程序Bills,判斷是否給予正常報(bào)銷,將比較結(jié)果輸出。private void button1_Click(object sender, EventArgs e) if (rbtn_true.Checked)/判斷報(bào)銷是否為業(yè)務(wù)花銷 MessageBox.Show(正常報(bào)銷!);/正常報(bào)銷 else MessageBox.Show(不符合規(guī)定報(bào)銷!); /不符合規(guī)定報(bào)銷 圖4-9 運(yùn)行結(jié)果21【例4.7】創(chuàng)建一

11、個(gè)Windows應(yīng)用程序Student,先輸入年齡值,再判斷是否大于18,最后顯示判斷結(jié)果,運(yùn)行效果如圖所示。在Windows窗體中添加2個(gè)Label、1個(gè)TextBox和1個(gè)Button控件。各控件的主要屬性設(shè)置見表4-1。圖4-10 運(yùn)行結(jié)果示意圖22代碼如下:private void btnOk_Click(object sender, EventArgs e) /提取用戶輸入并轉(zhuǎn)換為整數(shù) int age = Convert.ToInt16(txtAge.Text); if (age =0.5) b=(int)a+1; else b=(int)a; Console.WriteLine(0

12、進(jìn)行四舍五入后的值為:1 ,a,b);圖4-11 運(yùn)行結(jié)果24【例4.9】創(chuàng)建控制臺(tái)應(yīng)用程序Rounding,對給定的數(shù)進(jìn)行四舍五入。Console.WriteLine(請輸入一個(gè)實(shí)數(shù)x);double x = Convert.ToDouble(Console.ReadLine();int y;if(x-(int)x=0.5) y=(int)x+1;else y=(int)x;Console.WriteLine(實(shí)數(shù)x四舍五入后的結(jié)果為:);Console.WriteLine(y);Console.Read();圖4-12 四舍五入運(yùn)行示意圖25【例4.10】創(chuàng)建C#窗體應(yīng)用程序Roundin

13、g2,使之能夠?qū)o定的實(shí)數(shù)進(jìn)行四舍五入。界面如下圖:圖4-13 四舍五入運(yùn)行示意圖26雙擊“四舍五入”按鈕,在生成的button1_Click函數(shù)中添加下列代碼:在if語句中利用了int的強(qiáng)制數(shù)據(jù)轉(zhuǎn)換功能:對浮點(diǎn)數(shù)向下取整,如3.1和3.54在進(jìn)行int強(qiáng)制轉(zhuǎn)換后都得到3。于是根據(jù)x - (int)x的差值來決定是“舍”還是“入”。在“舍”和“入”之間的選擇正是利用了ifelse語句來實(shí)現(xiàn)。 27【例4.11】某商店為了吸引顧客,采取以下優(yōu)惠活動(dòng):所購商品在1000元以下的,打9折優(yōu)惠;所購商品多于1000元的,打8折優(yōu)惠。試編程實(shí)現(xiàn)該優(yōu)惠功能。分析:該問題屬于數(shù)學(xué)分段函數(shù)問題,當(dāng)所購商品總額

14、1000時(shí),打折后的商品總額為所購商品總額*0.8。 圖4-14 打折窗體示意圖28創(chuàng)建窗體應(yīng)用程序discount,關(guān)鍵代碼如下:private void button1_Click(object sender, EventArgs e) double k, m; k = double.Parse(textBox1.Text); if (k y則輸出x,否則輸出y,兩個(gè)分支只能走一個(gè),用if-else語句可實(shí)現(xiàn)。 圖4-15 求最大數(shù)算法流程圖開始輸入X,Y輸出X結(jié)束XY?輸出X否是30程序代碼static void Main(string args) int x, y; Console.W

15、riteLine(input the value of x and y:); x = Convert.ToInt16(Console.ReadLine(); y = Convert.ToInt16(Console.ReadLine(); if (x y) Console.WriteLine(The max of 0 and 1 is 2, x, y, x); else Console.WriteLine(The max of 0 and 1 is 2, x, y, y);圖4-16 getmax2.cs運(yùn)行結(jié)果31【例4.13】創(chuàng)建控制臺(tái)應(yīng)用程序getmax3,用條件運(yùn)算符編寫程序,求a、b兩

16、數(shù)中的最大值?!痉治觥靠捎脳l件運(yùn)算符求a、b兩數(shù)中的最大值,代碼如下:max = a b ? a : b;【流程圖】abmaxamaxb真假圖4-17 條件運(yùn)算符算法流程圖32【程序代碼】 class Program static void Main(string args) double a, b,max; Console.WriteLine(請輸入兩個(gè)實(shí)數(shù):); a = Convert.ToDouble(Console.ReadLine(); b = Convert.ToDouble(Console.ReadLine(); max = a b ? a : b; Console.WriteL

17、ine(你輸入的最大數(shù)是0,max); 圖4-18 getmax3.cs運(yùn)行結(jié)果33【例4.14】創(chuàng)建控制臺(tái)應(yīng)用程序getmax4,求3個(gè)數(shù)a、b、c中的最大數(shù),參考代碼如下:static void Main(string args) int a, b, c,max; Console.WriteLine(請輸入三個(gè)數(shù)a,b,c:); a = Convert.ToInt16(Console.ReadLine(); b = Convert.ToInt16(Console.ReadLine(); c = Convert.ToInt16(Console.ReadLine(); max = a; if

18、(max b) max = b; if (max = 60) Console.WriteLine(Your score ups to grade:0,score); else Console.WriteLine(Your score doesnt up to grade:0, score);圖4-27 Score.cs運(yùn)行結(jié)果示意圖48【例4.20】創(chuàng)建控制臺(tái)應(yīng)用程序AbsSqrt,從鍵盤上輸入x的值,x0時(shí),求它的平方根,否則求其絕對值。代碼如下:class Program static void Main(string args) double x, y; Console.WriteLin

19、e(請輸入x的值:); x = Convert.ToDouble(Console.ReadLine(); y = x 0 ? Math.Sqrt(x) : Math.Abs(x); Console.WriteLine(x=0,y=1, x, y); 圖4-28 AbsSqrt.cs運(yùn)行結(jié)果示意圖49 ifelse if語句用于進(jìn)行多重判斷,其語法形式如下: if (條件表達(dá)式1) 語句1; else if (條件表達(dá)式2) 語句2; else if (條件表達(dá)式n) 語句n; else 語句n+1;falsefalsefalsetruetruetrue條件表達(dá)式1語句1條件表達(dá)式2條件表達(dá)式n

20、語句2語句n+1語句nfalse圖4-29 ifelse if語句示意圖4.4 ifelse if語句50多分支if語句的格式為: if(表達(dá)式1) 內(nèi)嵌語句序列1; else if(表達(dá)式2) 內(nèi)嵌語句序列2; else if(表達(dá)式3) else if(表達(dá)式4) else 內(nèi)嵌語句序列n; 圖4-30 選擇結(jié)構(gòu)示意圖51說明: 該語句的作用是:先計(jì)算布爾表達(dá)式1,如果其值為true,則執(zhí)行語句塊1;否則計(jì)算布爾表達(dá)式2,如果布爾表達(dá)式2的值為true,則執(zhí)行語句塊2;否則計(jì)算布爾表達(dá)式n,如果布爾表達(dá)式n的值為true,則執(zhí)行語句塊n;否則(所有布爾表達(dá)式的值均為false)執(zhí)行語句塊n

21、+1。 一旦有語句塊被執(zhí)行,執(zhí)行后程序都跳出整個(gè)if語句,而不再去計(jì)算其它表達(dá)式,更不會(huì)再執(zhí)行其它語句塊。 默認(rèn)情況下,else總是與前面最近的if相匹配。 最后面的“else”和“語句塊n+1”可以省略,要根據(jù)實(shí)際需要取舍。52【例4.21】創(chuàng)建控制臺(tái)應(yīng)用程序ifelseifSample,比較兩個(gè)數(shù)的大小,將比較結(jié)果輸出。static void Main(string args) int op1; int op2; Console.WriteLine(請輸入第一個(gè)待比較整數(shù):); op1 = int.Parse(Console.ReadLine(); Console.WriteLine(請輸

22、入第二個(gè)待比較整數(shù):); op2 = int.Parse(Console.ReadLine(); if (op1 op2) Console.WriteLine(0比1大, op1, op2); else if (op1 = op2) Console.WriteLine(0與1相同大小, op1, op2); else Console.WriteLine(0比1小, op1, op2);圖4-31 運(yùn)行結(jié)果53【例4.22】創(chuàng)建控制臺(tái)應(yīng)用程序ifelseifSample2,從鍵盤輸入一個(gè)字符,判斷是字母、數(shù)字還是特殊字符。參考代碼如下:static void Main(string args)

23、char c; Console.WriteLine(Please input a character:); c = Convert.ToChar(Console.ReadLine(); if (c = a & c = A & c = 0 & c 100 | score = 90) grade = 優(yōu)秀; else if (score = 80) grade = 良好; else if (score = 70) grade = 中等; else if (score = 60) grade = 及格; else grade = 不及格; Console.Write(成績等級(jí)為: 0 !,grade

24、); Console.ReadLine();利用了ifelse ifelse語句來實(shí)現(xiàn)成績從百分制到等級(jí)制的轉(zhuǎn)化 圖4-33 Grade.cs運(yùn)行結(jié)果示意圖56【例4.24】編寫控制臺(tái)應(yīng)用程序Grade2,將用戶輸入的分?jǐn)?shù)轉(zhuǎn)換成等級(jí)。static void Main(string args) float x; Console.Write(分?jǐn)?shù):); x=float.Parse(Console.ReadLine(); if (x=90) Console.WriteLine(等級(jí)為A); else if (x = 80) Console.WriteLine(等級(jí)為B); else if (x =

25、70) Console.WriteLine(等級(jí)為C); else if (x = 60) Console.WriteLine(等級(jí)為D); else Console.WriteLine(等級(jí)為E); 圖4-34 Grade2.cs運(yùn)行結(jié)果示意圖57【例4.25】創(chuàng)建控制臺(tái)應(yīng)用程序ifelseifSample3,在控制臺(tái)中輸入“A”、“B”、“C”中的任意一個(gè)字符作為成績,然后根據(jù)輸入字符在控制臺(tái)輸出相應(yīng)的信息。 using System;public class IfSample public static void Main() string score; score=Console.Re

26、adLine(); if(score=A) Console.WriteLine(Great!); else if(score=B) Console.WriteLine(Good!); else if(score=C) Console.WriteLine(OK!); else Console.WriteLine(Bad!);圖4-35 ifelseifSample3運(yùn)行結(jié)果58【例4.26】創(chuàng)建窗體應(yīng)用程序Score2,將百分制成績轉(zhuǎn)換為五分制成績。轉(zhuǎn)換標(biāo)準(zhǔn)如下:90分以上為“優(yōu)秀”,80分以上為“良”,70分以上為 “中”,60分以上為“及格”,60分以下為“不及格”。圖4-36 成績轉(zhuǎn)換窗體

27、示意圖59關(guān)鍵代碼如下:private void button1_Click(object sender, EventArgs e) double k = double.Parse(textBox1.Text); if (k 100 | k = 90) textBox2.Text = 優(yōu); else if (k = 80) textBox2.Text = 良; else if (k = 70) textBox2.Text = 中; else if (k = 60) textBox2.Text = 及格; else if (k 60) / 此指令可省略 textBox2.Text = 不及格;6

28、0【例4.27】創(chuàng)建控制臺(tái)應(yīng)用程序ifelseifSample4,輸入一串字符,判斷其長度范圍,并輸出相應(yīng)字符串。【參考代碼】static void Main(string args) Console.WriteLine(Type in a string); string input; input = Console.ReadLine();/Console.ReadLine()用來從接受輸入內(nèi)容 if (input = ) Console.WriteLine(You typed in an empty string); 圖4-37 成績轉(zhuǎn)換窗體示意圖61 else if (input.Leng

29、th 5) Console.WriteLine(The string had less than 5 characters); else if (input.Length 10) Console.WriteLine(The string had at least 5 but less than 10characters); else Console.WriteLine(The string had more than 10 characters); Console.WriteLine(The string was + input);62【例4.28】創(chuàng)建窗體應(yīng)用程序Score3,設(shè)計(jì)一個(gè)學(xué)生成

30、績輸入程序。要求兩個(gè)文本框不能為空且成績應(yīng)在0 100之間,單選按鈕必須有一個(gè)被選擇。用戶輸入了合法數(shù)據(jù)并單擊“確定”按鈕后的程序運(yùn)行界面如圖所示。單擊“清除”按鈕可清除上次輸入的所有數(shù)據(jù),并恢復(fù)兩個(gè)單選按鈕都處于未選中狀態(tài)。圖4-38 顯示成績窗體示意圖63關(guān)鍵代碼如下:private void button1_Click(object sender, EventArgs e) if (textBox1.Text = ) MessageBox.Show(姓名不能為空!); else if (textBox2.Text = ) MessageBox.Show(成績不能為空!); else if

31、 (double.Parse(textBox2.Text) 100) MessageBox.Show(成績應(yīng)在之間!); else if (radioButton1.Checked = false & radioButton2.Checked = false) MessageBox.Show(請選擇一門課程!); else if (radioButton1.Checked) label3.Text = textBox1.Text + 的 + radioButton1.Text + 成績是: + textBox2.Text + 分; else if (radioButton2.Checked)

32、label3.Text = textBox1.Text + 的 + radioButton2.Text + 成績是: + textBox2.Text + 分;64private void button2_Click(object sender, EventArgs e) label3.Text = ; radioButton1.Checked = false; radioButton2.Checked = false; textBox1.Clear(); textBox2.Clear(); textBox1.Focus(); 65【例4.29】創(chuàng)建控制臺(tái)應(yīng)用程序tax,對綜合所得稅算法進(jìn)行試運(yùn)

33、算。請根據(jù)下面的綜合所得稅速算公式表,在用戶輸入綜合所得凈額后,即輸出稅率、稅金、累進(jìn)差額及今年應(yīng)納稅額。應(yīng)納稅額=綜合所得凈額稅率-累進(jìn)差額級(jí)別綜合所得凈額稅率-累進(jìn)差額=年應(yīng)稅額103700006%-0=?237000099000013%-25900=?3990000198000021%-105100=?41980000372000030%-283300=?53720000以上40%-655300=?綜合所得稅速算公式表66【流程圖】startInt income 綜合所得凈額taxrate 稅率discount 累進(jìn)差額Income 綜合所得凈額37萬income099萬income37

34、萬198萬income99萬372萬income198萬income372萬請輸入大于零的數(shù)值exitdiscount25900taxrate0.130discount0.06taxratediscount105100taxrate0.25discount283300taxrate0.3discount655300taxrate0.4打印出綜合所得稅資料stop【運(yùn)行結(jié)果】圖4-40 tax.cs運(yùn)行結(jié)果圖4-39 稅率算法流程圖67【程序代碼】int income, discount = 0;double taxrate = 0.0,tax=0.0;Console.WriteLine(請輸入

35、綜合所得凈額:);income=Convert.ToInt32(Console.ReadLine();if (income = 0 & income 370000 & income 990000 & income 1980000 & income 3720000) discount = 655300; taxrate = 0.4;else Console.WriteLine(請輸入大于等于0的數(shù)字!);tax = income * taxrate;Console.WriteLine(n);Console.WriteLine(綜合所得凈額:0, income);Console.WriteLine

36、(稅 率:0%, taxrate * 100);Console.WriteLine(-);Console.WriteLine(稅 金:0元n, tax);Console.WriteLine(累 進(jìn) 差 額:0元n, discount);Console.WriteLine(今年應(yīng)納稅額:0元n, tax - discount);694.5 if 語句的嵌套 在簡單if語句和if-else語句形式中,語句1或語句2可以是任意合法語句。若它們也是if語句,就構(gòu)成嵌套的if語句。C/C#語言規(guī)定else總是與它前面最近的一個(gè)if結(jié)合。 圖4-41 if語句嵌套示意圖70【例4.30】創(chuàng)建控制臺(tái)應(yīng)用程序

37、ififSample,比較兩個(gè)數(shù)的大小。string symbol;Console.WriteLine(請輸入兩個(gè)數(shù):);float x = float.Parse(Console.ReadLine();float y = float.Parse(Console.ReadLine();if (x = 60) if (num = 100) Console.WriteLine(滿分); else Console.WriteLine(成績合格); else Console.WriteLine(成績不合格); 圖4-43 Chengji.cs運(yùn)行結(jié)果72【例4.32】已知分段函數(shù)如下,創(chuàng)建控制臺(tái)應(yīng)用程

38、序Function,輸出不同的y值。y=3 (x5)1 (x0)-1 (x0)-3 (x= 0) if (x 5) y = 3; else y = 1; else if(xBACBC顯示“最大數(shù)為A”顯示“最大數(shù)為C”顯示“最大數(shù)為B”顯示“最大數(shù)為C”真真假假真假圖4-45 求最大數(shù)算法流程圖75【程序代碼】static void Main(string args) int a, b, c; Console.WriteLine(請連續(xù)輸入三個(gè)整數(shù):n); a = Convert.ToInt16(Console.ReadLine(); b = Convert.ToInt16(Console.R

39、eadLine(); c = Convert.ToInt16(Console.ReadLine(); if (a b) if (a c) Console.WriteLine(最大數(shù)為0n, a); else Console.WriteLine(最大數(shù)為0n, c); else if (b c) Console.WriteLine(最大數(shù)為0n, b); else Console.WriteLine(最大數(shù)為0n, c);圖4-46 getmax5.cs運(yùn)行結(jié)果76【例4.34】創(chuàng)建控制臺(tái)應(yīng)用程序nest_if,依據(jù)性別與年齡給予適當(dāng)?shù)慕ㄗh?!卷憫?yīng)信息】1.性別為“男”,根據(jù)輸入的年齡,顯示如下

40、建議。年齡=36:注意飲食,操持身體健康!年齡=30:注意加強(qiáng)鍛煉!其它:你還年輕!2.性別為“女”,根據(jù)輸入的年齡,顯示如下建議。年齡=32:注意飲食,操持身體健康!年齡=25:好心情才會(huì)漂亮!其它:你還年輕!【算法】先輸入男性或女性。若性別為“男”,繼續(xù)下一步,否則跳至。若年齡=36,先顯示“注意飲食,保持身體健康!”,再跳至。反之,若年齡=30,先顯示“注意加強(qiáng)鍛煉!”,再跳至。反之,若年齡=32,先顯示“注意飲食,保持身體健康!”,再跳至。反之,若年齡=25,先顯示“好心情才會(huì)漂亮!”,再跳至。反之,若年齡=36) Console.WriteLine(注意飲食,保持身體健康!n); e

41、lse if(age=30) Console.WriteLine(注意加強(qiáng)鍛煉!n); else Console.WriteLine(你還年輕!n);else if(sex=woman) if(age=32) Console.WriteLine(注意飲食,保持身體健康!n); else if(age=25) Console.WriteLine(注意加強(qiáng)鍛煉!n); else Console.WriteLine(你還年輕!n);else Console.WriteLine(性別輸入錯(cuò)誤!n);圖4-47 nest_if.cs運(yùn)行結(jié)果79【例4.35】設(shè)計(jì)程序Triangle,實(shí)現(xiàn)功能:輸入三個(gè)整

42、數(shù),求是否能組成三角形,并輸出三角形的種類 。分析:用a,b,c三個(gè)整數(shù)表示三角形的三條邊,算法步驟為:S1:通過鍵盤輸入三邊長的值a,b,c;S2:判斷是否構(gòu)成三角形;S3:若構(gòu)成,判斷所成三角形類別,并給提示信息。此題的關(guān)鍵一是S2如何判斷是否構(gòu)成三角形,根據(jù)數(shù)學(xué)知識(shí)如果表達(dá)式:(a+bc) & (a+cb) & (b+ca)為真,則構(gòu)成三角形,在能構(gòu)成三角形的情況下:如何判斷三角形的類別?是此題的關(guān)鍵二。如果a=b & b=c為真 則為等邊三角形;如果 (a=b & b!=c ) | (a=c& a!=b ) | (b=c & a!=b )為真則為等腰三角形;如果a!=b & a!=c

43、& b!=c 則為一般三角形;使用if-else結(jié)構(gòu),else下嵌套多分支的if結(jié)構(gòu)即可實(shí)現(xiàn)80static void Main(string args) int a, b, c; Console.WriteLine(輸入三角形的三條邊a,b,c:); a = Convert.ToInt16(Console.ReadLine(); b = Convert.ToInt16(Console.ReadLine(); c = Convert.ToInt16(Console.ReadLine(); if (a + b c) & (a + c b) & (b + c a) if (a = b & b =

44、c) Console.WriteLine(三角形為等邊三角形n); else if (a = b & b != c) | (a = c & a != b) | (b = c & a != b) Console.WriteLine(三角形為等腰三角形n); else Console.WriteLine(三角形為一般三角形n); else Console.WriteLine(不能構(gòu)成三角形n); 圖4-48 Triangle.cs運(yùn)行結(jié)果81【例4.36】編寫程序求一元二次方程ax2+bx+c=0的根。分析:一元二次方程的求根是常用的數(shù)值計(jì)算問題,方程的根是由b*b-4*a*c是否大于0決定的,如

45、果b*b-4*a*c0方程有兩個(gè)根,否則有一個(gè)根,使用if-else基本結(jié)構(gòu),else下又嵌套了if-else結(jié)構(gòu)。/創(chuàng)建控制臺(tái)應(yīng)用程序Roots3,參考代碼如下:class Program static void Main(string args) double a, b, c, x1, x2; Console.WriteLine(請分別輸入二次項(xiàng)、一次項(xiàng)、常數(shù)項(xiàng)系數(shù)a,b,c:); a = Convert.ToDouble(Console.ReadLine(); /輸入方程的系數(shù) b = Convert.ToDouble(Console.ReadLine(); c = Convert.To

46、Double(Console.ReadLine();82/打印方程 Console.Write(方程0 x2, a);if (b 0) Console.Write(+);Console.Write(0 x, b);if (c 0) Console.Write(+);Console.WriteLine(0=0, c);if (b * b - 4 * a * c 0) Console.WriteLine(有兩個(gè)根:x1=0,x2=1, x1, x2); else Console.WriteLine(有一個(gè)根:x=0, x1);圖4-49 Roots3.cs運(yùn)行結(jié)果83【例4.37】“?:”條件運(yùn)算

47、符也是可以嵌套的。嵌套條件運(yùn)算符運(yùn)算方式是由左至右運(yùn)算。譬如,金額(total)超過5萬元打8折,超過1萬元打9折,低于1萬元不打折,就可以使用嵌套的條件運(yùn)算符得到折扣(discount),其寫法如下:discount = (total = 50000 ? 0.8 : (total = 10000 ? 0.9 : 1);【流程圖】total50000total10000discount8折discount9折discount不打折真假真假圖4-50 打折算法流程圖84【程序代碼】控制臺(tái)程序名:discount2。代碼如下:static void Main(string args) double

48、 total,discount,payment; Console.WriteLine(請輸入你的購物金額:); total = Convert.ToDouble(Console.ReadLine(); discount = (total = 50000 ? 0.8 : (total = 10000 ? 0.9 : 1); payment = total * discount; Console.WriteLine(您本次購物0元,享受1折優(yōu)惠,應(yīng)該付款2元。,total,discount,payment);圖4-51 discount.cs運(yùn)行結(jié)果85【例4.38】創(chuàng)建控制臺(tái)應(yīng)用程序ternar

49、y,使用嵌套條件運(yùn)算符編寫程序,由鍵盤輸入年齡,程序會(huì)自動(dòng)告知應(yīng)購買下列哪類電影票。年齡大于等于60:優(yōu)待票;年齡012:兒童票;其它年齡:成人票。【運(yùn)行結(jié)果】圖4-52 ternary.cs運(yùn)行結(jié)果86【程序代碼】 class Program static void Main(string args) int age; Console.WriteLine(-電影購票-n); Console.WriteLine(請輸入您的年齡:n); age=Convert.ToInt16(Console.ReadLine(); Console.WriteLine(您要購買的是0!_!n, age = 60

50、? 優(yōu)惠票 : (0 = age & age 100 | score 20) label3.Text = 優(yōu)惠率為30%; else label3.Text = 優(yōu)惠率為20%; break;120 case 7: case 8: case 9: if (sum 20) label3.Text = 優(yōu)惠率為15%; else label3.Text = 優(yōu)惠率為5%; break; default: label3.Text = 優(yōu)惠率為10%; break; 121【例4.57】創(chuàng)建一個(gè)Windows應(yīng)用程序CashPay2,使用switch語句來計(jì)算不同服裝的應(yīng)付款,運(yùn)行效果如圖所示。 圖4

51、-72 計(jì)算器窗體示意圖122關(guān)鍵代碼如下:private void btnOk_Click(object sender, EventArgs e) float total=0; float amount =Convert.ToSingle( txtAmount.Text); bool isValid = true; switch (Convert.ToInt16(txtType.Text) case 1: total = amount * 350; break; case 2: total = amount * 780; break; case 3: total = amount * 132

52、0; break; default: isValid = false ; break; if (isValid) lblShow.Text = 應(yīng)付款: + total.ToString(N2) + 元。n謝謝惠顧!; else lblShow.Text = 類別代碼無效!請重新輸入。;1234.7 實(shí)驗(yàn)指導(dǎo)問題描述 程序的本質(zhì)就是要模擬客觀世界,本節(jié)將編程模擬大家非常熟悉的龜兔賽跑。問題分析 采用迭代的方法來開發(fā)。 龜兔賽跑非常簡單,就是讓烏龜和兔子進(jìn)行賽跑比賽,然后根據(jù)它們各自用的時(shí)間來進(jìn)行比較從而給出比賽結(jié)論。顯然,烏龜和兔子的用時(shí)和下面的四個(gè)數(shù)據(jù)緊密相關(guān):烏龜?shù)乃俣取⑼米拥乃俣?、賽道?/p>

53、總長、兔子打盹的時(shí)間。這四個(gè)數(shù)據(jù)在模擬時(shí)必須給出(直接賦值或由鍵盤輸入)。這就是我們開發(fā)這個(gè)程序過程中非常簡單的需求分析了。簡單的思路用漢語表述如下:1.模擬龜兔賽跑1.0版開發(fā)124/* 迭代1:模擬龜兔賽跑1.0版設(shè)計(jì)思路*控制臺(tái)應(yīng)用程序Tortoise1 */int main(int argc, char *argv)/1. 進(jìn)行比賽準(zhǔn)備,輸入烏龜?shù)乃俣取⑼米拥乃俣取?兔子打盹的時(shí)間、賽道總長/2. 計(jì)算烏龜和兔子各自的比賽用時(shí)/3. 根據(jù)烏龜和兔子各自的比賽用時(shí)給出比賽結(jié)論 程序設(shè)計(jì)思路只要完成了子任務(wù)1-3,則整個(gè)程序的開發(fā)完成。首先來完成子任務(wù)1:進(jìn)行比賽準(zhǔn)備,輸入烏龜?shù)乃俣?、兔?/p>

54、的速度、兔子打盹的時(shí)間、賽道總長。顯然我們需要定義四個(gè)變量來接收相應(yīng)的數(shù)據(jù)。 125/* 迭代2:模擬龜兔賽跑1.0版子任務(wù)1實(shí)現(xiàn),控制臺(tái)應(yīng)用程序Tortoise2 */static void Main(string args) /1. 進(jìn)行比賽準(zhǔn)備,輸入烏龜?shù)乃俣?、兔子的速度、兔子打盹的時(shí)間、賽道總長 double tspeed; /烏龜?shù)乃俣?double rspeed; /兔子的速度 double rstime; /兔子打盹的時(shí)間 double length; /賽道總長 Console.Write(請輸入烏龜?shù)乃俣龋?; tspeed = Convert.ToDouble(Consol

55、e.ReadLine(); Console.Write(請輸入兔子的速度:); rspeed = Convert.ToDouble(Console.ReadLine(); Console.Write(請輸入兔子打盹的時(shí)間:); rstime = Convert.ToDouble(Console.ReadLine(); Console.Write(請輸入賽道的總長:); length = Convert.ToDouble(Console.ReadLine(); /以下四條語句為測試語句,目的是測試四個(gè)數(shù)據(jù)是否正確接收 Console.WriteLine(烏龜?shù)乃俣龋?, tspeed); Con

56、sole.WriteLine(兔子的速度:0, rspeed); Console.WriteLine(兔子打盹的時(shí)間:0, rstime); Console.WriteLine(賽道的總長:0, length); /2. 計(jì)算烏龜和兔子各自的比賽用時(shí) /3. 根據(jù)烏龜和兔子各自的比賽用時(shí)給出比賽結(jié)論圖4-73 Tortoise2.cs運(yùn)行結(jié)果126/*迭代3:接下來我們將完成子任務(wù)2,計(jì)算烏龜和兔子各自的用時(shí),見控制臺(tái)應(yīng)用程序Tortoise3*/ /1. 進(jìn)行比賽準(zhǔn)備,輸入烏龜?shù)乃俣取⑼米拥乃俣取⑼米哟蝽锏臅r(shí)間、賽道總長 double tspeed; /烏龜?shù)乃俣?double rspeed

57、; /兔子的速度 double rstime; /兔子打盹的時(shí)間 double length; /賽道總長 double ttime; /烏龜?shù)挠脮r(shí) double rtime; /兔子的用時(shí) Console.Write(請輸入烏龜?shù)乃俣龋?; tspeed = Convert.ToDouble(Console.ReadLine(); Console.Write(請輸入兔子的速度:); rspeed = Convert.ToDouble(Console.ReadLine(); Console.Write(請輸入兔子打盹的時(shí)間:); rstime = Convert.ToDouble(Consol

58、e.ReadLine(); Console.Write(請輸入賽道的總長:); length = Convert.ToDouble(Console.ReadLine();127 /以下四條語句為測試語句,目的是測試四個(gè)數(shù)據(jù)是否正確接收 Console.WriteLine(烏龜?shù)乃俣龋?, tspeed); Console.WriteLine(兔子的速度:0, rspeed); Console.WriteLine(兔子打盹的時(shí)間:0, rstime); Console.WriteLine(賽道的總長:0, length); /2. 計(jì)算烏龜和兔子各自的比賽用時(shí) rtime = length /

59、rspeed + rstime; /兔子用時(shí) ttime = length / tspeed; /烏龜用時(shí) /以下兩條語句為測試語句,目的是測試用時(shí)計(jì)算是否正確 Console.WriteLine(兔子用時(shí):0, rtime); Console.WriteLine(烏龜用時(shí):0, ttime); /3. 根據(jù)烏龜和兔子各自的比賽用時(shí)給出比賽結(jié)論圖4-74 Tortoise3.cs運(yùn)行結(jié)果128迭代4:最后我們將實(shí)現(xiàn)子任務(wù)3,根據(jù)比賽用時(shí)給出結(jié)論,見控制臺(tái)應(yīng)用程序Tortoise4/* 模擬龜兔賽跑1.0版實(shí)現(xiàn)子任務(wù)3 */static void Main(string args) /1. 進(jìn)行

60、比賽準(zhǔn)備,輸入烏龜?shù)乃俣取⑼米拥乃俣?、兔子打盹的時(shí)間、賽道總長 double tspeed; /烏龜?shù)乃俣?double rspeed; /兔子的速度 double rstime; /兔子打盹的時(shí)間 double length; /賽道總長 double ttime; /烏龜?shù)挠脮r(shí) double rtime; /兔子的用時(shí) Console.Write(請輸入烏龜?shù)乃俣龋?; tspeed = Convert.ToDouble(Console.ReadLine(); Console.Write(n請輸入兔子的速度:); rspeed = Convert.ToDouble(Console.Read

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論