版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章程序控制語(yǔ)句
3.1使用分支3.2使用循環(huán)3.3學(xué)生成績(jī)管理系統(tǒng)的菜單3.4習(xí)題3.1.1if語(yǔ)句
1.單獨(dú)if語(yǔ)句
if(布爾表達(dá)式)
{
語(yǔ)句塊;
}
功能:如果表達(dá)式的值為真(即條件成立),則執(zhí)行if語(yǔ)句所控制的語(yǔ)句塊;如果表達(dá)式的值為假(即條件不成立),則直接執(zhí)行語(yǔ)句塊后面的語(yǔ)句。這種語(yǔ)句結(jié)構(gòu)的控制流程如圖3-1所示。3.1使用分支圖3-1if語(yǔ)句控制流程【例3-1】輸入兩個(gè)整數(shù),輸出其中較大的整數(shù)。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intnum1,num2,max;
Console.Write("請(qǐng)輸入數(shù)值1:");
num1=int.Parse(Console.ReadLine());
Console.Write("請(qǐng)輸入數(shù)值2:");
num2=int.Parse(Console.ReadLine());
max=num1;
if(num2>num1)
max=num2;
Console.WriteLine("較大值為:{0}",max);
}
}
程序運(yùn)行結(jié)果如圖3-2所示。圖3-2例3-1運(yùn)行結(jié)果
2.?if…else語(yǔ)句
if(布爾表達(dá)式)
{
語(yǔ)句塊1;
}
else
{
語(yǔ)句塊2;
}
功能:如果表達(dá)式成立,則執(zhí)行語(yǔ)句塊1,然后執(zhí)行語(yǔ)句塊3;如果表達(dá)式不成立,則跳過(guò)語(yǔ)句塊1,執(zhí)行語(yǔ)句塊2,然后執(zhí)行語(yǔ)句塊3。這種語(yǔ)句結(jié)構(gòu)的控制流程如圖3-3所示。圖3-3if...else語(yǔ)句流程【例3-2】輸入兩個(gè)整數(shù),輸出其中較大的整數(shù)。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intnum1,num2;
Console.Write("請(qǐng)輸入數(shù)值1:");
num1=int.Parse(Console.ReadLine());
Console.Write("請(qǐng)輸入數(shù)值2:");
num2=int.Parse(Console.ReadLine());
if(num1==num2)
Console.WriteLine("兩數(shù)相等");
else
{
if(num1>num2)
Console.WriteLine("較大值為:{0}",num1);
else
Console.WriteLine("較大值為:{0}",num2);
}
}
}
運(yùn)行結(jié)果如圖3-4所示。圖3-4例3-2運(yùn)行結(jié)果
【例3-3】輸入一個(gè)數(shù)字,如果為偶數(shù),則輸出“偶數(shù)”,否則輸出“奇數(shù)”。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
Console.Write("請(qǐng)輸入一個(gè)整數(shù):");
intx=int.Parse(Console.ReadLine());
if(x%2==0)
{
Console.WriteLine("{0}是偶數(shù)",x);
}
else
{
Console.WriteLine("{0}是奇數(shù)",x);
}
Console.ReadLine();
}
}
運(yùn)行結(jié)果如圖3-5所示。圖3-5例3-3運(yùn)行結(jié)果
【例3-4】輸入一個(gè)年份,判斷是否為閏年。如果年份可以除盡4并且不能除盡100,或者可除盡400,則其為閏年。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intnYear;
Console.Write("請(qǐng)輸入年份:");
nYear=int.Parse(Console.ReadLine());
if((nYear%4==0&&nYear%100!=0)||nYear%400==0)
Console.WriteLine("是閏年");
else
Console.WriteLine("不是閏年");
}
}
運(yùn)行結(jié)果如圖3-6所示。圖3-6例3-4運(yùn)行結(jié)果
3.?if…elseif…else語(yǔ)句
有些問(wèn)題的解決方式并不是非此即彼的兩個(gè)選擇,而是由許多復(fù)雜的前提條件決定的。這種情況下,可以使用如下格式的if…elseif…else語(yǔ)句:
if(布爾表達(dá)式1)
{語(yǔ)句塊1;}
elseif(布爾表達(dá)式2)
{語(yǔ)句塊2;}
elseif(布爾表達(dá)式n-1)
{語(yǔ)句塊n-1;}
else
{語(yǔ)句塊n;}功能:當(dāng)表達(dá)式1為真時(shí),執(zhí)行語(yǔ)句塊1,然后跳過(guò)整個(gè)結(jié)構(gòu)執(zhí)行下一個(gè)語(yǔ)句;當(dāng)表達(dá)式1為假時(shí),跳過(guò)語(yǔ)句塊1去判斷表達(dá)式2。若表達(dá)式2為真時(shí),執(zhí)行語(yǔ)句塊2,然后跳過(guò)整個(gè)結(jié)構(gòu)去執(zhí)行下一個(gè)語(yǔ)句;若表達(dá)式2為假時(shí),則跳過(guò)語(yǔ)句塊2去判斷表達(dá)式3。依次類推,當(dāng)表達(dá)式l、表達(dá)式2、……、表達(dá)式n-1都為假時(shí),則執(zhí)行else中的語(yǔ)句塊n。
在這種階梯形式的if結(jié)構(gòu)中,最后的else語(yǔ)句經(jīng)常作為缺省條件。就是說(shuō)如果所有其他條件測(cè)試都失敗,那么最后的else語(yǔ)句會(huì)被執(zhí)行,流程如圖3-7所示。
在實(shí)際應(yīng)用中,elseif語(yǔ)句可以多次使用,但是else語(yǔ)句只有一個(gè)。圖3-7if...elseif...else語(yǔ)句流程
【例3-5】輸入學(xué)生的成績(jī),根據(jù)分?jǐn)?shù)輸出優(yōu)(90~100)、良(80~90)、中(70~80)、及格(60~70)和不及格(0~60)。
usingSystem;
usingSystem.IO;
classProgram
{
publicstaticvoidMain(String[]args)
{
intscore;
stringgrade;
Console.Write("請(qǐng)輸入學(xué)生的成績(jī):");
score=Int32.Parse(Console.ReadLine());if(score>=90)
grade="優(yōu)";
elseif(score>=80)
grade="良";
elseif(score>=70)
grade="中";
elseif(score>=60)
grade="及格";
else
grade="不及格";
Console.WriteLine("該學(xué)生的考試成績(jī)等級(jí)為:{0}",grade);
}
}
運(yùn)行結(jié)果如圖3-8所示。圖3-8例3-5運(yùn)行結(jié)果3.1.2switch語(yǔ)句
當(dāng)分支情況很多時(shí),雖然if…elseif…else語(yǔ)句可以實(shí)現(xiàn),但多層的嵌套會(huì)使程序變得冗長(zhǎng)且不直觀。針對(duì)這種情況,C#提供了switch語(yǔ)句,用于處理多分支的選擇問(wèn)題。
switch語(yǔ)句的一般形式:
switch(控制表達(dá)式)
{
case常量表達(dá)式1:
語(yǔ)句塊1;
break;
case常量表達(dá)式2:
語(yǔ)句塊2;
break;
case常量表達(dá)式n:
語(yǔ)句塊n;
break;
default:
語(yǔ)句塊n+1
break;
}
switch語(yǔ)句基于控制表達(dá)式的值選擇要執(zhí)行的語(yǔ)句分支,語(yǔ)句的執(zhí)行過(guò)程如下:
(1)控制表達(dá)式求值。
(2)如果case標(biāo)簽后的常量表達(dá)式的值等于控制表達(dá)式的值,則執(zhí)行其后的內(nèi)嵌語(yǔ)句。
(3)如果常量表達(dá)式的值不等于控制語(yǔ)句的值,則執(zhí)行default標(biāo)簽后的內(nèi)嵌語(yǔ)句。在使用時(shí)要注意以下幾點(diǎn):
●表達(dá)式的值必須是整型數(shù)值、字符或字符串,并且要與各個(gè)語(yǔ)句中case之后的常量值類型相同。
●一個(gè)switch語(yǔ)句中可以有任意多個(gè)case語(yǔ)句,case語(yǔ)句中的子語(yǔ)句體可以是一條或者多條任意語(yǔ)句。
●一般情況下,每個(gè)case語(yǔ)句的最后是break語(yǔ)句,用來(lái)從整個(gè)switch語(yǔ)句中跳出,繼續(xù)執(zhí)行switch語(yǔ)句下面的語(yǔ)句。如果沒有使用break語(yǔ)句,則繼續(xù)執(zhí)行下面case語(yǔ)句中的子語(yǔ)句體,直到遇到break語(yǔ)句,或者整個(gè)switch語(yǔ)句結(jié)束?!纠?-6】使用switch語(yǔ)句,實(shí)現(xiàn)對(duì)成績(jī)等級(jí)的評(píng)定。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
Console.Write("請(qǐng)輸入成績(jī):");
//從鍵盤接收一行字符
stringstr=Console.ReadLine();
//轉(zhuǎn)換為整型
inti=Int32.Parse(str.Trim());
if(i>100||i<0){
Console.WriteLine("成績(jī)不在0~100范圍內(nèi)");
}
else
{
switch(i/10)
{
case10:
Console.Write("滿分");
gotocase9;
case9:
Console.WriteLine("優(yōu)秀");
break;
case8:
Console.WriteLine("良好");
break;
case7:
Console.WriteLine("中等");
break;
case6:
Console.WriteLine("及格");
break;
default:
Console.WriteLine("不及格");
break;
}
}
Console.ReadLine();
}
}
運(yùn)行結(jié)果如圖3-9所示。圖3-9例3-6運(yùn)行結(jié)果
【例3-7】編寫一個(gè)程序以識(shí)別用戶輸入的字符是元音(a、e、i、o、u)還是輔音。
usingSystem;
classVowelConsotant
{
staticvoidMain(string[]args)
{
charch;
Console.Write("請(qǐng)輸入一個(gè)字母:");
ch=Convert.ToChar(Console.ReadLine());
switch(ch)
{
case'a':
case'e':case'i':
case'o':
case'u':
Console.WriteLine("{0}是元音",ch);
break;
default:
Console.WriteLine("{0}是輔音",ch);
break;
}
Console.ReadLine();
}
}
運(yùn)行結(jié)果如圖3-10所示。圖3-10例3-7運(yùn)行結(jié)果
【例3-8】編寫一個(gè)簡(jiǎn)單計(jì)算器的程序,計(jì)數(shù)器應(yīng)該能夠執(zhí)行加、減、乘、除等算術(shù)操作。
usingSystem;
classCalculation
{
staticvoidMain(string[]args)
{
Console.WriteLine("主菜單");
Console.WriteLine("1.加法");
Console.WriteLine("2.減法");
Console.WriteLine("3.乘法");
Console.WriteLine("4.除法");
Console.Write("請(qǐng)選擇運(yùn)算1-4:");
charoption=Convert.ToChar(Console.ReadLine());Console.Write("輸入第一個(gè)數(shù):");
intnum1=Convert.ToInt32(Console.ReadLine());
Console.Write("輸入第二個(gè)數(shù):");
intnum2=Convert.ToInt32(Console.ReadLine());
intresult;
switch(option)
{
case'1':
result=num1+num2;
Console.WriteLine("結(jié)果為:"+result);
break;
case'2':
result=num1-num2;
Console.WriteLine("結(jié)果為:"+result);
break;
case'3':
result=num1*num2;
Console.WriteLine("結(jié)果為:"+result);
break;
case'4':
result=num1/num2;
Console.WriteLine("結(jié)果為:"+result);
break;
default:
Console.WriteLine("無(wú)效選項(xiàng)");
break;
}
Console.ReadLine();
}
}
運(yùn)行結(jié)果如圖3-11所示。圖3-11例3-8運(yùn)行結(jié)果3.2.1for循環(huán)
for循環(huán)常常用于已知循環(huán)次數(shù)的情況。使用該循環(huán)時(shí),測(cè)試是否滿足某個(gè)條件,如果滿足,則進(jìn)入下一次循環(huán);否則退出該循環(huán)。3.2使用循環(huán)
for語(yǔ)句的一般格式為:
for(初始化表達(dá)式;循環(huán)條件;迭代表達(dá)式)
{
循環(huán)體
}
for語(yǔ)句的執(zhí)行流程如圖3-12所示,其執(zhí)行過(guò)程如下:
(1)在for循環(huán)開始執(zhí)行時(shí),執(zhí)行初始化表達(dá)式,此部分只執(zhí)行一次。
(2)計(jì)算條件表達(dá)式的值,以確定是否繼續(xù)執(zhí)行for循環(huán);若該條件為假,控制將跳出for循環(huán),并執(zhí)行循環(huán)以后的語(yǔ)句。
(3)若條件表達(dá)式為真,則執(zhí)行循環(huán)語(yǔ)句。圖3-12for語(yǔ)句控制流程【例3-9】計(jì)算1~100的所有自然數(shù)之和。
usingSystem;
classtest
{
publicstaticvoidMain()
{
intsum=0;
for(inti=1;i<=100;i++)
{
sum+=i;
}
Console.WriteLine("從1到100的和是{0}",sum);
}
}
運(yùn)行結(jié)果如圖3-13所示。圖3-13例3-9運(yùn)行結(jié)果【例3-10】打印九九乘法表。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
Console.WriteLine("九九乘法表");
for(inti=1;i<=9;i++)
{
//計(jì)算并格式化輸出九九表的內(nèi)容
for(intj=1;j<=i;j++)
{
Console.Write("{0}x{1}={2}\t",i,j,i*j);
}
Console.WriteLine();//換行
}
}
}
運(yùn)行結(jié)果如圖3-14所示。圖3-14例3-10運(yùn)行結(jié)果3.2.2while循環(huán)
while循環(huán)結(jié)構(gòu)根據(jù)條件來(lái)執(zhí)行一定次數(shù)的語(yǔ)句塊,while語(yǔ)句在執(zhí)行循環(huán)中的語(yǔ)句時(shí)必須檢查相應(yīng)條件。當(dāng)執(zhí)行到while循環(huán)中最后一條語(yǔ)句時(shí),控制權(quán)交回給循環(huán)的開始部分。如果條件仍然為真,則再次執(zhí)行循環(huán)中的語(yǔ)句。一直執(zhí)行循環(huán)中的語(yǔ)句,直到條件為假時(shí)停止。其語(yǔ)句格式為:
while(布爾表達(dá)式)
{
循環(huán)體
}條件表達(dá)式為關(guān)系表達(dá)式或邏輯表達(dá)式,其運(yùn)算結(jié)果為true(真)或false(假)。在條件表達(dá)式中必須包含控制循環(huán)的變量,即循環(huán)變量。循環(huán)語(yǔ)句序列中應(yīng)包含改變循環(huán)變量的語(yǔ)句,以避免陷入死循環(huán)。
while語(yǔ)句的執(zhí)行流程如圖3-15所示,其執(zhí)行過(guò)程如下:
(1)計(jì)算while語(yǔ)句的條件表達(dá)式的值。
(2)如表達(dá)式的值為真,則執(zhí)行循環(huán)體語(yǔ)句塊,并改變控制循環(huán)變量的值。
(3)返回while語(yǔ)句的開始處,重復(fù)執(zhí)行步驟(1)和(2),直到表達(dá)式的值為假,跳出循環(huán)并執(zhí)行下一條語(yǔ)句。圖3-15while語(yǔ)句控制流程【例3-11】計(jì)算1~100的所有自然數(shù)之和。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intsum=0;
inti=1;
while(i<=100)
{
sum+=i;
i++;
}
Console.WriteLine("從1到100的和是{0}",sum);
}
}
運(yùn)行結(jié)果如圖3-16所示。圖3-16例3-11運(yùn)行結(jié)果3.2.3
do-while循環(huán)
do-while語(yǔ)句的特點(diǎn)是先執(zhí)行循環(huán),然后判斷循環(huán)條件是否成立。其語(yǔ)句格式為:
?do
{
循環(huán)體
}while(布爾表達(dá)式);
while語(yǔ)句的執(zhí)行流程如圖3-17所示,其執(zhí)行過(guò)程如下:
(1)當(dāng)程序執(zhí)行到do語(yǔ)句后,就開始執(zhí)行循環(huán)體語(yǔ)句塊,并改變循環(huán)變量的值。
(2)執(zhí)行完循環(huán)體語(yǔ)句后,再對(duì)while語(yǔ)句括號(hào)內(nèi)的條件表達(dá)式進(jìn)行判斷。若表達(dá)式條件成立(為真),轉(zhuǎn)向步驟(1)繼續(xù)執(zhí)行循環(huán)體語(yǔ)句;否則退出循環(huán),執(zhí)行下一條語(yǔ)句。圖3-17dowhile語(yǔ)句控制流程【例3-12】使用do-while語(yǔ)句,計(jì)算1?+?2?+?3+?…?+?100。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intsum=0;//初始值設(shè)置為0
inti=1;//加數(shù)初始值為1
do
{
sum+=i;
i++;
}while(i<=100);
Console.WriteLine("從1到100的和是{0}",sum);
}
}
運(yùn)行結(jié)果如圖3-18所示。圖3-18例3-12運(yùn)行結(jié)果3.2.4break語(yǔ)句與continue語(yǔ)句
1.?break語(yǔ)句
break語(yǔ)句通常用在switch語(yǔ)句和各種循環(huán)語(yǔ)句中。break語(yǔ)句可以跳出包含它的switch、while、do、for或foreach語(yǔ)句,其作用是使程序終止循環(huán),跳到循環(huán)過(guò)程下面的程序語(yǔ)句。
break語(yǔ)句的使用格式為:
break;
注意,如果是多重循環(huán),則break的作用不是使程序跳出所有循環(huán),而是使程序跳出break本身所在的循環(huán)。
【例3-13】循環(huán)接收和輸出鍵盤輸入的每一行的值,當(dāng)接收的內(nèi)容為空字符串時(shí)退出。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
while(true)
{
Console.Write("請(qǐng)輸入一個(gè)字符串(直接回車退出):");
strings=Console.ReadLine();
if(s=="")break;
Console.WriteLine("你輸入的是:{0}.",s);
}
}
}
運(yùn)行結(jié)果如圖3-19所示。圖3-19例3-13運(yùn)行結(jié)果
2.?continue語(yǔ)句
就像break語(yǔ)句一樣,continue語(yǔ)句可以影響循環(huán)的執(zhí)行。不過(guò)continue語(yǔ)句并不是中斷整個(gè)循環(huán),而是中斷目前這次循環(huán),即跳過(guò)循環(huán)體中continue語(yǔ)句下面尚未執(zhí)行的語(yǔ)句,再判斷表達(dá)式的條件,以決定是否執(zhí)行該循環(huán)體的下一次循環(huán)。
其語(yǔ)法格式為:
continue;【例3-14】輸出1到10之間的不能被3整除的數(shù)。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
for(intn=1;n<=10;n++)
{
if(n%3==0)
continue;
Console.WriteLine(n);
}
}
}
運(yùn)行結(jié)果如圖3-20所示。圖3-20例3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)療行業(yè)失信懲戒合同
- 2026年節(jié)能改造合同
- 2025年上饒市廣信區(qū)人民法院公開招聘勞務(wù)派遣工作人員14人備考題庫(kù)及答案詳解一套
- 2026年海峽兩岸國(guó)際象棋合作委員會(huì)合作協(xié)議
- 2026年教育會(huì)展活動(dòng)展位銷售合同
- 快遞公司春節(jié)放假通知
- 2025年涼山彝族自治州普格縣公安局公開招聘警務(wù)輔助人員的備考題庫(kù)帶答案詳解
- 2025年上杭輔警招聘真題及答案
- 黑龍江公安警官職業(yè)學(xué)院《英語(yǔ)詞匯學(xué)》2025 學(xué)年第二學(xué)期期末試卷
- 黑龍江公安警官職業(yè)學(xué)院《建筑構(gòu)造》2025 學(xué)年第二學(xué)期期末試卷
- 2025天津大學(xué)招聘15人備考考試試題及答案解析
- 2025年山西大地環(huán)境投資控股有限公司社會(huì)招聘116人備考題庫(kù)有答案詳解
- 2026元旦主題晚會(huì)倒計(jì)時(shí)快閃
- 物理試卷答案浙江省9+1高中聯(lián)盟2025學(xué)年第一學(xué)期高三年級(jí)期中考試(11.19-11.21)
- 2025年交管12123學(xué)法減分考試題附含答案
- 俄語(yǔ)口語(yǔ)課件
- 2025廣西自然資源職業(yè)技術(shù)學(xué)院下半年招聘工作人員150人(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題帶答案解析
- django基于Hadoop的黑龍江旅游景點(diǎn)系統(tǒng)-論文11936字
- 2025至2030中國(guó)3D生物印刷行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025-2026學(xué)年廣東省深圳市福田中學(xué)高一(上)期中物理試卷(含答案)
- 口腔解剖生理學(xué)牙的一般知識(shí)-醫(yī)學(xué)課件
評(píng)論
0/150
提交評(píng)論