码迷,mamicode.com
首页 > 其他好文 > 详细

经典练习及步骤分解

时间:2017-11-05 19:11:10      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:自增   code   result   字符串   偶数   add   提示   enter   空白   

5-1 输出1000以内的水仙花数

 for (int i = 100; i < 1000; i++)
            {
                int a = i / 100 % 10;//百位
                int b = i / 10 % 10;//十位
                int c = i % 10;//个位

                if (a * a * a + b * b * b + c * c * c == i)
                {
                    Console.WriteLine(i);
                }

            }
            Console.ReadLine();

 

5-2 分解质因数

 

int number;//定义一个需要获取的变量
            while (true)//做一个死循环
            {
                Console.Write("请输入一个合数(大于1):");//输出提示
                 number = int.Parse(Console.ReadLine());//获取用户输入值
                if (number <= 1)//当值<=1时,提示错误,因为1不是合数
                {
                    Console.Write("输入有误,输入数字必须大于1,按回车继续");
                } else//或者当值质数时提示错误,否则结束循环
                    {
                        bool isFind = false;//定义一个bool值,判断有没有找到质数
                        for (int i = 2; i < number; i++)//定义除数范围
                        {
                            if (number % i == 0)//值能被i整除时,说明不是质数,是合数
                            {
                                isFind = true;
                                break;
                            }

                        }
                        if (isFind)//是合数,结束循环
                        {
                            break;//不能省略,需要用它结束循环

                        }
                        else//是质数,提示输入错误
                        {
                            Console.Write("输入有误,输入数字是质数,按回车继续");
                        }

                }
                Console.ReadLine();//循环内接收信息
                Console.Clear();//循环内清屏
               }
            List<int>  Arr=new List<int>();//定义一个集合
            int n = number;//定义一个N
            while (n!=1)//n为判断的最小因数,当n等于1时,循环结束
            {
                for (int i = 2; i <=n; i++)//因数至少为2,所以从2开始,定义因数范围
                {
                    if (n%i==0)//说明是最小因数
                    {
                        n = n/ i;//n替换成了商,再进行循环找最小因数,并且把商赋值给n
                        Arr.Add(i);//循环增加集合Arr的内容
                        break;//找到第一个除得尽的,就是最小因数
                    }
                }
            }
            //输出结果
            string result = number + "=";//先定义要输出的字符串
            for (int i = 0; i < Arr.Count; i++)//循环遍历集合Arr里的内容
            {
                result += Arr[i];//用结果自增并每次加上集合项
                if (i<Arr.Count-1)//当下标号小于集合最后一位时,自增输出X
                {
                    result += "x";
                }
            }
            Console.Write(result);//输出结果

            Console.ReadLine();//等待执行

 

5-3 斐波拉契数列

 Console.Write("请输入数组长度");//提示用户输入长度
            int len = int.Parse(Console.ReadLine());//接收用户定义的长度
            int[] Arr = new int[len];//定义数组的长度
            //给数组的每一项赋值
            for (int i = 0; i < Arr.Length; i++)//查找范围
            {
                if (i <= 1)//判断数组的下标号是不是0或者1 是的话,按顺序给索引号0、1赋值为1
                {
                    Arr[i] = 1;
                }
                else { //如果不是0或1,根据规则,倒数第二位的数值是它前两位之和

                    Arr[i] = Arr[i - 1] + Arr[i - 2];
                }
            }
            for (int i = 0; i <Arr.Length; i++)
            {
                Console.Write(Arr[i]+"\t");
            }
            Console.ReadLine();

 

5-4 买桃问题

 int money = 100, price = 3, exchange = 3;//钞票金额  桃子单价 换一个桃子需要的桃核数量
            int eated, kernel;//当前吃到的桃子总数 目前拥有的桃核数量
            eated = money / price;
            kernel = eated;
            while (kernel >= exchange)
            {
                //换取桃子
                int peach = kernel / exchange;//新换的
                //计算剩余桃核
                int left = kernel % exchange;//换剩的
                //吃掉桃子
                eated += peach;//现在有的加上换的新的桃子数量
                //计算当前拥有的桃核
                kernel = left + peach;//余剩的桃核数量和现有的桃子
            }
            Console.WriteLine("最多可吃到" + eated + "个桃子");

            Console.ReadLine();

 

