循环语句:
四要素:初始条件,循环条件,状态改变,循环体
for(初始条件;循环条件;状态改变)
{
//循环体
}
案例1:打印等腰直角三角形和菱形
左上三角
1 static void Main(string[] args) 2 { 3 Console.WriteLine("请输入一个数:"); 4 int n = Convert.ToInt32(Console.ReadLine()); 5 6 //打印左上三角形 7 for (int i = 1; i <= n; i++) 8 { 9 for (int j = 1; j <= i; j++) 10 { 11 Console.Write("★"); 12 } 13 Console.WriteLine(); 14 } 15 }
运行结果:
左下三角:
1 static void Main(string[] args) 2 { 3 Console.WriteLine("请输入一个数:"); 4 int n = Convert.ToInt32(Console.ReadLine()); 5 for (int i = 1; i <= n; i++) 6 { 7 for (int j = 1; j <= n + 1 - i; j++) 8 { 9 Console.Write("★"); 10 } 11 Console.WriteLine(); 12 } 13 }
运行结果:
右上三角:
1 static void Main(string[] args) 2 { 3 Console.WriteLine("请输入一个数:"); 4 int n = Convert.ToInt32(Console.ReadLine()); 5 //打印右上三角 6 for (int i = 1; i <= n; i++) 7 { 8 for (int j = 1; j <= n - i; j++) 9 { 10 Console.Write(" "); 11 } 12 for (int k = 1; k <= i; k++) 13 { 14 Console.Write("★"); 15 } 16 Console.WriteLine(); 17 } 18 }
运行结果:
右下三角:
1 static void Main(string[] args) 2 { 3 Console.WriteLine("请输入一个数:"); 4 int n = Convert.ToInt32(Console.ReadLine()); 5 for (int i = 1; i <= n; i++) 6 { 7 for (int j = 1; j <= i - 1; j++) 8 { 9 Console.Write(" "); 10 } 11 for (int k = 1; k <= n + 1 - i; k++) 12 { 13 Console.Write("★"); 14 } 15 Console.WriteLine(); 16 } 17 }
运行结果:
菱形:
static void Main(string[] args) { Console.WriteLine("请输入一个数:"); int n = Convert.ToInt32(Console.ReadLine()); //打印上半部分菱形 for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) { Console.Write(" "); } for (int k = 1; k <= 2 * i - 1; k++) { Console.Write("★"); } Console.WriteLine(); } //打印下半部分菱形 for (int i = 2; i <= n; i++) { for (int j = 1; j <= i - 1; j++) { Console.Write(" "); } for (int k = 1; k <= 11 - 2 * i; k++) { Console.Write("★"); } Console.WriteLine(); } }
运行结果:
break; 完全终止循环,退出循环。 吃到苍蝇
continue; 中断本次循环,进入下次循环。 吃到沙子
1.迭代法: - 有规律可寻
//100以内所有数的和。
1 static void Main(string[] args) 2 { 3 // 求100以内所有数的和 4 //收公粮 5 int sum = 0; 6 7 for (int i = 1; i <= 100; i++) 8 { 9 sum = sum + i; 10 } 11 Console.WriteLine(sum); 12 }
//猴子吃桃子
公园里有一只猴子,和一堆桃子,猴子每天吃完桃子总数的一半,在剩下一半数量中扔掉一个坏的。每天这样吃,到第七天,猴子睁开眼时,发现只剩下一个桃子了,问刚开始公园里有多少个桃子? 190
1 public static void Main(string[] args) 2 { 3 //猴子吃桃子 4 int taozi = 1; 5 for (int i = 6; i >= 1; i--) 6 { 7 taozi = (taozi + 1) * 2; 8 } 9 10 Console.WriteLine(taozi); 11 }
//国象棋盘放米
1 public static void Main(string[] args) 2 { 3 //国象放米 4 double mi = 1; 5 Console.Write(mi + "\t");//第一行的米数 6 7 for (int i = 2; i <= 64; i++) 8 { 9 mi = mi * 2; 10 Console.Write(mi + "\t"); 11 } 12 }
结果:
//拆纸多少次就比珠峰高 8848米
一张A4纸的厚度:0.088毫米 =0.0088厘米 = 0.00088分米=0.000088米
1 public static void Main(string[] args) 2 { 3 double houdu = 0.000088; 4 5 for (int i = 1; ; i++) 6 { 7 houdu = houdu * 2; 8 Console.Write(houdu + "\t"); 9 if (houdu > 8848) 10 { 11 Console.WriteLine("对折了{0}次后就超过珠峰了", i); 12 break; 13 } 14 } 15 }
运行结果:
2.穷举法 :
用循环,把所有可能的情况都走上一遍,然后使用if过滤出满足条件的情况来。
//100以内所有与7有关的数。
1 static void Main(string[] args) 2 { 3 #region ====求100以内与7有关的数==== 4 5 for (int i = 1; i <= 100; i++) 6 { 7 if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) 8 { 9 Console.Write(i + "\t"); 10 } 11 } 12 #endregion 13 }
//百鸡百钱
公鸡2文钱,母鸡1文钱,小鸡半文钱。用100文钱,买100只鸡,每类鸡只少买1只,有哪几种组合?
1 static void Main(string[] args) 2 { 3 //百鸡百钱:公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性 4 int sum = 0; 5 for (int a = 1; a <=50; a++) 6 { 7 for (int b =1; b <100; b++) 8 { 9 for (int c = 1; c <=100; c++) 10 { 11 if (a+b+c==100&&a*2+b*1+c*0.5==100) 12 { 13 sum++; 14 Console.WriteLine("公鸡{0}只,母鸡{1}只,小鸡{2}只",a,b,c); 15 } 16 } 17 } 18 } 19 Console.WriteLine("一共有{0}种可能性",sum); 20 }
123( )45( )67( )8( )9=100,括号里填+或-使得等式两边相等。
1 public static void Main(string[] args) 2 { 3 4 for (int a = -1; a <= 1; a = a + 2) 5 { 6 for (int b = -1; b <= 1; b = b + 2) 7 { 8 for (int c = -1; c <= 1; c = c + 2) 9 { 10 for (int d = -1; d <= 1; d = d + 2) 11 { 12 if (123 + 45 * a + 67 * b + 8 * c + 9 * d == 100) 13 { 14 Console.Write("{0},{1},{2},{3}", a, b, c, d); 15 } 16 } 17 } 18 } 19 } 20 }
小张单位发100元的购物卡,小张要去超市买三种日常用品:牙刷(5元)、香皂(2元)、洗发水。(15元),购物卡不退现,小张又不想多花钱,如何购买刚好花完这100元的卡?
1 static void Main(string[] args) 2 { 3 4 int count=0; 5 for (int a = 0; a <=20; a++) 6 { 7 for (int b = 0; b <=50; b++) 8 { 9 for (int c = 0; c <=6; c++) 10 { 11 12 if (a*5+b*2+c*15==100) 13 { 14 count++; 15 Console.WriteLine("牙刷{0}只,香皂{1}个,洗发水{2}瓶", a, b, c); 16 } 17 18 } 19 } 20 } 21 Console.WriteLine("一共有{0}种可能性恰好花光100元",count); 22 }
//打印出所有的水仙花数,所谓的水仙花数就是一个三位数,其余各个数字的立方和等于它的本身,例如153是一个水仙花数,153=1∧3+5∧3+3∧3
1 static void Main(string[] args) 2 { 3 //打印出所有的水仙花数,所谓的水仙花数就是一个三位数,其余各个数字的立方和等于它的本身,例如153是一个水仙花数,153=1∧3+5∧3+3∧3 4 for (int i = 111; i <=999; i++) 5 { 6 int a = i / 100;//取出三位数的百位 7 int b = i / 10 % 10;//取出三位数的十位 8 int c = i % 10;//取出三位数的个位 9 10 if (a*a*a+b*b*b+c*c*c==i) 11 { 12 Console.WriteLine(i); 13 } 14 15 } 16 17 }
运行结果: