|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 街角提子 于 2020-9-9 13:04 编辑
在课后作业中有数麦数的问题,根据提示我照猫画虎进行编程,但编程后的结果是unsigned int的最大值而不是如答案中所说的unsigned long long int的最大值,
我个人的代码如下:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
-
- int i;
- unsigned long long sum;
- unsigned long long weight;
- unsigned long long m;
-
- for(i=0;i<64;i++)
- {
- m=pow(2,i);
- sum=sum+m;
- }
-
- weight=sum/25000;
-
- printf("舍罕王应该给达伊尔%11u的麦子,\n\
- 如果每25000粒麦子为1kg,那么应该给达伊尔%11u",sum,weight);
- return 0;
- }
复制代码
请问有人知道为什么吗
你的sum没有赋初值,再者printf中格式化字符写错了,是%llu,你把小写L写成数字1了,所以结果不对。
另外最好不要用pow,这个函数返回值为浮点数,可能会因为精度问题导致结果不太精确。
- #include <stdio.h>
- int main()
- {
-
- int i;
- unsigned long long sum=0;
- unsigned long long weight;
- unsigned long long m=1;
-
- for(i=0;i<64;i++)
- {
- sum=sum+m;
- m=m*2;
- }
-
- weight=sum/25000;
-
- printf("舍罕王应该给达伊尔%llu的麦子,\n\
- 如果每25000粒麦子为1kg,那么应该给达伊尔%llukg",sum,weight);
- return 0;
- }
复制代码
|
|