每三个酒瓶换一瓶酒,编写 参数为有多少个酒瓶,最后返回能喝多少瓶酒。

解决方案 »

  1.   


    //32 剩2个
    public int money = 22; 
    protected void Page_Load(object sender, EventArgs e)
     { 
    int result = 0; 
    int pingzi = 0; 
    Count(ref result, ref pingzi);
     Response.Write(result + "=" + pingzi); 

    public void Count(ref int result, ref int pingzi)
     { 
    money--; 
    result++; 
    pingzi++;
     if (pingzi % 3 == 0) 

    money++; 
    pingzi = 0;
     } 
    if (money > 0) 
    Count(ref result, ref pingzi); 

      

  2.   


    Module Module1    Dim count As Integer = 0
        Dim empty As Integer = 0    Sub Main()        Drink(100)        Console.ReadKey()    End Sub    Sub Drink(ByVal bottle As Integer)        Dim wine = bottle \ 3        empty = ((bottle Mod 3) + wine)        count += wine
            Console.WriteLine("换来了{0}瓶酒", wine)        If empty < 3 Then Exit Sub        Drink(empty)    End SubEnd Module
      

  3.   

    楼上的 代码都很多啊  看我写个很精简的
    private int test(int sum)
            {
                int i = 0;
                int tempNumber = 0; 
                while (sum + tempNumber >= 3)
                {
                    i += sum; 
                    sum += tempNumber;
                    tempNumber = sum % 3;
                    sum = sum / 3;
                }
                return i;
            }
      

  4.   

    上面我写的有点错误,  最后换的没喝,  这个对的
            private int test(int sum)
            {
                int i = 0;
                int tempNumber = 0; 
                while (sum + tempNumber >= 3)
                {
                    i += sum; 
                    sum += tempNumber;
                    tempNumber = sum % 3;
                    sum = sum / 3;
                }
                return i + sum;
            }
      

  5.   

    又是这个问题        static int 换酒喝(int 瓶子数)
            {
                return 瓶子数 / 2;
            }
      

  6.   


    private int newWines(int nowWines, int emptyBottles)
    {
        if (emptyBottles >= 3)
            return newWines(nowWines + emptyBottles / 3, emptyBottles / 3 + emptyBottles % 3);
        else
            return nowWines;
    }
      

  7.   


    protected void test(int num) // num是空瓶的数量
        {
            int result = 0;
            while (num / 3 > 0)
            {
                result = result + (int)num / 3;
                num = (int)num / 3 + num % 3;
            }
            Response.Write(result);
        }
    我觉得这样就可以了,没有各位前辈的那么复杂。是不是我还有哪些没考虑到??但题目很简单:拿空酒瓶去换酒,看最多能喝多少
      

  8.   

        public int jiu = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
                    int pz = 25;        HeJiu(ref pz, out jiu);
                   lblShow.Text = "最多能喝" + jiu + ",剩余的瓶子" + pz;
        }    private void HeJiu(ref int pz, out int jiu)
        {        jiu = 0;
            while (pz >=3)
            {
                if (pz % 3 ==1)
                {
                    jiu++;
                    pz=pz - 3;
                }
                else if (pz % 3 == 2)
                {
                    jiu++;
                    pz = pz - 3;
                }else if(pz % 3 ==0)
                {
                    jiu++;
                    pz=pz - 3;
                }
            }
        }
      

  9.   


    //每三个空酒瓶换一瓶酒,编写 要求参数为有多少个空酒瓶,最后返回能喝多少瓶酒。
    void GetWinebottleNumber(int bottleNumber)
    {
    int iResult = 0,iTemp = 0;
    //iResult += bottleNumber;
    do
    {
    iTemp = bottleNumber/3;
    iResult += iTemp;
    bottleNumber = bottleNumber % 3 + iTemp;
    }
    while(bottleNumber>=3);
    CString strResult;
    strResult.Format(_T("喝%d余%d"),iResult,bottleNumber);
    MessageBox(NULL,strResult,NULL,MB_OK);
    }
      

  10.   

    static void Main(string[] args)
            {
                int i=23;
                int result = 0;
                while (i > 2)
                {
                    result++;
                    i -= 2;
                }
                Console.WriteLine(result);
            }
      

  11.   

    刚才没有看明白楼主的意思
    应该是这样
    int i = 22;
                int result=0;
                if (i > 2)
                {
                    if (i % 2 == 0)
                    {
                        result = i / 2 - 1;
                    }
                    else
                    {
                        result = i / 2;
                    }
                }
                Console.WriteLine(result);
      

  12.   


            public int getDrink(int num)
            {
                return num / 2;
            }两个酒瓶就能喝一瓶酒。
      

  13.   


    嗯 这样做好像是对的,但是我不清楚,你怎么只用了if else就可以?是怎么想的?我想到的就是用循环 而且很复杂,这里好多回答也都写的很复杂。而这个方法只是简单的if else 想不通 呵呵
      

  14.   

    有点像我做过的面试题:喝汽水http://blog.csdn.net/duan_dream/archive/2010/08/12/5806080.aspx
      

  15.   

     这样做好像是对的,但是我不清楚,你怎么只用了if else就可以?是怎么想的?我想到的就是用循环 而且很复杂,这里好多回答也都写的很复杂。而这个方法只是简单的if else 想不通 呵呵
      

  16.   


            private int count = 22;
            static void Main(string[] args)
            {
                Program program = new Program();
                program.Count(program.count);
                Console.WriteLine("一共能喝" + program.count.ToString() + "瓶水");
            }
            /// <summary>
            /// 计算方法
            /// </summary>
            /// <param name="x"></param>
            private void Count(int x)
            {
                if (x > 3)
                {
                    int age = x / 3;//获得能换多少个水
                    int temp = x % 3;//获不能换余下来的瓶子
                    count = count + age;
                    Count(age + temp);
                }
            }