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();