首页 > 代码库 > C#(4)—for语句的应用:迭代法与穷举法
C#(4)—for语句的应用:迭代法与穷举法
for()循环。
四要素:初始条件,循环条件,状态改变,循环体。
执行过程:初始条件--循环条件--循环体--状态改变--循环条件....
注意:for的小括号里面分号隔开,for的小括号后不要加分号。
for的嵌套。
应用:迭代法,穷举法。
一、迭代法:有一定规律。
每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。
例:
1.100以内所有数的和。
2.求阶乘
3.求年龄。
4.折纸。
double a = 0.01;
for(int i=1;i<=50;i++)
{
a = 2 * a;
}
Console.WriteLine(a);
5.棋盘放粮食( 自己做)
long a=1;
long sum =-1;
for(int i=1;i<=64;i++)
{
a = a* 2;
sum = sum + a;
}
Console.WriteLine(sum);
6.猴子吃桃子
int a=1;
for (int i = 6; i >= 1;i-- )
{
a = (a + 1) * 2;
}
Console.WriteLine(a);
7.落球问题。(自己做)一个球从10米高度落下,每次弹起2/3的高度。问第五次弹起后的高度是多少?
double d=10;
for (int i = 1; i <= 5;i++ )
{
d = d * 2 / 3;
}
Console.WriteLine(d);
8.兔子小兔子的问题。一对新生兔,到三个月开始生一对小兔,以后每个月都会生一对小兔,小兔不断长大也会生小兔。假设兔子不死,每次只能生一对(公母),问第24末有多少只兔子?
int tu1 = 1;
int tu2 = 1;
int tu = 0;
for (int i = 3; i <= 24; i++)
{
tu = tu1 + tu2;
tu2 = tu1;
tu1 = tu;
}
Console.WriteLine(tu);
二、穷举法:
用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。
1.找100以内的与7有关的数。
for (int i = 0; i <= 100; i++)
{
if(i%7==0||i%10==7||i%10==7)
{
Console.Write(i+"\t");
}
2.有三种硬币若干:1分,2分,5分。要组合1毛5,有哪些组合方式?
3.买东西。小张过元旦发了100元的购物券,他要买香皂(5元),牙刷(2元),洗发水(20元)。要想把100元正好花完,如何买这三样东西?
for(int x=1;x<=20;x++)
{
for(int y=1;y<=50;y++)
{
for (int z =1; z<= 5;z++ )
{
if(5*x+2*y+20*z==100)
{
Console.WriteLine("香皂买"+x+"件,"+"牙刷买"+y+"件,"+"洗刷水买"+z+"件。");
}
}
}
}
4.百鸡百钱。有100文钱,要买100只鸡回家。公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只。如何买?
for(int a=0;a<=50;a++)
{
for(int b=0;b<=100;b++)
{
for (int c = 0; c <= 100;c++ )
{
if((2*a+1*b+0.5*c==100)&&(a+b+c==100))
{
Console.WriteLine("公鸡"+a+"只,"+"母鸡"+b+"只,"+"小鸡"+c+"只。");
}
}
}
}
百马百石。有100石粮食,母匹大马驮2石,每匹中马驮1石,每两匹小马驹一起驮1石。要用100匹马驮完100石粮食,如何按排?
5.某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
A和B两人中至少去一人; a+b>=1
A和D不能一起去; a+d<=1 //把问题提示转换成相应的数学关系。
A、E和F三人中要派两人去; a+e+f==2
B和C都去或都不去; b+c!=1
C和D两人中去一个; c+d==1
若D不去,则E也不去。 d+e==0||d==1
问应当让哪几个人去?
for(int a=0;a<=1;a++)
{
for(int b=0;b<=1;b++)
{
for(int c=0;c<=1;c++)
{
for(int d=0;d<=1;d++)
{
for(int e=0;e<=1;e++)
{
for (int f = 0; f <= 1;f++ )
{
if (a + b >= 1 && a + d <= 1 && a + e + f == 2 && b + c != 1 && c + d == 1 && (d + e == 0 || d == 1))
{
Console.WriteLine("A=" + a + ";B=" + b + ";C=" + c + ";D=" + d + ";E=" + e + ";F=" + f);
}
}
}
}
}
}
}
6.123()45()67()8()9=100;要求在()里面填写+或-使等式成立。//把+、-变成-1和+1来看。
for(int a=1;a>=-1;a-=2)
{
for(int b=1;b>=-1;b-=2)
{
for(int c=1;c>=-1;c-=2)
{
for (int d = 1; d >= -1;d-=2 )
{
if(123+a*45+b*67+c*8+d*9==100)
{
Console.WriteLine("a="+a+",b="+b+",c="+c+",d="+d);
}
}
}
}
}
C#(4)—for语句的应用:迭代法与穷举法