C#復習以及break、continue、while、do-while的運用
一、復習:
循環。反復執行某段語句一種語法形式。
1.基本語法:
for( 初始條件 ; 循環條件 ; 狀態的改變 )
{
循環體
}
循環的四要素。
循環的執行過程。初始條件--循環條件--循環體--狀態改變--循環條件--。。。。。
案例:1.打印10您好。2.顯示1-100的數(所有的數,奇數,偶數)。3.顯示ASCII碼。
2.循環的嵌套。
for( ...;... ; ...)
{
for(...;...;...)
{
}
}
案例:打印各種圖形——外層的循環,打印行。內層循環,打印列。
3.應用(迭代,窮舉)
迭代:按照某種規律,通循環逐步推導出最終結果來。 // 結果不正確往往是方法有問題,方法不正確往往是思想有問題。
最重要的——把迭代的規律找出來,並且用表達式表示出來。
案例:
1.100以內所有數的和。
2.階乘
3.年齡推導。
4.折紙。棋盤上放糧食。
5.猴子吃桃子。
6.落球
7.兔子生兔子。
窮舉:把所有可能的情況都走上一遍,根據要求找出滿足條件的結來。
最重要的——能夠看出是否可以用窮舉來解決;如何把窮舉的語法寫出來。
案例:
1.100以內與7有關的數。
2.硬幣組合問題。1,2,5 組合出1毛5來。
3.買東西。牙刷,香皂,洗發水。
4.百雞百錢,百馬百石。
5.偵察兵
6.等式填運算符
二、新課:
1.break與continue.
這兩個關鍵字一般放在循環的花括號里面使用。
break——結束整個循環。
continue——結束本次循環,進入下次循環。
break的案例:
int i = 1;
for(;;)
{
if(i>100)
{
break;
}
Console.Write(i+"\t");
i++;
}
continue的案例:
for (int i = 1; i <= 100; i++)
{
if(i%2 == 0)
{
continue;
}
Console.Write(i + "\t");
}
2.while循環
//初始條件
while(循環條件)
{
//循環體
//狀態的改為
}
案例:
int i = 1;
int count=0; //記錄與7有關的數字的個數
while(i<=100)
{
if(i%7==0 || i%10==7||i/10==7)
{
Console.Write(i+"\t");
count++;
//1
}
i++;
//2
}
//3
Console.Write("共有"+count+"個與7相關的數");
3.do...while(循環條件)簡單了解。
即使初始條件不滿足循環條件,循環還會執行一次。
至少執行一次。
數組:解決同一類大量數據在內存存儲和運算的功能。
分類:一維數組、二維數組、多維數組。
特點:連續,同一類數據。
一維數組:類似豆角。
定義:指定類型,指定長度,指定名稱。
int[] a = new int[5]; //5是長度。從1開始算。默認5個元素初始值都是0.
int[] a = new int[5] { 90, 95, 89, 76, 99 };
int[] a = new int[5] { 90, 95, 89 }; //語法有錯,后面初始化的值必須是5個。
int[] a = new int[] { 90, 95, 89, 76, 99}; //計算機會根據后面的賦值,動態計算數組的長度。
賦值:
數組名[下標數值] = 值;
int[] a = new int[5];
a[0] = 10;
a[1] = 20;
a[2] = 30;
a[3] = 40;
a[4] = 50;
取值:
數組名[下標數值]; //下標數值從0開始。
Console.WriteLine(a[3]+a[0]);數組的好處1.對於大量數據來說,保存的時候,定義一個數組即可解決。2.用循環來控制數組的下標,可以對數組進行批量操作。
例如:
int[] a = new int[5];
for (int i = 0; i < 5;i++ )
{
a[i] = (i + 1) * 10;
}
//數組的批量取值。
for (int j = 0; j < 5;j++ )
{
Console.WriteLine(a[j]); //0下標。
}
案例一:做一個教練為6個球員打分的程序。
//定義一個保存球員成績的數組
int[] a = new int[6];
//輸入
for (int i = 0; i < a.Length; i++)
{
Console.Write("請輸入第"+(i+1)+"個球員的成績:");
a[i] = Convert.ToInt32(Console.ReadLine());
}
//輸出
for(int j=0;j<a.Length;j++)
{
Console.WriteLine("第"+(j+1)+"位球員的分數是"+a[j]+"分。");
}
案例二:在案例一的基礎上,顯示球員總分和平均分。
int sum=0;
for (int i = 0; i < a.Length; i++) //利用for循環的迭代使用求出總和
{
sum = sum + a[i];
}
double avg = 1.0*sum / a.Length;//用總分除以個數得出平均值
Console.WriteLine("總分是:"+sum +"。平均分是:"+avg+"。");
案例三:在案例二的基礎上,顯示最高分和最低分,以及相應球員的代號。
int max=0,min=999;
int num1=0,num2=0;
for (int i = 0; i < a.Length; i++)//從頭至尾,依次取出數據兩兩比較,存儲較大值,最后得出的就是最大值
{
if (max < a[i])//定義整型變量max,存儲通過運算得到的大數
{
max=a[i];
num1=i+1;
}
if (min > a[i])//求最小值,參考求最大值
{
min = a[i];
num2 = i+1;
}
}
Console.WriteLine("最好成績是:" + max + "," + num1 + "號球員;最差成績是" + min + "," + num2 + "號球員");
案例四:青歌賽中有10個評委給一個選手打分,每打分后,要去掉一個最高分和一個最低分,計算該選手的平均得分。
Console.WriteLine("請輸入選手得到分數:");
int[]a=new int [10];
for (int i = 0; i < 10; i++)
{
Console.Write("請輸入第"+(i+1)+"個得分:");
a[i] = Convert.ToInt32(Console.ReadLine());
}
int max = 0, min = 999,sum = 0;
double avg;
//求出最高分和最低分
for (int i = 0; i < 10; i++)//依次比較兩個值大小,取最大值(最小值);
{
if (a[i] > max)
{
max = a[i];
}
}
for (int i = 0; i < 10; i++)
{
if (a[i] < min)
{
min=a[i];
}
}
//用迭代法計算總得分
for (int i = 0; i < 10; i++)
{
sum=sum+a[i];
}
//計算去掉最高分、最低分后的平均值
avg = 1.0 * (sum - max - min) / (a.Length - 2);
Console.WriteLine("該選手平均得分是:"+avg+"分");

