2019-01-03 7

跳轉(zhuǎn)語(yǔ)句
一、 Break語(yǔ)句的使用
(一) Switch選擇結(jié)構(gòu)
在學(xué)習(xí)switch選擇結(jié)構(gòu)時(shí),我們已經(jīng)使用過(guò)break語(yǔ)句了,下面先回顧一下switch選擇結(jié)構(gòu)中的break語(yǔ)句的作用。
在switch選擇結(jié)構(gòu)中,break語(yǔ)句用于終止switch語(yǔ)句中的某個(gè)分支,使程序跳到switch選擇結(jié)構(gòu)的下一條語(yǔ)句。

  1. 示例
    “日程安排查詢程序”,輸入數(shù)字1~5(代表周一至周五),將看到這一天的行程安排。
    程序運(yùn)行效果

循環(huán)結(jié)構(gòu)
要么痛苦的堅(jiān)持游戲結(jié)束 可能會(huì)升級(jí)
要么結(jié)束游戲繼續(xù)的痛苦 可能有遺憾
知識(shí)點(diǎn)
(1) . while
(2) . break語(yǔ)句
(3) . do-while
(4) . for
(5) . foreach
(6) . 程序調(diào)試
一、 問(wèn)題
? 實(shí)際生活中的循環(huán):打印100份試卷
? 李四這次考試又粗心了,爸爸讓他寫(xiě)1000遍“下次考試一定要細(xì)心”.(復(fù)印紙加三根筆)
如何編程實(shí)現(xiàn)上面的問(wèn)題?
Console.WriteLine("下次考試一定要細(xì)心");
Console.WriteLine("下次考試一定要細(xì)心");
Console.WriteLine("下次考試一定要細(xì)心");
……
二、 While循環(huán)
(一) 語(yǔ)法
while(循環(huán)條件)
{
循環(huán)體;
}
(二) 執(zhí)行過(guò)程
程序運(yùn)行到while處,首先判斷while所帶的循環(huán)條件是否成立,如果成立,也就是為true,則執(zhí)行大括號(hào)中的循環(huán)體,
當(dāng)循環(huán)體執(zhí)行完成一遍后,繼續(xù)回到循環(huán)條件進(jìn)行判斷,如果成立,則執(zhí)行,如果不成立,則跳出while循環(huán)。
每個(gè)循環(huán)都有那么一行代碼,能夠改變循環(huán)條件,使之終有一天不再成立,如果程序中沒(méi)有那么一行代碼能夠改變循環(huán)條件,那么我稱之為這種循環(huán)叫做死循環(huán)。
特點(diǎn):先判斷,再執(zhí)行,有可能一次都不執(zhí)行。
(三) 流程圖

