c#switch语句判断成绩_C#程序流程控制 知多少?
? ? ? ?最近發現讀書是個慢過程,很難一口吃個胖子,尤其讀這種技術類的書,需要細嚼慢咽的精讀,很耐心的讀。迄今為止我一個像樣的C#程序都沒有做過,是小白中的小白,這倒不影響什么,畢竟在曾經學過C語言的,再去學習C#,基本的理論很相似,入門倒也不難。
? ? ? ?想要快速熟練一種編程語言,一是要有牢固的編程基礎,就是基本知識要扎實!扎實!二是盡快的寫一萬行可以執行的代碼,注意是可執行的,不是簡單的抄寫。
? ? ? ?那么,我們現在就從基本的熟悉流程控制語句開始吧,流程控制語句雖然簡單,好像就那么五六種,但是它卻是C#語言的核心,就像寫文章一樣,它是基本的脈絡,能熟練的活用,倒也沒有那么容易呢。
? ? ? ?C#的流程控制包含順序語句、分支選擇語句、循環語句和跳轉語句,通過這些語句可以控制程序代碼的執行次序,提高程序的靈活性,從而完成比較復雜的功能。??
1、順序語句,最簡單,只有一種類型,就是逐條執行
| 概念 | 在編程的世界中,程序就相當于“菜譜”,而程序的流程便是菜譜中規定的執行順序,即先做什么,后做什么,而這種按順序執行的過程稱為順序語句。 ? ? ?順序結構是程序代碼中最基本的結構,是指程序中所有語句都是按照書寫順序逐一執行的,代碼從main()函數開始運行,從上到下,一行一行地執行,不漏掉代碼。 |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ????????????Console.WriteLine("請輸入第一個參數"); ? ? ? ? ? ??Console.WriteLine("請輸入第二個參數"); ? ? ? } ????} } 以上代碼實現的是按照順序輸入兩串字符,程序一行行的執行,不漏掉任何代碼。 |
| 注意事項 | 在書寫代碼時注意代碼的規范。? |
2、分支選擇語句:if條件語句;if else語句;if....else if....else語句;嵌套if語句;switch語句;唉!類型還挺多,理解深刻,才可以熟練運用。
| 概念 | 一種控制代碼分支的結構,一個if語句的條件可以是布爾變量,也可以是表達式,但如果是表達式,則得到的結果必須是布爾值。 |
| 語法格式 | if(布爾表達式) {? ? ?/*如果布爾表達式為真將執行的語句*/ } 如果布爾表達式為True,則if語句內的代碼塊將被執行。如果布爾表達式為False,則if語句結束后的第一組代碼將被執行。 |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? /*局部變量初始化*/ ? ? ? ? ? ??int ?a=10; ? ? ? ? ? ??/*使用if語句檢查布爾條件*/ ? ? ? ? ? ??if(a>20) ? ? ? ? ? ??{ ?? ? ? ? ? ? ? ? Console.WriteLine("a大于20"); ? ? ? ? ? ? } ? ? ? ? ? ???Console.WriteLine("a的值是{0}",a); ? ? ? } ????} } |
| 注意事項 | 在書寫代碼時注意代碼的規范,注意注釋書寫的格式/* ? */ |
| 概念 | 一種控制代碼分支的結構,一個if語句后可以跟一個else語句。當布爾表達式為假,才會執行else后邊的語句。 |
| 語法格式 | if(布爾表達式) {? ? ?/*如果布爾表達式為真將執行的語句*/ } else { ? ?/*當布爾表達式為假,將會執行的語句*/ } 如果布爾表達式為True,則if語句內的代碼塊將被執行。如果布爾表達式為False,將會執行else語句內的代碼。 條件運算符(?:),可以用來代替if.....else語句。 ?: |
實例 ? | int a=8; string b=(a<10)?"小于10":"大于10"; 計算表達式可得到一個布爾值,運算符的結果根據這個值來確定是result if true,還是result if false。 ? using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? /*局部變量初始化*/ ? ? ? ? ? ??int ?a=50; ? ? ? ? ? ??/*使用if語句檢查布爾條件*/ ? ? ? ? ? ??if(a<10) ? ? ? ? ? ??{ ?? ? ? ? ? ? ? ? Console.WriteLine("a小于10"); ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ??{ ? ? ? ? ? ? ? ? ?Console.WriteLine("a大于10");//這行會被執行 ? ? ? ? ? ? ?} ? ? ? ? ? ??Console.WriteLine("a的值是{0}",a);//這行會執行 ? ? ? } ????} } |
| 注意事項 | 在書寫代碼時注意代碼的規范,注意注釋書寫的格式/* ? */ |
?
| 概念 | 一個if語句后可跟一個可選的else if......else語句,該語句用于執行多種條件。 |
| 語法格式 | if(布爾表達式1) {? ? ?/*如果布爾表達式為真將執行的語句*/ } else if(布爾表達式2) { ? ?/*當布爾表達式2為真時,將會執行的語句*/ } else if(布爾表達式3) { ???/*當布爾表達式3為真時,將會執行的語句*/ } else { ? ?/*當以上條件都不為真時執行*/ } |
實例 ? | using?System namespace?Project4 { ????class Program ????{ ?? ? ??????static?viod Main(string[] args) ? ? ??{ ? ? ? ? ? ?Console.WriteLine("請輸入學生成績:"); ? ? ??? ? ?String s=ReadLine(); ? ? ? ? ? ?int a; ? ? ? ? ? ?a=int.Parse(s);//將字符串轉化成int型數據 ? ? ? ? ? ?/*檢查布爾條件*/ ? ? ? ? ? ?if(a>=90) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ??Console.WriteLine("成績優秀:");?? ? ? ? ? ? ? ?} ? ? ? ? ? else ?if(a>=80) ? ? ? ? ??{ ? ? ??? ? ? ?? ?Console.WriteLine("成績優良:");??? ? ? ? ? ? } ? ? ? ? ? else ?if(a>=70) ? ? ? ? ??{ ? ? ??? ? ? ????Console.WriteLine("成績中等:");??? ? ? ? ? ? } ? ? ? ? ?? else ?if(a>=60) ? ? ? ? ??{ ? ? ??? ? ? ????Console.WriteLine("再接再厲:");??? ? ? ? ? ? } ? ? ? ? else? ? ? ? ? ?{ ? ? ? ? ? ? ? ??Console.WriteLine("繼續努力:"); ?? ? ? ? ? ?} ? ? ?} ????} } |
| 注意事項 | 1、一個if后可跟0個或一個else,它必須在任何一個else ?if 之后。 2、一個if后可跟0個或1個else if ,它必須在else 之前。 3、if語句是至上而下執行,只要一個符合條件,就不會再去判斷后邊的語句。 4、else if 的語句個數不受限制,但是如果else if語句的個數較多,則應該考慮另外一種分支結構switch。 |
?
| 概念 | 用戶可以在一個if或else if語句中使用另一個if或else if語句 |
| 語法格式 | if(布爾表達式) {? ? ?/*如果布爾表達式為真將執行的語句*/ ? ?if(布爾表達式2) ? ?{ ? ? ? ? /*當布爾表達式為真時執行*/ ? ? } } |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? ? ?Console.WriteLine("請輸入機票原價"); ? ? ? ? ? ? ???string?str1 =?Console.ReadLine(); ? ? ? ? ? ? ? ?double money=double.Parse(?str1); ? ? ? ? ? ? ? ?Console.WriteLine("請輸入月份"); ? ? ? ? ? ? ?? String str2?=?Console.ReadLine(); ? ? ? ? ? ? ? ?int month=int.Parse(?str2?); ? ? ? ? ? ? ?Console.WriteLine("選擇倉位:1頭等艙 2經濟艙"); ? ? ? ? ? ? ? ?string ?str3=Consle.ReadLine(); ? ? ? ? ? ? ? ?int?type =?int.Parse(str3); ? ? ? ? ? ? ? ?if(month>=5&&month<=10) ? ? ? ? ? ? ??{ ? ? ? ? ? ? ? ? ? if(type==1) ? ? ? ? ? ? ? ? ??{ ? ? ? ? ? ? ? ? ??Console.WriteLine("您的機票價格為{0}",money*0.9); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? else if(type==2) ? ? ? ? ? ? ? ??{ ? ? ? ? ? ? ? ??Console.WriteLine("您的機票價格為{0}",money*0.75); ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ?} ? ?? ? ? ?else? ? ? ? ? ? ?{ ? ?? ? ? ?? ? ?if(type==1) ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?? ? ???Console.WriteLine("您的機票價格為{0}",money*0.6); ? ? ? ? ? ? ? } ? ? ? ? ? ? ? else?if(type==2) ? ? ? ? ? ? ??{ ? ? ? ? ? ? ? ? ? ??Console.WriteLine("您的機票價格為{0}",money*0.3); ? ? ? ? ? ? ? } ? ? ? ? ? } ? ? ? ?` ? ? ? ?} ????} } |
| 注意事項 | 當需要判定多個維度的條件時,需要用到嵌套if語句。 |
?
| 概念 | 允許測試一個變量等于多個值時的情況,每個值稱為一個case,且被測試的變量會對每個case進行檢查。 |
| 語法格式 | switch(控制表達式) { ? ??case?測試值1: ? ? break; ? ? case?測試值2: ? ? break; ? ? case?測試值3: ? ? break; ? ?....... ? ? case?測試值n: ? ? break; ? ??default: ? ? break; } |
實例1 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ?Console.WriteLine("請輸入第一個數字"); ? ? ? ? ? ?int x=Convert.ToInt32(Console.ReadLine());? ? ? ? ? ? ?Console.WriteLine("請輸入運算類型"); ? ? ? ? ? ?char?z=char.Parse(Console.ReadLine()); ? ? ? ? ? ?Console.WriteLine("請輸入第三個數字"); ? ? ? ? ? ?int?y=int.Parse(Console.ReadLine()); ? ? ? ? ? ?switch(z) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?case '+': ? ? ? ? ? ? ? Console.WriteLine("計算結果為:{0}",x+y); ? ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? ? ? ??break; ? ? ? ? ? ? ? case?'-': ? ? ? ? ? ? ? Console.WriteLine("計算結果為:{0}",x-y); ? ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? ? ? ??break; ? ? ? ? ? ? ? case?'*': ? ? ? ? ? ? ? Console.WriteLine("計算結果為:{0}",x*y); ? ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? ? ? ??break;? ? ? ? ? ? ? ? case?'/': ? ? ? ? ? ? ? Console.WriteLine("計算結果為:{0}",x/y); ? ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? ? ? ??break; ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? Console.WriteLine("運算類型輸入錯誤"); ? ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? ? ? ??break; ? ? ? ? ? } ? ? ? ?} ????} } |
| 實例2 | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ?char c1='A'; ? ? ?? ? ??char?c2='B'; ? ? ? ? ? ?switch(c1) ? ? ? ? ? ?case?'A': ? ? ? ? ? ?Console.WriteLine("這是外部switch的一部分"); ? ? ? ? ? ?switch(c2) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?case?'B': ? ? ? ? ? ? ? ? ?Console.WriteLine("這是內部switch的一部分"); ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ?} ? ? ? ? ? ?break; ? ? ? ?} ? ? ? ? ??Console.WriteLine("c1的字符為{0}",c1); ? ? ?? ? Console.WriteLine("c2的字符為{0}",c2);? ????} } |
| 注意事項 | 用戶可以把一個switch語句嵌套在另一個switch語句內,即使內部和外部的case常量包含相同的值也不沖突。 由于C#存在不準貫穿的原則,所以需要一條跳轉語句來阻止貫穿,而break語句則是最常見的方式,但是也可以用一條return語句或者一條throw語句來替代它。 |
3、循環語句
| 概念 | 只要給定的條件為準,while循環語句會重復執行一條目標語句。 |
| 語法格式 | while(表達式) { ? ??語句或語句塊; } |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? ?int x=3; ? ? ? ? ? ?while(x<13) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ??Console.WriteLine("x的值{0}",x); ? ? ? ? ? ? ? ? x++; ? ? ? ? ? ?} ? ? ? ??} ? ? ??? ????} } |
| 注意事項 | 循環體包含一條以上的語句時,應用{},括起來,以復合語句的形式出現,否則,它只認為while后面的第一條語句是循環體。 |
| 概念 | do while循環和while循環類似,但是do.....while循環會確保至少執行一次循環。 |
| 語法格式 | do { ? ??語句或語句塊; }while(表達式); |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? ?int x=3; ? ? ? ? ? ?{ ? ? ? ? ? ? ? ??Console.WriteLine("x的值{0}",x); ? ? ? ? ? ? ? ? x=x+1; ? ? ? ? ? ?}?while(x<16); ? ? ? ??} ? ? ??? ????} } |
| 注意事項 | 1、do while 語句是先執行循環體語句,后判斷循環終止條件,與while語句不同,二者的區別在于當while后邊的表達式為假時,while語句的循環體一次也不執行,而do while 語句的循環體至少要執行一次。 2、在書寫格式上,循環體部分要用{}括起來,即使只有一條語句也如此,do while 語句最后以分號結束。 3、do while語句是從后面控制表達式退出循環,但它也可以構成無限循環,此時要利用break語句或return 語句直接從循環體內跳出循環。 |
| 概念 | for循環是允許用戶編寫執行特定次數的循環控制結構。 |
| 語法格式 | for(;;) { ? ? 語句或語句塊 } for循環的3個表達式都是可以省略的,但;不能省略。 |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? ?for?(int x=10;x<20;x++) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?Console.WriteLine("x的值{0}",x); ? ? ? ? ? ?} ? ? ? ? ??} ? ? ??? ????} } |
| 注意事項 |
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? foreach循環語句
| 概念 | foreach循環用于列舉出集合中所有的元素,foreach語句中的表達式由關鍵字in隔開的兩個項組成,in右邊的項是集合名,in左邊的項是變量名,用來存放該集合中的每個元素。 |
| 語法格式 | foreach(類型 標識符 in 集合) { ? ??循環代碼; } |
實例 ? | using?System namespace?Project1 {//注意此處的格式,這個括號需要和它對應的關鍵字對齊。 ????class Program ????{ ? //這個括號的位置是上個括號往右縮一個TAB鍵,或者4個空格 ? ??????static?viod Main(string[] args) ? ? ? ?{ ? ? ? ? ? ? ?int ?x=0,y=0; ? ? ? ? ? ?char[]ch=new char[]{'0','1,'0','1','1','0'}; ? ?? ?? ? ?foreach(char a in ch) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?if(a=='0') ? ? ? ? ? ? ? ? ? ?x++; ? ? ? ? ? ? ? else? ? ? ? ? ? ? ? ? ??y++; ? ? ? ? ? ?} ? ? ?? ? ??Console.WriteLine(ch); ?? ? ? ? ?Console.WriteLine("0的個數為{0}\n1的個數為:{1}",x,y); ? ?? ? ? ? ??} ? ? ??? ????} } |
| 注意事項 |
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?嵌套循環語句
| 概念 | 一個循環結構的結構體內又包含另一個完整的循環結構。內嵌的循環中還可以嵌套循環,這樣就構成了多層嵌套循環。 |
| 語法格式 | 嵌套for循環語句 for(;;) {? ? ? 語句或語句塊; ? ??for(;;) ? ??{? ? ? ? ?語句或語句塊; ? ? } }?? |
| 語法格式2 | 嵌套While循環語句 while(表達式1) { ? ??while(表達式2) ? ?{? ? ? ? ?語句或語句塊; ? } ? ?語句或語句塊; } ? |
| 語法格式3 | 嵌套do while循環語句 do { ? ? 語句或語句塊; ? ? do ? ?{ ? ?? ??語句或語句塊; ? } ?? while(表達式1); }while(表達式2); |
實例 ? | 實例比較多,這里就不給大家一一列舉了,只要深刻理解基本的循環結構,嵌套結構理解起來就特別容易了。 |
| 注意事項 |
另外,還有跳轉語句,break,continue,return,goto,后面會重點介紹。
現在是21點44分,今天就先寫到這兒吧,要整理整理入睡了,未完待續!
也友善的提醒各位程序員朋友們,不要熬夜!保重身體!畢竟身體是革命的本錢,保持充足的精力,迎接明日的朝陽。朋友們,晚安!明日的陽光很美,值得期待。
?
總結
以上是生活随笔為你收集整理的c#switch语句判断成绩_C#程序流程控制 知多少?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java settcpnodelay_P
- 下一篇: python关系运算符和逻辑运算符的优先