案例五:做一個36選7的彩票生成器。
Random rand = new Random();//隨機數生成器
int[] a = new int[7];
for (int i = 0; i < a.Length; i++)//對數組進行賦值
{
int n = rand.Next(36);
bool chong = false;//查重,將新生成的隨機數與前面以生成的隨機數進行比較,若有相同值,重新生成
for (int j = 0; j <= i; j++)
{
if (n == a[j])
{
chong = true;//通過chong的值標記是否有相同值。
break;
}
}
if (chong == false)
{
a[i] = n;
Console.Write(a[i] + "\t");
}//沒有相同值,打印該隨機數
else
{
i--;
}//重新生成
}

案例六 20個手機號 滾動顯示,隨機抽取一個中獎號碼
string[] a = new string[20];
Random rand = new Random();
Console.WriteLine("請輸入20個手機號");
for (int i = 0; i < a.Length; i++)
{
Console.Write("請輸入第" + (i + 1) + "個手機號");
a[i] = Console.ReadLine();
}
for (int i = 0; i < 50; i++)
{
int j = rand.Next(20);//通過隨機數生成器獲取隨機數,打出隨機的數組a元素
Console.WriteLine(a[j]);
System.Threading.Thread.Sleep(100);//每輸出一個值,停頓100毫秒
Console.Clear();
}
Console.WriteLine("中獎號碼是:");
int m = rand.Next(20);
Console.WriteLine(a[m]);

案例7 選班長 30個同學投票,從5個候選人中選出一個班長
int[] a = new int[5];
for (int m = 0; m < 30; m++)
{
Console.Write("請投票(a-0;b-1;c-2;d-3;e-4):");
int i = Convert.ToInt32(Console.ReadLine());
a[i]++;//通過鍵盤獲取值,讓相應的數組元素值得到累加。
}
Console.WriteLine("a:" + a[0] + "票b:" + a[1] + "票c:" + a[2] + "票d:" + a[3] + "票e:" + a[4] + "票");

