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

发布网友 发布时间:2022-04-19 22:36

我来回答

5个回答

热心网友 时间:2023-07-12 06:32

猴子只吃了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; 
}

热心网友 时间:2023-07-12 06:33

假设循环了100次,每次都乘了个2,那么得到的就是2的100次幂,这个数肯定是一个很大的数,超过了int能表示的范围,可以使用大数加法和乘法计算试试

热心网友 时间:2023-07-12 06:33

这样算的话,x1至少是1*2*2*2……*2,比2的100次方还大,肯定超过了int的范围了(稍微超过范围后会变成负数)
int的范围是2的31次方,long long也只有2的63次方。
你可以试着把100改小一些(注意数据类型所能表示的最大范围),把int改成long long(long long输入输出的时候用%lld或者%Id)

热心网友 时间:2023-07-12 06:34

题目出得有问题,100天吃完,就至少有 2^100 = 1267650600228229401496703205376 个桃子。实际上根本不可能摘那么多。你 x2 可以使用 unsigned long 型试试。

热心网友 时间:2023-07-12 06:34

代码没错, 是天数过多, 最终结果数据太大, 表示不出来
或者x1,x2类型设定为double, printf("%.0lf",x1); ----->注意是点零LF(LF要小写)
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com

热门图文