3.09课·········for循环
for循环:反复执行某段代码。
for循环四要素:初始条件,循环条件,循环体,状态改变。
for(初始条件;循环条件;状态改变)
{
循环体
}
若初始条件满足循环条件,则进入循环体,执行完循环体,跳回到状态改变,再判断是否满足循环条件,若满足,再进入循环体,直到不满足循环条件,则停止for循环。
break ——中断循环,跳出循环
continue——停止本次循环,
for (int a = 1/*初始条件*/; a <= 20/*循环条件*/; a++/*状态改变*/) { if (a == 7) { continue;//结束本次循环,继续下次循环 } Console.WriteLine("你好!"); if (a == 10) { break;//跳出for循环 } } Console.ReadLine();//打印了9个“你好”
1.输入一个整数,计算从1加到这个数的结果
Console.Write("请输入一个正整数:"); int a = int.Parse(Console.ReadLine()); int sum = 0;//0加任何数都不会变化 for (int i = 0; i <= a; i++) { sum += i;//sum=sum+1 } Console.WriteLine(sum); Console.ReadLine();
2.输入一个正整数n,求1-n的阶乘
Console.Write("请输入一个正整数:"); int a = int.Parse(Console.ReadLine()); int b = 1;//1乘以任何数都不变 for (int i = 1; i <= a; i++) { b *= i;//b=b*i } Console.WriteLine(b); Console.ReadLine();
3.输入一个整数,求1!+2!+···+n!
Console.Write("请输入一个整数:"); int n = int.Parse(Console.ReadLine()); int sum = 0; int sum1 = 1; for (int a = 1; a <= n; a++) { sum1 *= a;//1~n的阶乘 sum += sum1;//1~n的阶乘之和 } Console.Write(sum); Console.ReadLine();
用for嵌套也可以:
Console.Write("请输入一个整数:"); int n = int.Parse(Console.ReadLine()); int sum = 0; for (int i = 1; i <= n; i++) { int sum1 = 1; for (int j = 1; j <= i; j++) { sum1 *= j; } sum += sum1; } Console.WriteLine(sum); Console.ReadLine();
4.:找出100以内与7有关的数并打印
(1).从1找到100
(2).找出与7有关的数
个位数是7 a%10==7
十位数是7 a/10 ==7
能被7整除 a%7 ==0
int s = 0;//标记变量 for (int a = 1; a <= 100; a++) { if (a % 7 == 0 /*7的倍数*/|| a / 10 == 7/*十位数是7*/ || a % 10 == 7/*个位数是7*/) { s++;//满足条件就算一个 Console.WriteLine(a); } } Console.WriteLine("总共" + s);//s为满足条件的个数 Console.ReadLine();
5.//一个游戏,前20关是每一关自身的分数,
//21-30关每一关是10分
//31-40关,每一关是20分
//41-49关,每一关是30分
//50关,是100分
//输入你现在闯到的关卡数,求你现在拥有的分数
两种做法:if嵌套for for嵌套if
第一种方法:if嵌套for
Console.Write("请输入关卡数:"); int s = int.Parse(Console.ReadLine()); int sum = 0; if (s >= 1 && s <= 50) { if (s <= 20)//小于20关 { for (int i = 1; i <= s; i++) { sum += i; } } else if (s <= 30)//21~30关 { for (int i = 1; i <= 20; i++)//前20关的总分 { sum += i; } for (int i = 21; i <= s; i++) { sum += 10;//sum = sum + 10,每一关加10分 } } else if (s <= 40)//31~40关 { for (int i = 1; i <= 20; i++) { sum += i; } for (int i = 21; i <= 30; i++) { sum += 10; }//前30关总分 for (int i = 31; i <= s; i++) { sum += 20;//每一关加20分 } } else if (s <= 49)//41~49关 { for (int i = 1; i <= 20; i++) { sum += i; } for (int i = 21; i <= 30; i++) { sum += 10; } for (int i = 31; i <= 40; i++) { sum += 20; } for (int i = 41; i <= s; i++) { sum += 30;//每一关加30分 } } else//s=50 { for (int i = 1; i <= 20; i++) { sum += i; } for (int i = 21; i <= 30; i++) { sum += 10; } for (int i = 31; i <= 40; i++) { sum += 20; } for (int i = 41; i <= 49; i++) { sum += 30; } sum += 100; } } else { Console.WriteLine("输入有误!"); } Console.WriteLine("您的总分是:" + sum); Console.ReadLine();
第二种方法:for嵌套if//更简便
Console.Write("请输入关卡数:"); int s = int.Parse(Console.ReadLine()); int sum = 0; if (s >= 1 && s <= 50) { for (int i = 1; i <= s; i++) { if (i >= 1 && i <= 20)//1~20关 { sum += i; } else if (i >= 21 && i <= 30)//21~30关 { sum += 10; } else if (i >= 31 && i <= 40)//31~40关 { sum += 20; } else if (i >= 41 && i <= 49)//41~49关 { sum += 30; } else//50关 { sum += 100; } } } else { Console.WriteLine("您的输入有误!"); } Console.WriteLine("您的总分是:" + sum); Console.ReadLine();
3.有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问几年后有多少对兔子,幼兔、小兔、成兔对数分别是多少。成兔每月生下一对幼兔。
成兔对数 |
0 |
0 |
1 |
1 |
2 |
3 |
5 |
小兔对数 |
0 |
1 |
0 |
1 |
1 |
2 |
3 |
幼兔对数 |
1 |
0 |
1 |
1 |
2 |
3 |
5 |
月份 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
总对数 |
1 |
1 |
2 |
3 |
5 |
8 |
13 |
根据上表可以得到结论:
本月的成兔=上月的小兔+上月的成兔。
本月的小兔=上月的小兔。
本月的幼兔=本月的成兔。
Console.Write("请输入月份:"); int yue = int.Parse(Console.ReadLine()); int ct = 0, xt = 0, yt = 0, zt = 0; for (int i = 1; i <= yue; i++) { if (i == 1)//一月份的时候直接赋值所有兔子的个数 { ct = 0; xt = 0; yt = 1; zt = 1; } else { ct = xt + ct;//每月成兔等于上月小兔加上月成兔 xt = yt;//每月小兔等于上月幼兔 yt = ct;//每月幼兔等于上月成兔 } zt = ct + xt + yt;//总兔对数 } Console.WriteLine(yue + "个月后成兔对数为:" + ct); Console.WriteLine(yue + "个月后小兔对数为:" + xt); Console.WriteLine(yue + "个月后幼兔对数为:" + yt); Console.WriteLine(yue + "个月后总兔对数为:" + zt); Console.ReadLine();
Where is a will ,there is a way!