跳轉(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ǔ)句。
- 示例
“日程安排查詢程序”只嚣,輸入數(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份試卷
? 李四這次考試又粗心了,爸爸讓他寫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)
在寫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:編寫程序,估計(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)中沒(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 ?
- while循環(huán)的特點(diǎn)
特點(diǎn):先判斷豌习,再執(zhí)行,有可能一次都不執(zhí)行拔疚。 - 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)題
-
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();
do-while解決
string answer = "";
do
{
Console.WriteLine("老師妄痪,我唱的這一遍你滿意么哈雏?");
answer = Console.ReadLine();
} while (answer == "no");
Console.WriteLine("Ok,放學(xué)回家");
Console.ReadKey();
(七) 練習(xí)-
要求用戶輸入用戶名和密碼拌夏,只要不是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();
不斷要求用戶輸入一個(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,程序退出U竟省=耘隆!");
}
} while (strNumber != "q");
Console.ReadKey();-
不斷要求用戶輸入一個(gè)數(shù)字(假定用戶輸入的都是正整數(shù))西篓,當(dāng)用戶輸入end的時(shí)候顯示剛才輸入的數(shù)字中的最大值
//循環(huán)體:提示用戶輸入一個(gè)數(shù)字 接收 轉(zhuǎn)換 比較的過(guò)程
//循環(huán)條件:輸入的不能是endstring 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)專門處理已知循環(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í)
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();-
找出100-999間的水仙花數(shù)?
//這個(gè)百位數(shù)字 百位的立方+十位的立方+個(gè)位的立方==當(dāng)前這個(gè)百位數(shù)字
//153 1+125+27 153 i
//百位:153/100
//十位:153%100/10
//個(gè)位:153%10for (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();
-
讓用戶輸入一個(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)的嵌套
案例演示
// 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();練習(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使用:
用于循環(huán)中,退出當(dāng)前循環(huán).流程圖
舉例: 打印1-100之間所有的質(zhì)數(shù)
質(zhì)數(shù):只能被1和自身整除的數(shù)字 叫做質(zhì)數(shù)
判斷一個(gè)整數(shù)是否是質(zhì)數(shù):讓這個(gè)整數(shù)從2開始除,除到自己的前一位
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作用
在循環(huán)中会油,如果遇到continue个粱,則立即停止本次循環(huán),回到循環(huán)條件進(jìn)行判斷翻翩,如果循環(huán)條件成立都许,則繼續(xù)執(zhí)行循環(huán)。如果不成立嫂冻,則跳出循環(huán)胶征。流程圖
現(xiàn)實(shí)中的例子
比如:運(yùn)動(dòng)員跑步喝水的例子
比如:我編寫代碼的時(shí)候,上個(gè)廁所,回來(lái)繼續(xù)寫代碼舉例:計(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ū)別與異同區(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();相同點(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)),