C语言编程猴子吃桃子问题

请问我哪里写错了,我想求第100天猴子吃多少桃子。为什么返回值是-2猴子吃桃子问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃... 请问我哪里写错了,我想求第100天猴子吃多少桃子。为什么返回值是-2

猴子吃桃子问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第100天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?
展开
 我来答
听不清啊
高粉答主

推荐于2017-08-28 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

猴子只吃了99次。第100次还没吃呢。

只是这求到100天之前,这数字也是太大了吧?

int早就溢出了。

用double只能保证前面的大数正确,后面的尾数就全变为0了(否则要使用高精度计算,编程代码就复杂多了):

#include<stdio.h>
int main()
{int day=99;
double x1,x2=1;
 while(day)
 {x1=(x2+1)*2;x2=x1;day--;}
 printf("%.0lf\n",x1);
 return 0; 
}

wchyumo2011
2017-09-02 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2853万
展开全部
假设循环了100次,每次都乘了个2,那么得到的就是2的100次幂,这个数肯定是一个很大的数,超过了int能表示的范围,可以使用大数加法和乘法计算试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BB919379706
2017-08-29 · TA获得超过186个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:76.1万
展开全部
这样算的话,x1至少是1*2*2*2……*2,比2的100次方还大,肯定超过了int的范围了(稍微超过范围后会变成负数)
int的范围是2的31次方,long long也只有2的63次方。
你可以试着把100改小一些(注意数据类型所能表示的最大范围),把int改成long long(long long输入输出的时候用%lld或者%I64d)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-09-11
展开全部
题目出得有问题,100天吃完,就至少有 2^100 = 1267650600228229401496703205376 个桃子。实际上根本不可能摘那么多。你 x2 可以使用 unsigned long 型试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-09-13
展开全部
代码没错, 是天数过多, 最终结果数据太大, 表示不出来
或者x1,x2类型设定为double, printf("%.0lf",x1); ----->注意是点零LF(LF要小写)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式