黑馬程序員-net基礎3

----------------------   Windows Phone 7手機開發.Net培訓    期待與您交流! ----------------------



順序結構:

語句順序執行

默認情況下都是順序執行

分支結構

1、if結構

if結構的基本語法:

if(條件:關係表達式或邏輯表達式)

語句1:

 

執行過程:首先判斷條件的結果,如果條件爲true則執行語句如果爲false,則執行後面的語句

注意:條件必須是bool類型

if語句只能帶一句話,即和if語句有關的語句只有語句1

可以用一對大括號來組成語句塊

 

要求,在寫程序時,哪怕if語句只帶一句話,也要把它寫在大括號中

2、if  else

if (條件)

{語句1

}

else

{語句2

}

3、if -else if

      int age=15;

      char sex='f';

if (age < 10)

         if(sex == 'f')

            Console.WriteLine("小女人");

         else

            Console.WriteLine("你長大了");

什麼都沒有!else永遠與之最近的是一對

所以要養成寫{}的好習慣

4、練習:提示用戶輸入用戶名,然後在提示輸入密碼,如果用戶名是“admin”並且密碼是“888888”則提示輸入成功,否則,如果用戶名不是admin提示用戶名不存在,如果用戶名是admin密碼不正確則提示密碼錯誤。

Console.WriteLine("請輸入用戶名");

            string userName =Console.ReadLine();

            Console.WriteLine("請輸入密碼");

            string password =Console.ReadLine();

            if (userName =="admin" && password == "888888")

            {

               Console.WriteLine("登陸成功");

            }

            else if (userName !="admin")

            {

               Console.WriteLine("您輸入的用戶名不存在");

            }

            else

            {

                Console.WriteLine("密碼錯誤!");

       Console.ReadLine();

5、練習:提示用戶輸入年齡,如果大於等於18歲,則告知用戶可以觀看,如果大於10歲小於18歲則提示用戶是否繼續觀看(yes no),如果輸入yes則可以看,如果輸入的是no則提示你放棄了觀看,如果用戶小於10歲則不允許觀看,

Console.WriteLine("請輸入你的年齡,此片涉及暴力");

            int age = Convert.ToInt32(Console.ReadLine());

            if (age >= 18)

            {

               Console.WriteLine("你可以看");

            }

            else if (age > 10)

            {

               Console.WriteLine("你確定要看嗎?");

                string input = Console.ReadLine();

                if (input ="yes")

                {

                   Console.WriteLine("請觀看");

                }

                else

                {

                    Console.WriteLine ("你放棄了觀看");

                }

            }

           //年齡小於10歲

            else

                {

                   Console.WriteLine ("你年齡太小不能觀看");

                }

Console.WriteLine();

6、switch case語句               

Switch(表達式)

{

case值1:語句塊1;

break;

case 值2:語句塊2;

break;

default:語句塊3;

break;

}

首先計算表達式的值,與case後面的值相匹配,如果有則執行匹配後面的語句,如果沒有匹配值則執行default,如果沒有default則跳出switch case什麼都不執行

7、if else if 和switch case的比較

相同點:都可以實現多分支結構

不同點:switch 只能用於等值比較

if else if:可以處理範圍

 

8、賦值表達式完成賦值之後 等號左邊的變量的值就是整個表達式的值

 

9、例:

李四的年終工作評定,如果定爲A級,則工資漲500元,如果定爲B級,則工資漲200元,如果定爲C級,工資不變,如果定爲D級工資降200元,如果定爲E級工資將500元。

設李四的原工資爲5000元,請用戶輸入李四的評級,然後輸出李四來年的工資水平。

Console.WriteLine("請輸入用戶的評級(A-E?)");

            string input =Console.ReadLine();

            decimal salary = 5000;

            bool flag = false;

            switch (input)

            {

                case "A":

                    salary += 500;

                    break;

                case "B":

                    salary += 200;

                    break;

                case "C":

                    break;

                case "D":

                    salary -= 200;

                    break;

                case "E":

                    salary -= 500;

                    break;

                default:

                   Console.WriteLine("您輸入的字母有問題,請重新輸入");

                    flag = true;

                    break;

            }

            Console.WriteLine("李四的工資是{0}",salary);

            Console.ReadLine();

 

10、練習switch case

請輸入年份輸入月份,輸出該月有多少天

            Console.WriteLine("請輸入年份");

            int year =Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("請輸入月份");

            int month =Convert.ToInt32(Console.ReadLine());

            switch (month / 10)

            {

                case 1:

                case 3:

                case 5:

                case 7:

                case 8:

                case 10:

                case 12:

                   Console.WriteLine("31天");

                    break;

                case 2:

                    if ((year % 400== 0) || (year % 4 == 0) && (year % 100 != 0))

                    {

                       Console.WriteLine("29天");

                    }

                    else

                    {

                       Console.WriteLine("28天");

                    }

                    break;

                default :

                   Console.WriteLine("30天");

                    break;

            }

            Console.ReadLine ();

引申:直接輸入日期判斷是星期幾?

直接輸入日期判斷是這一年的第幾天?

     直接輸入某年的第幾天,判斷是幾月幾號?


循環結構

11、

while 循環的語法:

while (循環條件)

{

循環執行的程序;//循環體

}                

while(sum<250000)

{

要執行的循環體;

}

 

執行過程:

1、判斷循環條件,如果條件爲true則執行2,如果爲false則執行3

2、執行循環體,循環體執行完之後轉向1

3、跳出循環,循環結束

 

特點:先判斷,後執行

 

注意:再循環體中,一定要有一句話,改變循環條件中的某個變量的值,使循環條件終有爲false的可能,否則爲死循環

            inti = 0;

            while (i < 10)

            {

               console.writeline("下次要小心");

                i++;

            }

            Console.Readline();

12、例

輸入班級人數,然後依次輸入每個學生的成績,計算全班成績的平均成績和總成績。

 

Console.WriteLine("請輸入你們班有多少人?");

            int count =Convert.ToInt32(Console.ReadLine());

            int score = 0;

            int i = 0;

            int sum = 0;

            while (i < count)

            {

               Console.WriteLine("請輸入第{0}個同學的學習成績", i + 1);

                score =Convert.ToInt32(Console.ReadLine());

                sum = sum + score;

                i++;

            }

            Console.WriteLine("本班有{0}個學生,總成績爲{1},平均成績爲{2}", count, sum, sum /count);

            Console.ReadLine();

引申:注意:記得sum=0;賦初值

 

13、

do while語法

do

{循環體;

} while();

注意:while後面有“;”                                    

執行過程:

1、先執行循環體,循環體執行完之後轉向2

2、判斷循環條件,如果條件爲true則執行1,如果爲false則執行3

3、跳出循環,循環結束

特點:先執行,後判斷

因此:while中條件不符合則一次也不執行

  do while中條件不符合卻至少已經執行過一次

14、引出:在輸入後判斷是否輸入的是(y/n)如果輸入不是提示字母錯誤。

例:     string answer = "y";

            do

            {

                Console.WriteLine("小蘭表演一遍舞蹈");

               Console.WriteLine("老師,你滿意了嗎?");

                answer =Console.ReadLine();

                while (answer !="y" && answer != "n")

                {

                   Console.WriteLine("只能輸入y和n,請重新輸入!");

                    answer = Console.ReadLine();

                }

            }

            while (answer =="n" );

            Console.WriteLine("跳的不錯了,你可以回家了");

            Console.ReadLine();

循環判斷do-while有時候也可以和try-catch進行轉換

15、檢測異常

try

{

將有可能出錯的語句放到這裏;

Console.WriteLine(“輸入成功”);//提示沒有錯誤

}

catch

{

}

例:

Console.WriteLine("請輸入張三的分數");

            try

            {

                int score =Convert.ToInt32(Console.ReadLine());

            }

            catch

            {

               Console.WriteLine("你輸入的不是數字");

            }

            Console .WriteLine("over");

            Console.ReadLine();

16、例:

要求:用戶輸入的用戶名和密碼是admin和888888,如果輸入的不正確將一直提示輸入用戶名和密碼錯誤請從新輸入。

string userName;

            string password;

            bool flag = false;

            do

            {

flag = false;//注意如果不重置將會在下面賦true之後一直爲true,將會是死循環

               Console.WriteLine("請輸入用戶名");

                userName =Console.ReadLine();

               Console.WriteLine("請輸入密碼");

                password =Console.ReadLine();

                if (userName !="admin" || password != "888888") ;

                {

                   Console.WriteLine("你輸入的用戶名和密碼錯誤,請從新輸入");

                    flag = true;//整個程序中只有此一處賦值語句

                }

            } while (flag);//如果在循環時不重置將會一直爲true

            Console.WriteLine("登陸成功");

 

17、a、從鍵盤輸入數字,輸出這個數字的二倍,如果輸入的不是數字則結束程序

              int input;

            bool flag = true;

            do

            {

                try

                {

                   Console.WriteLine("請輸入一個數字");

                    input =Convert.ToInt32(Console.ReadLine());

                   Console.WriteLine("{0}的二倍是{1}", input, input * 2);

                    flag = true;

                }

                catch

                {

                   Console.WriteLine("你輸入的格式有誤,結束輸入");//引申:如果想提示重新輸入則另想循環!

                    flag = false;

                }

            } while (flag);

            Console.ReadLine();

b、從鍵盤輸入一個數字顯示這個數的二倍,如果遇到輸入q則結束輸入。

 

string input;

            int number;

            Console.WriteLine("請輸入一個數(q結束)");

            input =Console.ReadLine();

            while (input !="q")

            {

                number =Convert.ToInt32(input);

               Console.WriteLine("{0}的二倍是{1}", number, number  * 2);

               Console.WriteLine("請輸入一個數(q結束)");

                input =Console.ReadLine();

            }

            Console.ReadKey();

c、從鍵盤輸入數字,直到輸入end是結束程序並顯示所有輸入的數字中的最大值

 

            int max = 0;

            string input ="";

            int number = 0;

            do

            {

                try

                {

                   Console.WriteLine("請輸入一個數");

                    input =Console.ReadLine();

                    number =Convert.ToInt32(input);

                    if (number >max)

                    {

                        max = number;

                    }

                }

                catch

                {

                    if (input !="end") ;

                    {

                       Console.WriteLine("你輸入的是非法數據,請重新輸入!");

                    }

                }

            } while (input !="end");

            Console.ReadLine();

 

18、程序的調試

最快的時間將錯誤找到!

出錯分爲兩大類:a語法錯誤 編譯器的錯誤

b邏輯錯誤 運行時的錯誤

設置斷點

單步運行

觀察變量

快速監視 變量或者表達式的值

根據語法是否符合

19、for循環

for 循環用於已知循環次數

while可以判斷未知

語法:

for (表達式1;表達式2;表達式3)

{循環體;

}

表達式1:定義和初始化循環變量,表達式2:循環條件,表達式3:用於改變循環變量的值

執行過程:

1、計算表達式1,轉向第2步

2、計算表達式2(循環條件)。如果表達式2爲true,轉向第3步,如果表達式2的值爲false

轉向第5步

3、執行循環體,轉向第4步

4、執行表達式3,轉向第2步

5、循環結束

while do-while for  三種循環可以相互轉換  

20、循環的嵌套

練習    冒泡排序法   

for (int i = 0; i < num.Length - 1;i++)

            {

                for (int j = 0; j < num.Length - 1 -i; j++)

                {

                    if (num[j] >num[j + 1])

                    {

                       int temp = num[j];

                       num[j] = num[j + 1];

                       num[j+ 1] = temp;

                    }

                }

            }

21、乘法口訣

static void Main(string[]args)

        {

            int i, j;

            for (i = 1; i <= 9;i++)

            {

                for (j = 1; j <=i; j++)

                {

                   Console.Write("{0}*{1}={2}\t",j, i, i * j);//i在前還是j在前輸入的格式不一樣,j在前時與平時常見的是一致的。

                }

                Console.WriteLine();

            }

            Console.ReadLine();

       

23、輸出菱形

找關係:每一行i與空格數和*個數之間的關係

        static void Main(string[] args)

        {

            int i, j, k;

            for (i = 0; i <= 3;i++)

            {

                for (j = 0; j <=2 - i; j++)

                   Console.Write(" ");

                for (k = 0; k <=2 * i; k++)

                    Console.Write("*");

                Console.WriteLine();

            }

            for (i = 0; i <= 2;i++)

            {

                for (j = 0; j <=i; j++)

                   Console.Write(" ");

                for (k = 0; k <=4 - 2 * i; k++)

                    Console.Write("*");

                Console.WriteLine();

            }

            Console.ReadLine();

跳轉語句

21、break和continue區別

break :退出當前循環體

可以用於switch-case判斷中,用於跳出switch

用在循環中,用於立即跳出(終止)循環

注意:用於循環中時跳出的是break所在的循環

continue:結束本次循環,進入下一次循環

立即結束本次循環判斷循環條件,如果成立則進入下一次循環否則退出循環

while continue 循環條件的判斷

goto最好不用,可以用標籤break標籤break嵌套來代替

 

---------------------   Windows Phone 7手機開發.Net培訓    期待與您交流! ----------------------

詳情請查看:http://edu.csdn.net/heima

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章