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

 

posted @ 2016-03-11 10:30  魅影星魂  阅读(218)  评论(0编辑  收藏  举报