年租金x=10000元,租金缴费周期y=6个月,并且年租金每隔z=12个月递增k=5%如果起租时间为2013-03-26
到期时间为2016-03-29 
注:最后一笔时间误差可以在3天内。
求一共交几次钱,每次多少钱?手动算后结果:
1 2013-03-26 5000
2 2013-09-26 5000
3 2014-03-26 5250
4 2014-09-26 5250
5 2015-03-26 5512.5
6 2015-09-26 5512.5

解决方案 »

  1.   

    double pre = 5000.0;
                Console.WriteLine(pre);
                for (int i = 1; i < 20; i++)
                {
                    if (i % 2 != 0)
                    {
                        Console.WriteLine(pre);
                    }
                    else
                    {
                        pre = pre * (1 + 0.05);
                        Console.WriteLine(pre);
                    }
                }          
                
                Console.Read();
      

  2.   


    double 年租金 = 10000;
                double 租金缴费周期 = 6;
                double 租金间隔 = 12;
                double 递增 = 0.05;
                double 租期 = 36;
                double 每期付款=0;
                double 付款周期 = 0;
                int 付款次数 = 0;
                double[] 付款数额=new double[100];
                while (付款周期 <= 租期)
                {
                    if (付款周期 % 租金间隔 == 0)
                    {
                        if (付款周期 != 0)
                        {
                            年租金 *= (1 + 递增);
                            每期付款 = 年租金 / 2;
                            付款数额[付款次数] = 每期付款;
                        }
                        else
                        {
                            每期付款 = 年租金 / 2;
                            付款数额[付款次数] = 每期付款;
                        }
                    }
                    else
                    {
                        每期付款 = 年租金/2;
                        付款数额[付款次数] = 每期付款;
                    }
                    付款周期 += 租金缴费周期;
                    付款次数++;
                }
                string rmb = "";
                for (int i = 0; i < 付款次数; i++)
                {
                    rmb += " " + "第" + (i+1) + "次付款数额为:" + 付款数额[i].ToString();
                }
                MessageBox.Show(rmb);
      

  3.   

    随手写的  DateTime starttime = DateTime.Parse("2013-03-26");
                DateTime endtime = DateTime.Parse("2016-10-29");
                decimal d = 0m;
                decimal start = 10000;
                int count = 0, f = 0;
                bool isclear = false;
                for (DateTime midtime = starttime; midtime < endtime; midtime = midtime.AddMonths(6))
                {
                    double sub = midtime.Subtract(starttime).TotalDays / 30 - 12;
                    if (sub > 0)
                    {
                        f++;
                        if (!isclear)
                        {
                            start = start + start * 5 / 100;
                        }
                        d = start / 2;
                        if (f != 2)//保证两次
                        {
                            isclear = true;
                        }
                        else
                        {
                            isclear = false;
                            f = 0;
                        }
                    }
                    else
                    {
                        d = start / 2;
                    }
                    count++;
                    Console.WriteLine("次数" + count.ToString() + "\t" + d + "\t" + midtime);
                }