手机今天接到了一条很有意思的短息,我想可以用程序做下,很简单的:一元一瓶饮料,两个空饮料瓶能换一瓶饮料,现在有120元,最多能喝多少瓶饮料? 我写的是:  
//M 为钱数
private static void ShowTotal(int M)
        {
            int b = -1, c = 0;//b瓶子,c瓶数
            for (int i = M; i >= 0; i--)
            {
                b++;
                if (b % 2 == 0 && b != 0)
                {
                    c++;
                    b--;                }
            }
            int result = c + M;
            Console.WriteLine(result);
        }
大家有什么简便的方法,希望呈上

解决方案 »

  1.   

    240瓶?或者趋近这个数字。其实这个问题就如同,csdn回答问题结贴归还一半可用分。现在有120分,最多能问多少分的问题。
      

  2.   


            static int sum = 0;
            static int last = 0;
            public static void TestElse()
            {
                GetCount(120);
                Console.WriteLine(sum);
            }        static void GetCount(int count)
            {
                sum += count;
                count += last;
                last = count % 2;
                if (count == 1) return;
                GetCount(count / 2);
            }
      

  3.   

    本帖最后由 caozhy 于 2012-02-09 11:35:56 编辑
      

  4.   

      int b = 0;
                for (int i = 1; i < 121; i++)
                {
                    b++;
                    if (b != 0 && b % 2 == 0)
                        b++;
                }            Response.Write("最多为:"+b.ToString());
             }应该是239 
      

  5.   

                int count = 120;
                int empty = 0;
                while ((count--)>0)
                { 
                    empty++;
                    if (empty % 2 == 0)
                        empty++;
                }
                Console.WriteLine(empty);
      

  6.   

    我加参数的通法:        static void Main(string[] args)
            {
                while (true)
                {
                    Console.WriteLine("请输入钱数:");
                    int m = int.Parse(Console.ReadLine());
                    Console.WriteLine("请输入参数");
                    int r = int.Parse(Console.ReadLine());
                    Console.WriteLine(Sumb(m,r));
                   
                }
            }        #region 求瓶子数
            static int Sumb(int n,int t)
            {
                int sum = n;
                
                while (n >t-1)
                {
                    if (n % t == 0)
                    {
                        sum += n / t;
                        n = n / t;
                    }
                    else
                    {
                        sum += n / t;
                        n = n / t + 1;
                    }
                }
                return sum;
            }
            #endregion
        }
    }
      

  7.   

    求瓶子
    int s=120;
    int j=2;
    int a=s/j;
    int sa=s;
    for(int c=a;c>1;){
        sa+=c;
        c=c/j;

            }
    System.out.println(sa);)
      

  8.   

    int s=120;
    int j=2;
    int a=s/j;
    int sa=s;
    for(int c=a;c>1;){

    sa+=c;
    c=c/j;

    }
    System.out.println(sa);
      

  9.   


    因此可以这样写
    private static void ShowTotal(int M)
            {
                int c= M>0?M/2:M;
                int result=c + M;
                Console.WriteLine(result);
            }
      

  10.   

    private static void ShowTotal(int M)
            {
                int b = -1, c = 0;//b瓶子,c瓶数
                for (int i = M; i >= 0; i--)
                {
                    b++;
                    if (b % 2 == 0 && b != 0)
                    {
                        c++;
                        b--;                }
                }
                int result = c + M;
                Console.WriteLine(result);
            }
    b 的值在里面怎不起作用b++;%2;就b--,看这个程序就是第隔1,c就+1,因此可以这样写,int c=m/2
      

  11.   


    你要说跟你一样的结果,这个就跟你一样private static void ShowTotal(int M)
      {
      Console.WriteLine(M>0?1-M*2:M);
      }
      

  12.   

    上面搞错,你要说跟你一样的结果,这个就跟你一样
    private static void ShowTotal(int M)
      {
      Console.WriteLine(M>0?M+M-1:M);
      }
      

  13.   

    你题目是要这样的结果的啊,你的写法都错了。private static void ShowTotal(int M)
            {
                Console.WriteLine(M==0?0:M+M/2);
            }