|  | 
 
 发表于 2019-9-21 15:16:26
|
显示全部楼层
   本楼为最佳答案 
| 1、将“unsigned long long int sum = 0”改为“unsigned long long int sum”后输出“sum”的值可以发现“sum = 1”,默认情况下并不是“0”。 2、在for循环中添加“printf("%llu\n",i);”将每次循环的“i”值输出可以发现“i”为从“0”到“63”,即:第一次循环为:temp = 2^0;sum = 0+2^0。第二次循环为:temp = 2^1;sum = 0+2^0+2^1。……
 (注:“i++”的意思是“先用i进行运算,然后再++”)
 测试用代码如下,修改部分加了“//******”,
 萌新求勿喷Thanks♪(・ω・)ノ
 #include<stdio.h>
 #include<math.h>
 int main()
 {
 unsigned long long int sum;//******
 unsigned long long int temp;
 unsigned long long int weight;
 unsigned int i;
 printf("%llu\n",sum);//******
 for(i=0;i<64;i++)
 {
 temp=pow(2,i);
 sum=sum+temp;
 printf("%llu\n",i);//*****
 }
 weight=sum/25000;
 printf("舍罕王应该给与达依尔%llu粒麦子\n",sum);
 printf("如果没25000粒麦子为1kg,那么应该给%llu公斤麦子!",weight);
 return 0;
 }
 | 
 |