(四) 注意事項(xiàng)
在寫(xiě)while循環(huán)的時(shí)候,一定要分析出循環(huán)體和循環(huán)條件。
(五) 解決實(shí)際問(wèn)題
int i=0;
while(i<1000)
{
Console.WriteLine(“我下次一定要超越他”);
i++;
}
(六) while循環(huán)的練習(xí)
(1) . 打印10次"歡迎您來(lái)到寧波教育學(xué)院學(xué)習(xí)"
(2) . 求1-100之間的所有整數(shù)和,求1-100之間所有偶數(shù)和
int i = 1;
int sum = 0;
while (i <= 100)
{
if (i % 2 == 0)
{
sum += i;//sum=sum+i;
}
i++;
}
Console.WriteLine(sum);
Console.ReadKey();
(3) . 作業(yè)1:輸入班級(jí)人數(shù),然后依次輸入學(xué)員成績(jī),計(jì)算班級(jí)學(xué)員的平均成績(jī)和總成績(jī)
Console.WriteLine("請(qǐng)輸入班級(jí)人數(shù)");
int count = Convert.ToInt32(Console.ReadLine());
int i = 0;//聲明一個(gè)循環(huán)變量,記錄循環(huán)的次數(shù)
int sum = 0;//定義總成績(jī)
while (i < count)
{
Console.WriteLine("請(qǐng)輸入第{0}個(gè)學(xué)員的成績(jī)", i + 1);
try
{
int score = Convert.ToInt32(Console.ReadLine());
//將每一個(gè)學(xué)員的成績(jī)累加到總成績(jī)中
sum += score;
i++;
}
catch
{
Console.WriteLine("輸入有誤,請(qǐng)重新輸入");
}
}
Console.WriteLine("{0}個(gè)人的班總成績(jī)是{1}平均成績(jī)是{2}", count, sum, sum / count);
Console.ReadKey();
(4) . 2006年培養(yǎng)學(xué)員80000人,每年增長(zhǎng)25%,請(qǐng)問(wèn)按此增長(zhǎng)速度,到哪一年培訓(xùn)學(xué)員人數(shù)將達(dá)到20萬(wàn)人?
int year = 2006;
double people = 80000;
while (people <= 200000)
{
//每年增長(zhǎng)25%
people = 1.25;
year++;
}
Console.WriteLine("到{0}年的時(shí)候,人數(shù)將達(dá)到20萬(wàn)",year);
Console.ReadKey();
(5) . 作業(yè)2:編寫(xiě)程序,估計(jì)一個(gè)職員在65歲退休之前能賺到多少錢(qián)。用年齡和超始薪水作為輸入,并假設(shè)職員每年工資增長(zhǎng)5%。
/
*
* 估計(jì)一個(gè)職員在65歲退休之前能賺到多少錢(qián)。
* 用年齡和超始薪水作為輸入,并假設(shè)職員每年工資增長(zhǎng)5%
* 循環(huán)條件:小于等65
* 循環(huán)體:工資之和
* 每年增加5%
* */
Console.WriteLine("請(qǐng)輸入你現(xiàn)在的工資");
string str_salar = Console.ReadLine();
Console.WriteLine("請(qǐng)輸入你的年齡");
string str_age = Console.ReadLine();

        double salar=0;
        int age = 0;
        double sum = salar;


        bool flag = true;

        try
        {
            salar = Convert.ToDouble(str_salar);
            age = Convert.ToInt32(str_age);
            flag = true;
        }
        catch
        {
            Console.WriteLine("你輸入的格式錯(cuò)誤");
            flag = false;
        }

        if (flag)
        { 
            while (age <= 65)
            {
                salar *= 1.05;
                sum += salar;
                age++;
            }
            Console.WriteLine("你到65歲退休之前的工資和是:{0}", sum);
        }
        Console.WriteLine("程序執(zhí)行完畢");
        Console.ReadKey();

