for循坏的穷举与迭代,while、do while循环
for循環
窮舉:所有情況走一遍,使用if篩選出符合的情況。
1.單位給發了一張150元購物卡,拿著到超市買三類洗化用品。洗發水15元,香皂2元,牙刷5元。求剛好花完150元,有多少種買法,沒種買法都是各買幾樣?
int d=0;int e = 0;for (int a = 1; a <= 10;a++ ){for (int b = 1; b <= 30;b++ ){for (int c = 1; c <= 75;c++ ){if(a*15+b*5+c*2==150){d++;Console.WriteLine("第{0}種買法,洗發水{1}瓶,牙刷{2}支,香皂{3}塊",d,a,b,c);}}}}Console.WriteLine("總共有"+d+"買法");2.百雞百錢:公雞2文錢一只,母雞1文錢一只,小雞半文錢一只,總共只有100文錢,如何在湊夠100只雞的情況下剛好花完100文錢?
double d = 0;double e = 0;for (int a = 0; a <= 50;a++ ){for (int b = 0; b <= 100;b++ ){for (int c = 0; c <= 200;c++ ){d = a + b + c;e = a * 2 + b + c * 0.5;if(d==100&&e==100){Console.WriteLine("公雞"+a+"母雞"+b+"小雞"+c);}}}}迭代:
從初始情況按照規律不斷求解中間情況,最終推導出結果。
1.理想狀態下,籃球自由落體彈起高度若為上一次高度的四分之三首先高度設置為20米,輸入一個次數,求籃球現在彈起的高度
?
Console.Write("輸入你想查看的次數");double a = double.Parse(Console.ReadLine());double b = 20;for (double i = 1; i <= a;i++ ){b *= 0.75;}Console.WriteLine(b);2.要組合出來12元錢,有1分錢,2分錢,5分錢的硬幣,有幾種組合方式,分別各多少個?
int d = 0;for (int a = 0; a <= 1200; a++){for (int b = 0; b <= 600; b++){for (int c = 0; c <= 240; c++){if (a + 2 * b + 5 * c == 1200){Console.WriteLine(a + "1分錢" + b + "2分錢" + c + "五分錢");d++;}}}}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是不管滿不滿足表達式,都會先執行一遍。
?
1.單位給發了一張150元購物卡,拿著到超市買三類洗化用品。洗發水15元,香皂2元,牙刷5元。求剛好花完150元,有多少種買法,沒種買法都是各買幾樣?
int a = 0;int x = 0;while (x <= 10){int y = 0;while (y <= 30){int z = 0;while (z <= 75){if (x * 15 + y * 5 + z * 2 == 150){a++;Console.WriteLine("洗發水" + x + "牙刷" + y + "香皂" + z);}z++;}y++;}x++;}Console.WriteLine(a);?
2.兔子生兔子問題
Console.Write("輸入月數");int a = int.Parse(Console.ReadLine());int ct = 0;int xt = 0;int yt = 1;int sum = 1;int i = 1;while (i <= a){if (i == 1){ct = 0;xt = 0;yt = 1;sum = 1;}else{ct = ct + xt;xt = yt;yt = ct;sum = ct + xt + yt;}i++;};Console.WriteLine("成兔" + ct + "小兔" + xt + "幼兔" + yt);Console.WriteLine("對數" + sum);3.3.求100以內質數的和
int c = 1;int sum = 0;while (c <= 100){int a = 1;int b = 0;while (a <= c){if (c % a == 0){b++;}a++;}if (b == 2){sum += c;Console.WriteLine(c);}c++;}Console.WriteLine(sum);百雞百錢:
int a = 0;int d = 0;while (a <= 50){int b = 0;while (b <= 100){int c = 0;while (c <= 200){if (a + b + c == 100 && 2 * a + b + 0.5 * c == 100){ Console.WriteLine("公雞" + a + "母雞" + b + "小雞" + c); }c++;}b++;}a++;d++;}Console.WriteLine(d + "種");?
?
?
轉載于:https://www.cnblogs.com/1030351096zzz/p/5950705.html
總結
以上是生活随笔為你收集整理的for循坏的穷举与迭代,while、do while循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: select、poll、poll的比较(
- 下一篇: 虚拟机不能显示u盘启动不了怎么办 虚拟机