CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求解一道c语言题!不是很难的!明天结贴!

楼主lnjasmine(呵呵)2005-12-30 16:55:40 在 C/C++ / C语言 提问

题目:每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直到购买的苹果个数达到不超过100的最大值。编写程序求每天平均花多少钱。 问题点数:100、回复次数:26Top

1 楼keskey(lee chenlu )回复于 2005-12-30 16:58:46 得分 0

自己写吧你```````  
  一点思路都没的  
  就想别人帮你写啊?Top

2 楼keskey(lee chenlu )回复于 2005-12-30 17:07:58 得分 5

main()  
  {  
  int   i,j=1,k=0;  
  if(j<100)  
  {for(i=1;i<7;i++)  
      j*=2;  
  k+=j;}  
  printf("aver=%d",k*0.8/6);  
  }  
  Top

3 楼ouyh12345(五岭散人)回复于 2005-12-30 17:14:03 得分 5

float   Sum()  
  {  
      float   price=0.8;  
      int   n;  
      int   i=1;  
      float   fcount;  
      while(1)  
      {  
          int   n=2*i;  
          if(n>100)  
              break;  
          fcount+=n*price;  
          i++;  
      }  
      return   fcount/i;  
  }Top

4 楼csucdl(csucdl)回复于 2005-12-30 17:18:52 得分 0

这道题说是编程还不如说是极为简单的数学问题Top

5 楼csucdl(csucdl)回复于 2005-12-30 17:19:36 得分 0

等比数列求和Top

6 楼cunsh(村少)回复于 2005-12-30 17:50:40 得分 0

作业.Top

7 楼Grubby_c(This time tell me the truth)回复于 2005-12-30 18:03:49 得分 5

#include<stdio.h>  
  #define   PRICE   0.8  
  int   main()   {  
          int   day   =   1;  
          int   count   =   2;  
          int   sum   =   count;  
          while(1)   {  
                  count   *=   2;  
                  if(count+sum   >=   100)   break;  
                  sum   =   count   +   sum;  
                  ++day;  
          }  
          printf("Money   is   %d",PRICE*sum/day);  
          return   1;  
  }  
  Top

8 楼A_B_C_ABC(黄瓜@YouCanDoIt)回复于 2005-12-30 18:31:24 得分 0

这种问题都做不起,还是不要学编程了。BS。Top

9 楼A_B_C_ABC(黄瓜@YouCanDoIt)回复于 2005-12-30 18:40:52 得分 0

BS的不是你的智商,是你的态度,最少你试着写一个,哪怕是错的,这里的人也会帮你改正,那样你也才能学到东西。一来就想别人给你个完整的答案,看起来是帮你,实际是害你。Top

10 楼jixingzhong(瞌睡虫·星辰)回复于 2005-12-30 18:56:47 得分 5

int   main()    
  {    
  int   j=2,   sum=0,   day=1;  
   
  for(;j<100;j*=2,day++)  
          sum   +=   j;  
   
  printf("sum   of   apple   is   %d\nlast   for   %d   days\n",sum,day)   ;  
  printf("The   average   =   %f",sum*0.8/day);  
   
  getch();  
  return   0;    
  }Top

11 楼fivewolf(桥)回复于 2005-12-30 19:54:49 得分 10

void   main()  
  {  
      float   price=0.8*2;  
      int   day=1,num=2;  
      while(num<100)  
      {  
          price+=2*num*price;  
          num+=2*num;  
          day++;  
      }  
      printf("the   num   of   the   apples   is   %d   \n",num);  
      printf("everyday   costs   the   money     %f   \n",price/day);  
  }  
           
  Top

12 楼jp1984(mathfrog)回复于 2005-12-30 20:20:03 得分 10

#include   <iostream>  
  #include   <iomanip>  
  using   namespace   std;  
   
  int   _tmain(int   argc,   _TCHAR*   argv[])  
  {    
        const   float   PRICE   =   0.8;  
        const   int   MAX   =   100;  
        int   buyApple   =   2,countHowMany   =2,countDays   =   1;  
        int   countApples   =   buyApple;  
        float   averagePrice;  
        while   (countApples   <=   MAX){  
            buyApple   =   2   *   buyApple;  
    countApples   +=   buyApple;  
            countDays++;  
        }  
   
      averagePrice   =   (float)countApples   *   PRICE   /   countDays;  
   
      cout   <<   setprecision(3)   <<   averagePrice   <<   endl;  
  return   0;  
  }Top

13 楼peipeiguo(Percy)回复于 2005-12-30 20:27:03 得分 0

帮你顶一个Top

14 楼zhuzhu8408(左看看右看看)回复于 2005-12-30 20:35:35 得分 0

计算式的罗列Top

15 楼DelphiNew(沙鼠)回复于 2005-12-30 20:58:31 得分 0

这个问题很简单,用一行代码就可以解了。。  
  不信你可以试试  
  int   main(int   a,int   b,double   c,int   _){  
  (_==-8)?((2*b)>100?(printf("%3.3f",c/a),0):main(++a,b*2,c+b*1.6,-8)):(main(1,2,1.6,-8));  
  }Top

16 楼Jim_King_2000()回复于 2005-12-30 21:25:50 得分 10

递归?楼上强。顶一下。还是多用几行比较妥当:  
  #include   <iostream>  
   
  using   namespace   std;  
   
   
   
  int   main()  
  {  
  const   double   fPrice   =   0.8;  
  int   nNum   =   2;  
  int   nSum   =   2;  
  int   nDay   =   1;  
   
  while   (1)  
  {  
  int   nTmp   =   nSum   +   (nNum   <<=   1);  
  if   (nTmp   >   100)  
  break;  
  nSum   =   nTmp,   nDay++;  
  }  
   
  cout   <<   nSum   *   fPrice   /   nDay   <<   endl;  
  return   0;  
  }Top

17 楼zw24127(政委)回复于 2005-12-30 21:45:22 得分 10

#include<stdio.h>  
  main()  
  {int   i=2,sum=2,j=1;  
  float   S,avg;  
  while(i<=100)  
  {i*=2;  
  sum+=i;  
  j++;}  
  avg=((float)sum*0.8)/j;  
  printf("the   avg=%l\n",avg);  
  return   0;}  
  ---------------  
  运行一下,应该没问题的  
  Top

18 楼f_acme(沧海一声笑)回复于 2005-12-30 22:14:39 得分 0

楼主初学的吗?学语言是要自己多写些代码才可以学好的。Top

19 楼jianwang_yz(健)回复于 2005-12-30 22:29:39 得分 10

这个问题很简单,用一行代码就可以解了。。  
  不信你可以试试  
  int   main(int   a,int   b,double   c,int   _){  
  (_==-8)?((2*b)>100?(printf("%3.3f",c/a),0):main(++a,b*2,c+b*1.6,-8)):(main(1,2,1.6,-8));  
  }  
  这个比较强,佩服!  
  但是从可读性等软件工程角度来考虑就不好啦!Top

20 楼wayne23(人生如梦,一樽还酹江月)回复于 2005-12-30 23:29:17 得分 30

这个题目看起来很简单,但其实很容易错的,楼上就有好几个都错了:  
  首先,用最笨的方法推出结果,你们自己看看错在哪:  
   
  天数       苹果数  
  1             2       //第一天买了2个苹果  
  2             4  
  3             8  
  4             16  
  5             32  
  6             64  
  7             128     //显然这个结果已经不符合题目要求了  
   
  我把你们有的程序看了一下,你们得到了第7天128这样一个结果.  
  void   main()  
  {  
  int   days=1,apples=2;     /*初始化,第1天买了2个苹果*/  
  int   flag=1;  
  while(flag)  
  {  
  if(apples*2>100)     /*如果苹果数超出100个,直接置循环开关为0   */  
    flag=0;  
  else  
    {  
    apples*=2;  
    days++;    
    }  
  }  
  printf("days=%d\n",days);  
  printf("apples=%d\n",apples);  
  printf("average=%.2f",apples*0.8/days);  
  }  
   
  最后的结果应该是:  
  days=6  
  apples=64  
  average=8.53Top

21 楼DelphiNew(沙鼠)回复于 2005-12-31 01:23:30 得分 0

to楼上的:  
  真正想错的人是你耶,没有认真看题喔~~其实对这么简单的题,目前在下就  
  只看到两个人不懂,一个是楼上的,一个是楼主。  
   
  计算机编程不光是一种编码的技术,同样是一种思维的艺术,不用心去想,  
  不用心去写,不会有任何成绩。。  
   
  在下之所以写了一个混乱代码,是想给大家一个递归的思维而已。。Top

22 楼plane10598(战机)回复于 2005-12-31 04:00:58 得分 0

呵呵!看出来了!但是对初学的人这种题目是最锻炼人的算法的!  
  还有一老题       给大家也难一难!  
  有N个人     数m下     去掉一个!     到结尾后连上头继续数!  
  请问最后留下哪一个人!  
  我刚学C的时候的一个题目曾经花了1个礼拜去研究!  
  那会还不知道链表!用链表是很方便的求解的!  
  只用开始的循环加判断  
  谁想试试1Top

23 楼complayer(顽石)回复于 2005-12-31 08:40:21 得分 0

这个问题是数论中的求余,好好研究mod运算,很快就能得到结果。根本不用循环什么的。Top

24 楼lostbird(迷失的小鸟)回复于 2005-12-31 09:40:00 得分 0

试一下,与搂主一起进步!  
  #include   "stdio.h"  
  main()  
  {  
  int   n=0;  
  float   s=0;  
  while(s>100)  
  {  
  n++;  
  s=(1<<(n+1))-2;                   /*等比数列求和,s=2**(n+1)-2*/  
  }  
   
  s=(1<<n)-2;  
  s*=0.8;  
  printf("s=%4.2f",s);  
   
  Top

25 楼lqwfsl(我是岳阳人)回复于 2005-12-31 12:08:00 得分 0

这个很简单,我用了一个很简单的方法  
   
   
  #include   <iostream.h>  
  main()  
    {     float   total=0.0;  
          int   n=2,i=0;  
          while(n<=100)  
              {  
                  total=total+n;//总个数;  
                  n=2*n;   //个数  
                  i++;     //天数  
              }  
          cout<<   total*0.8/i;  
    }Top

26 楼scaler1010(攀登IT)回复于 2005-12-31 15:54:28 得分 0

这个题目是个很好的练习,要自己动手才好!Top

相关问题

  • C题目,求解!
  • 求解八皇后问题算法(C语言版)
  • help!!! 100分求解狼、羊、白菜问题(C语言描述)
  • [求解]一道关于位运算的C语言问题
  • 求解C++算法题目
  • 求解C++算法题目
  • c++基本问题求解
  • c指针问题求解!!
  • 《C++ Primer》练习题求解
  • 请教用递归的方法求解汉诺塔问题?(请用C语言)

关键词

  • 苹果
  • 题
  • apples
  • 题目
  • nsum
  • days
  • sum
  • 帮你
  • 结果
  • main

得分解答快速导航

  • 帖主:lnjasmine
  • keskey
  • ouyh12345
  • Grubby_c
  • jixingzhong
  • fivewolf
  • jp1984
  • Jim_King_2000
  • zw24127
  • jianwang_yz
  • wayne23

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo