程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 循環語句 for循環(嵌套 while 窮舉 迭代),

C# 循環語句 for循環(嵌套 while 窮舉 迭代),

編輯:C#入門知識

C# 循環語句 for循環(嵌套 while 窮舉 迭代),


for循環的嵌套類似於if else

事例:
打印矩陣,外循環對應行,內循環對應列

for (int k = 1; k <= 5; k++)
{
for (int i = 1; i <= 5; i++)
{
Console.Write("■");
}
Console.WriteLine();
}


打印左下角是直角的三角形
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("■");
}
Console.WriteLine();
}

打印左上角是直角的三角形
for (int i = 1; i <= 5; i++)
{
for (int j = 5; j >= i; j--)
{
Console.Write("■");
}
Console.WriteLine();
}


打印右下角是直角的三角形
for (int i = 1; i <= 5; i++)
{
for (int k = 1; k <= 5 - i; k++)
{
Console.Write(" ");
}
for (int j = 1; j <= i; j++)
{
Console.Write("■");
}
Console.WriteLine();
}


打印右上角是直角的三角形
for (int i = 1; i <= 5; i++)
{
for (int k = 2; k <= i; k++)
{
Console.Write(" ");
}
for (int j = 5; j >= i; j--)
{
Console.Write("■");
}
Console.WriteLine();
}

 


請輸入一個正整數,
根據這個數打印一個兩邊長度為這個數的
直角在右下角的三角形
Console.Write("請輸入一個正整數:");
int a = int.Parse(Console.ReadLine());
for (int i = 1; i <= a; i++)
{
for (int j = 1; j <= a - i; j++)
{
Console.Write(" ");
}
for (int k = 1; k <= i; k++)
{
Console.Write("■");
}
Console.WriteLine();
}
Console.ReadLine();

輸入一個整數,求1!+2!+...+n!
Console.Write("請輸入一個正整數:");
int a = int.Parse(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= a; i++)
{
int jie = 1;
for (int j = 1; j <= i; j++)
{
jie *= j;
}
sum += jie;
}
Console.WriteLine(sum);


99口訣表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write(j+"*"+i+"="+j*i+"\t");
}
Console.WriteLine();
}

Console.ReadLine();

while 循環

 

其實是for循環的變形寫法
for(int i = 1; i<=5;i++)
{
循環體;
}
上面的for循環可以寫成
int i= 1;
for(;i<=5;)
{
循環體;
i++;
}
寫成while就是以下樣式
int i= 1;
while(表達式(i<=5))
{
循環體;
狀態改變(i++);
}

do
{
循環體;
狀態改變(i++);
}while(表達式(i<=5))
注意:do while是不管滿不滿足表達式,我都會先執行一遍。

舉例應用:

折紙:0.07mm,對折多少次能夠超過珠峰高度(8848m)
int ci = 0;
double height = 0.07;
while (height < 8848000)
{
height *= 2;
ci++;
}

while (1 == 1)
{
height *= 2;
ci++;
if (height >= 8848000)
{
break;
}
}
Console.WriteLine(ci);
Console.ReadLine();


使用while循環做99口訣表
int i = 1;

while (i <= 9)
{
int j = 1;
while (j <= i)
{
Console.Write(j+"*"+i+"="+j*i+"\t");
j++;
}
Console.WriteLine();
i++;
}
Console.ReadLine();

 

 

 

窮舉

把所有可能的情況都走一遍,使用if條件篩選出來滿足條件的情況。

舉例應用:

 

單位給發了一張150元購物卡,
拿著到超市買三類洗化用品。
洗發水15元,香皂2元,牙刷5元。
求剛好花完150元,有多少種買法,每種買法都是各買幾樣?
int sum = 0;
int zong = 0;
for (int x = 0; x <= 10; x++)
{
for (int y = 0; y <= 30; y++)
{
for (int z = 0; z <= 75; z++)
{
zong++;
if (x * 15 + y * 5 + z * 2 == 150)
{
sum++;
Console.WriteLine("第{0}種買法:洗發水{1}瓶,香皂{2}塊,牙刷{3}支。",sum,x,z,y);
}
}
}
}
Console.WriteLine("總共有"+sum+"種買法。");
Console.WriteLine(zong);
Console.ReadLine();

 

百雞百錢:公雞2文,母雞1文,小雞半文錢
int a=0;
for (int g = 0; g <= 50; g++)
{
for (int m = 0; m <= 100; m++)
{
for (int x = 0; x <= 200; x++)
{
if (g + m + x == 100 && g * 2 + m + x * 0.5 == 100)
{
Console.WriteLine(g + "只公雞" + m + "只母雞" + x + "只小雞");
a++;
}
}
}
}
Console.WriteLine(a);
Console.ReadLine();

 

迭代

從初始情況按照規律不斷求解中間情況,最終推導出結果。

舉例應用:

紙張可以無限次對折,紙張厚度為0.07毫米。
問多少次對折至少可以超過8848米?
8848米=8848000
double height = 0.07;
int ci = 0;
for (; ; )
{
height *= 2;
ci++;
Console.WriteLine(ci + "次,現在的高度是:" + height / 1000 + "米。");
if (height >= 8848000)
{
break;//跳出整個循環
}
}
Console.ReadLine();

 


五個小朋友排成一隊,問第一個多大了,
第一個說比第二個大兩歲,問第二個多大了,
第二個說比第三個大兩歲。。。以此類推,
問第5個小朋友,說自己3歲了。問第一個小朋友幾歲了?

int m = 3;
for (int i = 1; i <= 4; i++)
{
m += 2;
}
Console.WriteLine("第一個小朋友{0}歲了。",m);
Console.ReadLine();

 


大馬駝2石糧食,中等馬駝1石糧食,兩頭小馬駝1石糧食,
要用100匹馬,駝100石糧食,該如何分配?
for (int d=0;d<=100 ;d++ )//d為大馬
{
for (int z=0;z<=100 ;z++ )//z為中馬
{
for (int x=0;x<=100 ;x++ )//z為小馬
{
if (d +z+x==100&&2*d+z+0.5*x==100)
{
Console.WriteLine("大馬"+d+"匹,中馬"+z+"匹,小馬"+x+"匹");
}
}
}
}
Console.ReadLine ();

 

 4.有1分錢,2分錢,5分錢的硬幣,

要組合出來1.5元錢,有幾種組合方式,分別各多少個?
int n = 0;
for (int a = 0; a <= 150; a++)
{
for (int b = 0; b <= 75; b++)
{ for(int c=0;c<=30;c++)
{
if (a + 2 * b + 5 * c == 150)
{
Console.WriteLine("1分錢的"+a+"二分錢的"+b+"三分錢的"+c);
n++; }
}
}
}Console.WriteLine("組合方式有"+n);
Console.ReadLine();

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved