本题问题:国际象棋盘上共有64个格子,设想在象棋盘上放麦子,第一个格子上放一粒麦子,第二个格子放二粒麦子,以后每一个格子的麦子数都按前一格的两倍计算,依此放完棋盘上的64个格子。请计算共需要多少粒麦子,这些麦子合多少立方米(已知1立方米麦子约1.4×10^8粒)。
代码:
#include
int main()
{
double a=0,b=1,c=1;
for(a=1;a<=64;a++){
b*=2;
c+=b;
a++;
}
printf("国王总共要给%if粒小麦\n",c);
return 0;
}
运行结果:
%if改为%lf,循环内的a++去掉。
两个错误:
(1)for循环里的a++多余,删掉一个
(2)printf中的%if 改为%lf , f前面是L的小写字母
还有就是题目要求立方米。
修改后运行结果:
代码修改如下:
#include<stdio.h>
int main()
{
double a=0,b=1,c=1;
for(a=1;a<=64;a++){
b*=2;
c+=b;
//a++;//修改 ,这里删掉
}
printf("国王总共要给%lf粒小麦\n",c); //修改 ,%if 改为%lf
printf("这些麦子约%.2lf立方米\n",c/(1.4e8));//结果保留2位小数
return 0;
}