循环语句练习题(2016/6/21)

1.打印1-100中所有能被7和9整除的数

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.打印1 - 100中所有能被7和9整除的数
            for (int i = 1; i <= 100; i++)
            {
                if (i % 7 == 0 && i % 9 == 0)
                {
                    Console.Write(i + " ");
                }
            }
            Console.ReadKey();
        }
    }
}

这里写图片描述


2.打印2,22,222,2222,22222;

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //2.打印2,22,222,2222,22222;
            for (int i = 1; i <= 5; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(2);
                }
                Console.Write(" ");
            }
            Console.ReadKey();
        }
    }
}

这里写图片描述


3.打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
            //例如:153是一个"水仙花数",因为153 = 1的三次方+5的三次方+3的三次方。
            //程序分析:利用for循环控制100 - 999个数,每个数分解出个位,十位,百位。
            for (int i = 100; i < 1000; i++)
            {
                int gw = i % 10;
                int sw = i / 10 % 10;
                int bw = i / 100;
                if (i == gw * gw * gw + sw * sw * sw + bw * bw * bw)
                {
                    Console.Write(i + " ");
                }
            }
            Console.ReadKey();
        }
    }
}

这里写图片描述


4.求出所有的5位数的回文数,显示在屏幕上。即12321是回文数,个位与万位相同,十位与千位相同。

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //4.求出所有的5位数的回文数,显示在屏幕上。
            //即12321是回文数,个位与万位相同,十位与千位相同。

            int[] num = new int[5];  //存储5位数的各位数
            for (int i = 10000; i < 100000; i++)
            {
                int temp = i;
                for (int j = 0; j < 5; j++)
                {
                    num[j] = temp % 10;
                    temp /= 10;
                }

                if (num[0] == num[4] && num[1] == num[3])
                {
                    Console.Write(i + "\t");
                }
            }
            Console.ReadKey();
        }
    }
}

这里写图片描述


6.计算1+2+3+4+5+6+7.。。。+100的和;

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //6.计算1+2+3+4+5+6+7.。。。+100的和;
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                sum += i;
            }
            Console.WriteLine(sum);

            Console.ReadKey();
        }
    }
}

这里写图片描述


7.计算1-2-3-4-5-6-7-8-。。。-100的差

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //7.计算1-2-3-4-5-6-7-8-。。。-100的差
            int result = 1;
            for (int i = 2; i <= 100; i++)
            {
                result -= i;
            }
            Console.WriteLine(result);

            Console.ReadKey();
        }
    }
}

这里写图片描述


8.计算1*2*3.。。。*100的积;

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //8.计算1*2*3.。。。*100的积;
            double result = 1;
            for (int i = 1; i <= 100; i++)
            {
                result *= i;
            }
            Console.WriteLine(result);  //结果溢出

            Console.ReadKey();
        }
    }
}

这里写图片描述


9.计算1-2+3-4+5.。。。-98+99-100的结果

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //9.计算1-2+3-4+5.。。。-98+99-100的结果
            int result = 0;
            int flag = -1;

            for (int i = 1; i <= 100; i++)
            {
                flag *= -1;
                result += (i * flag);
            }
            Console.WriteLine(result);  //结果溢出

            Console.ReadKey();
        }
    }
}

这里写图片描述


10.题目:一球从h米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第n次落地时,共经过多少米?第n次反弹多高?

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //10.题目:一球从h米高度自由落下,每次落地后反跳回原高度的一半;
            //再落下,求它在 第n次落地时,共经过多少米?第n次反弹多高?
            float h = 100;   //球的高度
            int n = 5;   //n次落地
            float sum = 0;   //经过多少米
            //1 100 50
            //2 200 25
            //3 250 12.5
            for (int i = 1; i <= n; i++)
            {
                if (i == 1)
                {
                    sum += h;   //第一次落地只有一段距离
                }
                else
                {
                    sum += 2 * h;
                }
                h /= 2;   //反弹的高度
            }
            Console.WriteLine("第{2}次落地,经过了{0}米,第{2}次反弹{1}米", sum, h, n);
            Console.ReadKey();
        }
    }
}

这里写图片描述


11.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //11.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,
            //当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
            //以后每天早上都吃了前一天剩下的一半零一个。
            //到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
            //程序分析:采取逆向思维的方法,从后往前推断。

            int sum = 1;  //桃子的总数量

            for (int i = 0; i < 9; i++)
            {
                sum = (sum + 1) * 2;
            }
            Console.WriteLine("第一天共摘了{0}个桃子", sum);

            Console.ReadKey();
        }
    }
}

这里写图片描述


12.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //12.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
            //小兔子长到第三个月开始每个月又生一对兔子,
            //假如兔子都不死,问每个月的兔子对数为多少?

            int n = 10;   //第n个月
            int sum1 = 1;   //第fn月兔子总数
            int sum2 = 1;    //第fn+1月兔子的总数
            // 1 1
            // 2 1
            // 3 2 
            // 4 3
            // 5 5 
            //费波纳奇数
            if (n != 1 && n != 2)
            {
                for (int i = 3; i <= n; i++)
                {
                    int temp = sum2;
                    sum2 = sum1 + sum2;
                    sum1 = temp;
                }
            }

            Console.WriteLine("第{0}个月兔子的对数为:{1}", n, sum2);
            Console.ReadKey();
        }
    }
}

这里写图片描述


13.已知一个数字17,判断该数字是否是完数;
该数刚好等于它的因子之和称为完数;
例如:6 = 1 + 2 + 3

using System;
using System.Collections.Generic;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {

            //1.已知一个数字17,判断该数字是否是完数;
            //该数刚好等于它的因子之和称为完数;
            //例如:6 = 1 + 2 + 3
            int num = 6;
            List<int> factor = new List<int>();  //存储num的所有因子
            for (int i = 1; i <= num/2; i++)
            {
                if (num % i == 0)
                {
                    factor.Add(i);
                }
            }
            int sum = 0;  //用来存储因子之和
            foreach (var item in factor)
            {
                sum += item;
            }
            if(num == sum)
            {
                Console.WriteLine("{0}是完数",num);
            }
            else
            {
                Console.WriteLine("{0}不是完数", num);
            }


            Console.ReadKey();
        }
    }
}

这里写图片描述


14.已知一个数字111,判断该数字是否是素数;
素数只能整除1和自己;例如2,3,7

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {

            //1.已知一个数字111,判断该数字是否是素数;
            //素数只能整除1和自己;例如2,3,7
            int num = 111;
            bool isPrime = true;   //标记num是否为素数

            if (num < 2)
            {
                isPrime = false;
            }
            for (int i = 2; i < Math.Sqrt(num); i++)
            {
                if (num % i == 0)
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                Console.WriteLine("{0}是素数",num);
            }
            else
            {
                Console.WriteLine("{0}不是素数", num);
            }
            Console.ReadKey();
        }
    }
}

这里写图片描述


15.求 1/2+2/3+3/5+5/8+8/13+…+第20项的和

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1/2+2/3+3/5+5/8+8/13+...+第20项的和
            int num1 = 1;
            int num2 = 1;
            float result = 0;

            for (int i = 0; i < 20; i++)
            {
                int temp = num1 + num2;
                result += num2*1.0f / temp;
                num1 = num2;
                num2 = temp;
            }
            Console.WriteLine(result);

            Console.ReadKey();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34937637/article/details/80758645