三、 break 關(guān)鍵
(一) 作用
1)、跳出switch-case語(yǔ)句。
2)、跳出循環(huán)
break單獨(dú)放到循環(huán)中沒(méi)意義,一般跟if配合著使用,表示當(dāng)滿足某個(gè)條件的時(shí)候,跳出循環(huán)。
(二) 演示:
int i = 0;
while (i < 10)
{
Console.WriteLine("歡迎來(lái)到寧波教育學(xué)院學(xué)習(xí)");
i++;
break;//跳出循環(huán)
}
Console.ReadKey();
(三) 練習(xí):提示用戶輸入用戶名和密碼 admin 888888 最多讓用戶輸入3次 如果3次都不會(huì) 則退出登錄程序
/**
* 提示用戶輸入用戶名和密碼 admin 888888
* 最多讓用戶輸入3次 如果3次都不會(huì) 則退出登錄程序
* 循環(huán)條件:用戶名和密碼都不正確
* 循環(huán)體:用戶輸入用戶名和密碼
* */

        Console.WriteLine("請(qǐng)輸入用戶名");
        string userName = Console.ReadLine();
        Console.WriteLine("請(qǐng)輸入密碼");
        string password = Console.ReadLine();


        int num = 1;    //用戶記錄用戶輸入的次數(shù)
        
        while (("admin"!=userName) & ("88888"!=password))
        {
            Console.WriteLine("請(qǐng)?jiān)佥斎胗脩裘?);
            userName = Console.ReadLine();
            Console.WriteLine("請(qǐng)?jiān)佥斎朊艽a");
            password = Console.ReadLine();
            if (num == 2)
            {
                break;
            }
            num++;
        }
        if(num == 2){
            Console.WriteLine("你已經(jīng)輸入錯(cuò)誤三次,請(qǐng)等100年后再來(lái)");
        }
        else
        {
            Console.WriteLine("登錄成功");
        }           

        Console.ReadKey();

四、 do-while循環(huán)
(一) 實(shí)際場(chǎng)景
明天小蘭就要登臺(tái)演出了,老師說(shuō)再把明天的演出的歌曲唱一遍,如果滿意,小蘭就可以回家了.否則就需要再練習(xí)一遍,直到老師滿意為止.(y/n)
(二) while or do-while ?

  1. while循環(huán)的特點(diǎn)
    特點(diǎn):先判斷,再執(zhí)行,有可能一次都不執(zhí)行。
  2. do-while循環(huán)的特點(diǎn)
    特點(diǎn):先執(zhí)行,再判斷,最少執(zhí)行一遍循環(huán)體。
    (三) do-while循環(huán)的語(yǔ)法
    do
    {
    循環(huán)體;
    }while(循環(huán)條件);
    (四) 執(zhí)行過(guò)程
    首先執(zhí)行do中的循環(huán)體,執(zhí)行完成后,去判斷循環(huán)條件是否成立,
    如果成立,則繼續(xù)回到do中執(zhí)行循環(huán)體,
    如果不成立,則跳出do-while循環(huán)。
    (五) 流程圖

(六) 解決問(wèn)題

  1. while解決
    //循環(huán)體:小蘭唱一遍,問(wèn)老師,老師回答
    //循環(huán)條件:老師不滿意

        Console.WriteLine("老師,我唱的你滿意么?");
        string answer = Console.ReadLine();
        while (answer == "no")
        {
            Console.WriteLine("老師,我再唱一遍,你滿意么?");
            answer = Console.ReadLine();
        }
    
        Console.WriteLine("OK,放學(xué)回家");
        Console.ReadKey();
    
  2. do-while解決
    string answer = "";
    do
    {
    Console.WriteLine("老師,我唱的這一遍你滿意么?");
    answer = Console.ReadLine();
    } while (answer == "no");
    Console.WriteLine("Ok,放學(xué)回家");
    Console.ReadKey();
    (七) 練習(xí)

  3. 要求用戶輸入用戶名和密碼,只要不是admin、888888就一直提示用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入
    string name = "";
    string pwd = "";
    //循環(huán)體:輸入用戶名和密碼 判斷
    //循環(huán)條件:輸入錯(cuò)誤
    do
    {
    Console.WriteLine("請(qǐng)輸入用戶名");
    name = Console.ReadLine();
    Console.WriteLine("請(qǐng)輸入密碼");
    pwd = Console.ReadLine();
    if (name != "admin" || pwd != "888888")
    {
    Console.WriteLine("用戶名或密碼錯(cuò)誤");
    }
    } while (name != "admin" || name != "888888");

        Console.ReadKey();
    
  4. 不斷要求用戶輸入一個(gè)數(shù)字,然后打印這個(gè)數(shù)字的二倍,當(dāng)用戶輸入q的時(shí)候程序退出
    循環(huán)體:提示用戶輸入數(shù)字 轉(zhuǎn)換 打印這個(gè)數(shù)字的2倍
    循環(huán)條件:輸入的不能是q
    string strNumber = "";//存儲(chǔ)的用戶的輸入
    do
    {
    Console.WriteLine("請(qǐng)輸入數(shù)字");
    strNumber = Console.ReadLine();//數(shù)字 q 亂七八糟
    if (strNumber != "q")//數(shù)字 亂七八糟
    {
    try
    {
    int number = Convert.ToInt32(strNumber);
    Console.WriteLine("這個(gè)數(shù)字的2倍是{0}", number * 2);
    }
    catch//輸入的是亂七八糟
    {
    Console.WriteLine("輸入有誤,請(qǐng)重新輸入");
    }
    }
    else//==q
    {
    Console.WriteLine("你輸入的是q,程序退出!??!");
    }
    } while (strNumber != "q");
    Console.ReadKey();

  5. 不斷要求用戶輸入一個(gè)數(shù)字(假定用戶輸入的都是正整數(shù)),當(dāng)用戶輸入end的時(shí)候顯示剛才輸入的數(shù)字中的最大值
    //循環(huán)體:提示用戶輸入一個(gè)數(shù)字 接收 轉(zhuǎn)換 比較的過(guò)程
    //循環(huán)條件:輸入的不能是end

        string strNumber = "";
        int max = 0;//用來(lái)存儲(chǔ)最大值
        while (strNumber != "end")
        {
            Console.WriteLine("請(qǐng)輸入一個(gè)數(shù)字,輸入end,我們將顯示你輸入的數(shù)字中的最大值");
            strNumber = Console.ReadLine();//數(shù)字 end  亂七八糟
            if (strNumber != "end")
            {
                try
                {
                    int number = Convert.ToInt32(strNumber);
                    if (number > max)
                    {
                        max = number;
                    }
                }
                catch
                {
                    Console.WriteLine("輸入有誤,請(qǐng)重新輸入");
                }
            }
            else//輸入的是end
            {
                Console.WriteLine("您剛才輸入的數(shù)字中最大值是{0}",max);
            }
        }
        Console.ReadKey();
    

五、 程序調(diào)試(演示S)
設(shè)置斷點(diǎn)(在行號(hào)前點(diǎn)擊空白處)
單步運(yùn)行(F11逐語(yǔ)句調(diào)試)
觀察變量(鼠標(biāo)放在變量名上觀察)
F10逐過(guò)程調(diào)試
六、 for循環(huán)
(一) 問(wèn)題情景
連續(xù)輸出100次"我下次一定細(xì)心".
(二) while循環(huán)解決
int i = 0;
while (i < 10)
{
Console.WriteLine("我下次一定細(xì)心");
i++;
}
我們?cè)谑褂脀hile循環(huán)或者do-while循環(huán)的時(shí)候,
經(jīng)常會(huì)忘記給循環(huán)變量自增,為了解決這個(gè)問(wèn)題,我們有了更為簡(jiǎn)單的一種循環(huán),
叫做for循環(huán),for循環(huán)專門(mén)處理已知循環(huán)次數(shù)的循環(huán)。
(三) for循環(huán)的語(yǔ)法
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
循環(huán)體;
}
表達(dá)式1:一般為聲明一個(gè)循環(huán)變量,用來(lái)記錄循環(huán)的次數(shù)
表達(dá)式2:一般為循環(huán)條件
表達(dá)式3:一般為能夠改變循環(huán)條件的代碼
(四) 執(zhí)行過(guò)程
在第一次循環(huán)的時(shí)候,首先執(zhí)行表達(dá)式1,再執(zhí)行表達(dá)式2,然后跳過(guò)表達(dá)式3.直接執(zhí)行循環(huán)體,
執(zhí)行完循環(huán)體之后,執(zhí)行表達(dá)式3,執(zhí)行表達(dá)式2,循環(huán)體,表達(dá)式3,表達(dá)式2,循環(huán)體。。。。。
直到表達(dá)式2不成立之后,跳出for循環(huán)。
(五) 流程圖

