循環(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)試
一箩绍、 問題
l 實(shí)際生活中的循環(huán):打印100份試卷
l 李四這次考試又粗心了,爸爸讓他寫1000遍“下次考試一定要細(xì)心”.(復(fù)印紙加三根筆)
如何編程實(shí)現(xiàn)上面的問題?
Console.WriteLine("下次考試一定要細(xì)心");
Console.WriteLine("下次考試一定要細(xì)心");
Console.WriteLine("下次考試一定要細(xì)心");
……
二潜的、 While循環(huán)
(一) 語(yǔ)法
while(循環(huán)條件)
{
循環(huán)體;
}
(二) 執(zhí)行過程
程序運(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)條件妄痪,使之終有一天不再成立,如果程序中沒有那么一行代碼能夠改變循環(huán)條件楞件,那么我稱之為這種循環(huán)叫做死循環(huán)衫生。
特點(diǎn):****先判斷裳瘪,再執(zhí)行,有可能一次都不執(zhí)行罪针。
(三) 流程圖
[圖片上傳失敗...(image-276557-1542156274025)]
(四) 注意事項(xiàng)
在寫while循環(huán)的時(shí)候彭羹,一定要分析出循環(huán)體和循環(huán)條件。
(五) 解決實(shí)際問題
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)問按此增長(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:編寫程序吮成,估計(jì)一個(gè)職員在65歲退休之前能賺到多少錢橱乱。用年齡和超始薪水作為輸入,并假設(shè)職員每年工資增長(zhǎng)5%粱甫。
/**
估計(jì)一個(gè)職員在65歲退休之前能賺到多少錢泳叠。
用年齡和超始薪水作為輸入,并假設(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)中沒意義种蝶,一般跟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)演出了,老師說再把明天的演出的歌曲唱一遍,如果滿意,小蘭就可以回家了.否則就需要再練習(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í)行過程
首先執(zhí)行do中的循環(huán)體泼疑,執(zhí)行完成后,去判斷循環(huán)條件是否成立,
如果成立退渗,則繼續(xù)回到do中執(zhí)行循環(huán)體移稳,
如果不成立,則跳出do-while循環(huán)会油。
(五) 流程圖
[圖片上傳失敗...(image-173e8d-1542156274021)]
(六) 解決問題
1. while解決
//循環(huá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í)
1. 要求用戶輸入用戶名和密碼服傍,只要不是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();
2. 不斷要求用戶輸入一個(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,程序退出2右巍L椎佟!");
}
} while (strNumber != "q");
Console.ReadKey();
3. 不斷要求用戶輸入一個(gè)數(shù)字(假定用戶輸入的都是正整數(shù))阱扬,當(dāng)用戶輸入end的時(shí)候顯示剛才輸入的數(shù)字中的最大值
//循環(huán)體:提示用戶輸入一個(gè)數(shù)字 接收 轉(zhuǎn)換 比較的過程
//循環(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();
tusr53I??D