循环语句2
for的嵌套
//99乘法表
for (int a = 1; a <= 9; a++)-----控制行
{
for (int i = 1; i <= a; i++)------控制列
{
Console.Write(i + "*" + a + "=" + (a * i) + "\t");
}
Console.WriteLine();
}
Console.ReadLine();
//直角在左上
for (int i = 5; i >= 1; i--)
{
for (int j = 1; j <= i; j++)//j<i,刚开始j<5,打出来是个正方形的,和上面的i没有关联上。
{
Console.Write("※");
}
Console.WriteLine();
}
Console.ReadLine();
//打印星号,直角在左下
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("※");
}
Console.WriteLine();
}
Console.ReadLine();

直角在右边之后就有点难了。我就晕了。
//直角在右上
for (int i = 1; i <= 5; i++)
{
for (int j = 2; j <= i; j++)------条件时常会搞错
{
Console.Write(" ");-------两个空格是一个字符,空出位置来
}
for (int t = 5; t >= i; t--)
{
Console.Write("※");
}
Console.WriteLine();-------换行,打下一行
}
Console.ReadLine();
//直角在右下
for (int i = 1; i <= 5; i++)
{
for (int j = 4; j >= i; j--)
{
Console.Write(" ");
}
for (int t = 1; t <= i; t++)
{
Console.Write("※");
}
Console.WriteLine();
}
Console.ReadLine();
复制代码
穷举:
//穷举:
//把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。
//单位给发了一张150元购物卡,
//拿着到超市买三类洗化用品。
//洗发水15元,香皂2元,牙刷5元。
//求刚好花完150元,有多少种买法,
//每种买法都是各买几样?
//设洗发水x 150/15==10
//牙刷y 150/5==30
//香皂z 150/2==75
int biao = 0;
int sum = 0;
for (int x = 0; x <= 10; x++)
{
for (int y = 0; y <= 30; y++)
{
for (int z = 0; z <= 75; z++)
{
sum++;
if (x * 15 + y * 5 + z * 2 == 150)
{
biao++;
Console.WriteLine("这是第" + biao + "种买法:洗发水" + x + "瓶,牙刷" + y + "支,香皂" + z + "块。");
}
}
}
}
Console.WriteLine("共有" + biao + "种买法!");
Console.WriteLine(sum);
Console.ReadLine();
羽毛球拍15元每支,球3元每个,水2元每瓶,200元每种至少一个,有多少种可能。
只买球拍最多13支,设为x。
球最多66个,设数量为y。
水最多100瓶,设为z。
15x+3y+2z=200.
int m = 0;
for (int x = 1; 15 * x<=200; x++)
{
for (int y = 1; 3 * y <= 200; y++)
{
for (int z = 1; 2 * z <= 200; z++)
{
if(15*x+3*y+2*z==200)
{
m++;
Console.WriteLine(x+"支拍子"+y+"个球"+z+"瓶水。");
}
}
}
}
Console.WriteLine("一共"+m+"种买法。");
Console.ReadLine();
百鸡百钱:公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡,有多少种可能性。
设公鸡x只,母鸡y,小鸡z
2x+y+0.5z=100&&x+y+z=100-----这是条件
int m = 0;
for (int x=1;x<=50 ;x++ )
{
for (int y = 1; y <= 100; y++)
{
for (int z = 1; z <= 200; z++)
{
if(2*x+y+0.5*z==100&&x+y+z==100)
{
m++;
}
}
}
}
Console.WriteLine("一共" + m + "种买法。");
Console.ReadLine();
//迭代:
//从初始情况按照规律不断求解中间情况,最终推导出结果。
//纸张可以无限次对折,纸张厚度为0.07毫米。
//问多少次对折至少可以超过8848?
int a = 7;//884800000
int i = 1;
for (;; )
{
a *= 2;//a=a*2;
if (a >= 884800000)
{
Console.WriteLine(i);
Console.WriteLine(a);
break;
}
i++;
}
while(true)
{
a *= 2;
if (a >= 884800000)
{
Console.WriteLine(i);
Console.WriteLine(a);
break;
}
i++;
}

浙公网安备 33010602011771号