(六) for循環(huán)解決問(wèn)題
for (int i = 0; i < 10; i++)
{
Console.WriteLine("我下次一定細(xì)心");
}
(七) 練習(xí)

  1. for循環(huán)的正序和倒序輸出1-10
    //1 - 10
    for (int i = 1; i <= 10; i++)
    {
    Console.WriteLine(i);
    }
    Console.ReadKey(); ////10-1
    for (int i = 10; i >= 1; i--)
    {
    Console.WriteLine(i);
    }
    Console.ReadKey();

  2. 找出100-999間的水仙花數(shù)?
    //這個(gè)百位數(shù)字 百位的立方+十位的立方+個(gè)位的立方==當(dāng)前這個(gè)百位數(shù)字
    //153 1+125+27 153 i
    //百位:153/100
    //十位:153%100/10
    //個(gè)位:153%10

        for (int i = 100; i <= 999; i++)
        {
            int bai = i / 100;
            int shi = i % 100 / 10;
            int ge = i % 10;
            if (bai * bai * bai + shi * shi * shi + ge * ge * ge == i)
            {
                Console.WriteLine(i);
            }
        }
        Console.ReadKey();
    
  3. 讓用戶輸入一個(gè)數(shù),以下面的方式顯示

        Console.WriteLine("請(qǐng)輸入一個(gè)數(shù)字");
        int num = Convert.ToInt32(Console.ReadLine());
        for (int i = 0; i <=num ; i++)
        {
            Console.WriteLine("{0}+{1}={2}", i, num - i, num);
        }
    