5-5 哥德巴赫猜想

 int number;
            while (true)
            {
                Console.Write("请输入一个大于2的偶数:");
                number = int.Parse(Console.ReadLine());
                if (number <= 2 || number % 2 != 0)
                {
                    Console.Write("输入错误,请重新输入:请按回车继续");
                    Console.ReadLine();
                    Console.Clear();

                }
                else
                {
                    break;
                }
            }
            //先判断i是不是质数,如果不是,则进入下一次循环
            //i=2 ——number~2   0、1都不是质数,所以从2开始,判断范围是输入值到2
            int i;
            int j = 0;
            for (i = 2; i < number; i++)
            {
                j = number - i;//定义j的量,j至少等于总数减去判断i的少
                bool isFind = false;
                for (int k = 2; k < i; k++)
                {
                    if (i % k == 0)
                    {
                        isFind = true;
                        break;
                    }
                }
                if (isFind)
                {
                    continue; //i不是质数
                }

                //判断J是不是质数,如果是i和j就是要找的质数,结束循环
                isFind = false;
                for (int k = 2; k < j; k++)
                {
                    if (j % k == 0)
                    {
                        isFind = true;
                        break;

                    }
                }
                if (!isFind)
                {
                    break;

                }
            }

            //输出结果

            string result = number + "=" + i + "x" + j;

            Console.WriteLine(result);
            Console.ReadLine();

 

5-6 反序输出

            Console.WriteLine("请输入一个字符串");
            string input = Console.ReadLine();
            string a="";
            for (int i=input.Length-1; i>=0;i--)
            {
                a += input[i];
            }
            Console.WriteLine(a+"串符字个一入输请");
            Console.ReadLine();

 

5-7 日历

 while (true)
            {

                #region//获取正确的年份和月份
                int year, month;
                while (true)
                {
                    Console.Write("请输入年份(1900-2100):");
                    year = int.Parse(Console.ReadLine());
                    if (year > 2100 || year < 1900)
                    {
                        Console.WriteLine("年份输入错误,按回车键后重新输入");
                        Console.ReadLine();
                        Console.Clear();
                    }
                    else
                    {
                        Console.Write("请输入月份(1-12):");
                        month = int.Parse(Console.ReadLine());
                        if (month > 12 || month < 1)
                        {
                            Console.WriteLine("月份输入错误,按回车键后重新输入");
                            Console.ReadLine();
                            Console.Clear();
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                #endregion
                #region //將空白加入到集合
                List<string> dates = new List<string>();
                //1.计算1900年到year-1年,经过的天数
                int crossDaysOfYear = 0;
                for (int i = 1900; i < year; i++)
                {
                    if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)//4年一闰,100年不润,400年一闰
                    {
                        crossDaysOfYear += 366;
                    }
                    else
                    {
                        crossDaysOfYear += 365;
                    }
                }
                //2.在变量year这一年,从1月到month-1月,经过的天数

                int crossDaysOfMonth = 0;
                for (int i = 1; i < month; i++)//遍历加上所有日期到crossDaysOfMonth,范围从1月到最后一月-1
                {
                    if (i == 2)//二月
                    {
                        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//判断闰年
                        {
                            crossDaysOfMonth += 29;
                        }
                        else
                        {
                            crossDaysOfMonth += 28;
                        }
                    }
                    else if (i <= 7 && i % 2 != 0 || i > 7 && i % 2 == 0)//大月
                    {
                        crossDaysOfMonth += 31;
                    }
                    else//小月
                    {
                        crossDaysOfMonth += 30;
                    }
                }
                int crossDays = crossDaysOfYear + crossDaysOfMonth;//经过的总天数
                int dayOfWeek = crossDays % 7 + 1;//表示星期几
                int space = dayOfWeek - 1;//空白的数量
                for (int i = 0; i < space; i++)
                {
                    dates.Add("");//向dates添加空字符串
                }


                #endregion
                #region 將日期数字加入到集合
                int days = 0;//用户输入的month这个月的天数
                if (month == 2)//二月
                {
                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//判断闰年
                    {
                        days = 29;
                    }
                    else
                    {
                        days = 28;
                    }
                }
                else if (month <= 7 && month % 2 != 0 || month > 7 && month % 2 == 0)//大月
                {
                    days = 31;
                }
                else//小月
                {
                    days = 30;
                }
                for (int i = 1; i <= days; i++)
                {
                    dates.Add(i.ToString());
                }

                #endregion
                #region 输出结果
                Console.WriteLine("***************************************************");
                Console.Write("-\t二\t三\t四\t五\t六\t日\t");
                for (int i = 0; i < dates.Count; i++)
                {
                    if (i % 7 == 0)
                    {
                        Console.WriteLine();
                    }
                    Console.Write(dates[i] + "\t");

                }
                Console.WriteLine();
                Console.WriteLine("***************************************************");
                #endregion
                Console.Write("按回车键继续");
                Console.ReadLine();
                Console.Clear();
            }
            int A = 0;
            Console.ReadLine();

 

 

经典练习及步骤分解

标签:自增   code   result   字符串   偶数   add   提示   enter   空白   

原文地址:http://www.cnblogs.com/opacity-m/p/7788158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!