求解一道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