(八) for循環(huán)的嵌套

  1. 案例演示
    // int count = 0;
    for (int i = 0; i < 10; i++)
    {
    for (int j = 0; j < 10; j++)
    {
    //count++;
    Console.WriteLine("外面循環(huán)了{(lán)0}次,里面循環(huán)了{(lán)1}次",i,j);
    }
    }
    Console.ReadKey();

  2. 練習(xí):輸出九九乘法表(循環(huán)的嵌套)
    for (int i = 1; i <= 9; i++)
    {
    for (int j = 1; j <=i ; j++)
    {
    Console.Write("{0}*{1}={2}\t", i, j, i * j);
    }
    Console.WriteLine();//換行
    }
    Console.ReadKey();
    七、 break和contiune
    (一) break

  3. 使用:
    用于循環(huán)中,退出當(dāng)前循環(huán).

  4. 流程圖

  5. 舉例: 打印1-100之間所有的質(zhì)數(shù)
    質(zhì)數(shù):只能被1和自身整除的數(shù)字 叫做質(zhì)數(shù)
    判斷一個(gè)整數(shù)是否是質(zhì)數(shù):讓這個(gè)整數(shù)從2開(kāi)始除,除到自己的前一位
    for (int i = 2; i <= 100; i++)
    {
    bool b = true;
    for (int j = 2; j < i; j++)
    {
    if (i % j == 0)//不是質(zhì)數(shù)
    {
    b = false;
    break;
    }
    }
    if (b)
    {
    Console.WriteLine(i);
    }
    }
    Console.ReadKey();
    (二) Contiune

  6. 作用
    在循環(huán)中,如果遇到continue,則立即停止本次循環(huán),回到循環(huán)條件進(jìn)行判斷,如果循環(huán)條件成立,則繼續(xù)執(zhí)行循環(huán)。如果不成立,則跳出循環(huán)。

  7. 流程圖

  8. 現(xiàn)實(shí)中的例子
    比如:運(yùn)動(dòng)員跑步喝水的例子
    比如:我編寫(xiě)代碼的時(shí)候,上個(gè)廁所,回來(lái)繼續(xù)寫(xiě)代碼

  9. 舉例:計(jì)算1到100(含)之間的除了能被7整除之外所有整數(shù)的和。
    int i = 1;
    int sum = 0;
    while (i <= 100)
    {
    if (i % 7 == 0)
    {
    i++;
    continue;
    }
    sum += i;
    i++;
    }
    Console.WriteLine(sum);
    Console.ReadKey();
    (三) 二者的區(qū)別與異同

  10. 區(qū)別:
    在循環(huán)中,
    如果遇到break,則跳出當(dāng)前循環(huán)。
    如果遇到continue,則立即停止本次循環(huán),回到循環(huán)條件進(jìn)行判斷,如果循環(huán)條件成立,則繼續(xù)執(zhí)行循環(huán)。如果不成立,則跳出循環(huán)。
    int i = 0;
    while (i < 10)
    {
    // break;
    continue;
    Console.WriteLine("Hello World");
    }
    Console.ReadKey();

  11. 相同點(diǎn)
    單獨(dú)把continue、break放到循環(huán)中沒(méi)有意義,一般跟著if語(yǔ)句配合著使用。

上面的代碼,不管是break還是continue,都不會(huì)打印出信息。
八、 循環(huán)的練習(xí)
練習(xí)1:循環(huán)錄入5個(gè)人的年齡并計(jì)算平均年齡,如果錄入的數(shù)據(jù)出現(xiàn)負(fù)數(shù)或大于100的數(shù),立即停止輸入并報(bào)錯(cuò).
九、 總結(jié)
(一) 順序結(jié)構(gòu):語(yǔ)句順序執(zhí)行
(二) 分支結(jié)構(gòu):語(yǔ)句在滿足條件下執(zhí)行
if, if-else, if-else if, switch-case 表1?表2 :表3(三元)
(三) 循環(huán)結(jié)構(gòu):語(yǔ)句在滿足條件下循環(huán)執(zhí)行多次
while, do-while, for 、 foreach(數(shù)組)
(四) 跳轉(zhuǎn)語(yǔ)句
break(跳出當(dāng)前循環(huán)), continue(跳出本次循環(huán)),

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 知識(shí)點(diǎn): 注:int類型默認(rèn)32位有大小范圍 且第一位為符號(hào)位 0 為正 1 為負(fù) 8.4作業(yè) A:1、風(fēng)力預(yù)警系...
    cGunsNRoses閱讀 1,177評(píng)論 0 0
  • 知識(shí)點(diǎn)(1) . while(2) . break語(yǔ)句(3) . do-while(4) . fo...
    不愛(ài)孤單一久也習(xí)慣閱讀 1,558評(píng)論 0 0
  • 循環(huán)結(jié)構(gòu)要么痛苦的堅(jiān)持游戲結(jié)束 可能會(huì)升級(jí)要么結(jié)束游戲繼續(xù)的痛苦 可能有遺憾知識(shí)點(diǎn)(1) . whil...
    拾起_518閱讀 648評(píng)論 0 0
  • 循環(huán)結(jié)構(gòu) 要么痛苦的堅(jiān)持游戲結(jié)束 可能會(huì)升級(jí) 要么結(jié)束游戲繼續(xù)的痛苦 可能有遺憾 知識(shí)點(diǎn) (1) . whil...
    拾起_518閱讀 421評(píng)論 0 0
  • 循環(huán)結(jié)構(gòu) 要么痛苦的堅(jiān)持游戲結(jié)束 可能會(huì)升級(jí) 要么結(jié)束游戲繼續(xù)的痛苦 可能有遺憾 知識(shí)點(diǎn) (1) . whil...
    c592a8530dfe閱讀 476評(píng)論 0 0

友情鏈接更多精彩內(nèi)容