循环:可以反复执行某段代码,直到不满足循环条件为止。 一、循环的四要素:初始条件、循环条件、状态改变、循环体。 1.初始条件:循环最开始的状态。 2.循环条件:在什么条件下进行循环,不满足此条件,则循环终止。 3.状态改变:改变循环变量值,最终不满足循环条件,从而停止循环。 4.循环体:要反复执行的部分。 二、语法:for语法. //还有while,do...whilte for(初始条件;循环条件;状态改变) { //循环体 } 注意: 1.for后面的小括号中,用分号隔开了三项。 2.for的小括号后面不要加分号。 3.不要写成死循环。 例: for(int i=1;i<=10;i++) { Console.WriteLine("您好"); } 三、执行过程: 1.执行初始条件 2.执行循环条件 3.循环体 4.状态改变 5继续第2步。 注意:for的小括号里面分号隔开,for的小括号后不要加分号。 for的嵌套。 应用:迭代法,穷举法。 一、迭代法:有一定规律。 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。s=s+m for循环变型: 变型一:while循环 int i = 1;//初始条件 for (; i <= 100; ) { Console.Write(i + "\t"); i++;//状态改变 } 相当于: int i = 1;//初始条件 while ( i <= 100) { Console.Write(i + "\t"); i++;//状态改变 } 变型二:死循环 for (; ; ) { } 五、循环的嵌套。 for(int i=1;i<=10;i++) { for(int j=1;j<=20;j++) { Console.Write("★"); } Console.WriteLine(); } 当外层每循环1次,里层完全循环一遍。 作业: 打印以下图型: 行i 列j i与j关系 ●●●●● 1 5 ●●●●● 2 5 ●●●●● 3 5 ●●●●● 4 5 ●●●●● 5 5 第一个 //for (int i = 1; i <= 5; i++) //{ // for (int m = 1; m <= 5; m++) // { // Console.Write("卍"); // } // Console.WriteLine(); //} /////第二个
● 1 1 j<=i ●● 2 2 ●●● 3 3 ●●●● 4 4 ●●●●● 5 5
//for (int i = 1; i <= 5; i++) //{ // for (int m = 1; m<= i; m++) // { // Console.Write("卍"); // } // Console.WriteLine(); //} //第三个
●●●●● 1 5 j<=6-i ●●●● 2 4 ●●● 3 3 ●● 4 2 ● 5 1
//for (int i = 1; i <= 5; i++) //{ // for (int m = 1; m <= 6 - i; m++) // { // Console.Write("卍"); // } // Console.WriteLine(); //} ////第四个
i 空 点 □□□□● 1 4 1 □□□●● 2 3 2 □□●●● 3 2 3 □●●●● 4 1 4 ●●●●● 5 0 5
//for (int i = 1; i <= 5; i++) //{ // for (int m = 1; m <=5-i; m++) // { // Console.Write(" "); // } // for (int n = 1; n <= i; n++) // { // Console.Write("*"); // } // Console.WriteLine(); //} ///第五个
□□□□● □□□●●● □□●●●●● □●●●●●●● ●●●●●●●●●
for (int i = 1; i <= 5; i++) { for (int m = 1; m <= 5 - i; m++) { Console.Write(" "); } for (int n = 1; n <= (2 * i - 1); n++) { Console.Write("*"); } Console.WriteLine(); } 例: 1.100以内所有数的和。 2.求阶乘 3.求年龄。 4.折纸。 5.棋盘放粮食( 自己做) 6.猴子吃桃子 7.落球问题。(自己做)一个球从10米高度落下,每次弹起2/3的高度。问第五次弹起后的高度是多少? 8.兔子小兔子的问题。一对新生兔,到三个月开始生一对小兔,以后每个月都会生一对小兔,小兔不断长大也会生小兔。假设兔子不死,每次只能生一对(公母),问第24末有多少只兔子? 二、穷举法: 用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。
1.找100以内与7相关的数。(能被7整除,个位数是7,十位数是7)
for(int i=1;i<=100;i++)
{
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) //重点
{
Console.Write(i + "\t");
}
}
2.显示计算机的ASCII码: for(int i=0;i<=125;i++) { Console.Write(i+"="+(char)i+"\t"); }
2.有三种硬币若干:1分,2分,5分。要组合1毛5,有哪些组合方式? 3.买东西。小张过元旦发了100元的购物券,他要买香皂(5元),牙刷(2元),洗发水(20元)。要想把100元正好花完,如何买这三样东西? 4.百鸡百钱。有100文钱,要买100只鸡回家。公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只。如何买? 百马百石。有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 问应当让哪几个人去? 6.123()45()67()8()9=100;要求在()里面填写+或-使等式成立。 {//小兔问题 static void Main(string[] args) { //int tu1 = 1, tu2 = 1; //int tu = 0; //for (int i = 3; i <= 24; i++) //{ // tu = tu1 + tu2; tu1是倒数第一个月,tu2是倒数第二个月//相当于是整体前推 // tu2 = tu1; // tu1 = tu; //} //Console.WriteLine(tu); for(;;) //从1到100的和 //int sum = 0; //for (int i = 1; i <= 100; i++) //{ // sum = sum +i ; //} //Console.WriteLine(sum); //棋盘粮食 //int m = 1, sum =1 ; //for (int d = 2; d <= 64; d++) //{ // m = m * 2; // sum = sum + m; //} //Console.WriteLine(sum); 落球 问题 每弹一次 是上次的2/3 求第五次 多高 //double h = 10; //for (int i = 9; i >= 5; i--) //{ // h = (2 * h) / 3; //} //Console.WriteLine(h); //2元牙刷 5元肥皂 20元 洗发水 花100元 //for(int a=0;a<=50;a++) //{ // for(int b=0;b<=20;b++) // { // for(int c=0;c<=5;c++) // { // if (2*a +5* b + 20*c == 100) // { // Console.WriteLine("要买" + a + "个牙刷," + b + "个肥皂," + c + "瓶洗发水"); // } // } // } //} //百鸡百钱 有100文钱 要买100只鸡回家,公鸡2文钱一只,母鸡一文钱一只,小鸡半文钱一只,如何买? //for (int a = 0; a <= 200; a++) //{ // for (int b = 0; b <= 100; b++) // { // for(int c=0;c<=50;c++) // { // if((a+b+c==100)&&(a+2*b+4*c==200)) // { // Console .WriteLine ("要买小鸡"+a+"只,母鸡"+b+"只,公鸡"+c+"只。"); // } // } // } //} //某侦察队接到一项紧急任务,要求在A,B,C,D,E,F六个队员中尽可能多的跳若干,但有一下限制条件: //1. A和B两人至少去一人 // 2 A和D不能一起去 // 3 AEF三人要拍2个人去 // 4 B和C都去或者都不去 // 5 C和D两人中去一个 // 6 若D不去,则E也不去 // 问应当让哪几个人去? //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); // } // } // } // } // } // } //} 在括号里填加减号 令等式成立 //123()45()67()8()9=100 //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 ("123("+a+")45("+b+")67("+c+")8("+d+")9=100"); // } // } // } // } //}