---------------------- 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