国王的小麦:
相传古代印度国王舍罕要褒赏他聪明能干的宰相达依尔(国际象棋的发明者),国王问他要什么?达依尔回答说:“国王只要在国际象棋的棋盘第1格内放1粒麦子,第2格内放2粒麦子,第3格内放4粒麦子,以后每格是前一格的一倍,一直放到第64格,我感恩不尽,其他什么都不要了。”国王想,这多多少?还不容易!让人扛来了一袋小麦,但不到一会儿全用完了,再拿来一袋很快又用完了。结果全国的小麦全部用完还不够。国王纳闷怎样也算不清这笔帐。
计算出每一格的小麦数,累加得到总数
循环变量:i,初值1,终值64
循环条件:i<=64
循环体:
⊙计算第i格小麦数:a=2*a
⊙累加总数: total= total+a;
#include<stdio.h>
int main()
{
int i=1;
double a= 1, total=0;
for(i=1;i<=64;i++)
{
total += a;
a=a*2;
printf("i=%d, total=%.0lf\n", i, total);
}
return 0;
}
这个问题中由于整数有自己的取值范围,当超过这个取值范围的时候溢出,所以我们考虑把变量a和total改为double类型