相信大家都听说过这样一个故事,古代有人发明了国际象棋,国王问他想要什么样的奖励。他说:在棋盘的第一个格子里放1颗麦粒,第2 个格子放2颗麦粒,第三个格子放4颗麦粒,第四个格子放8颗麦粒。
如果我们每次要在格子里放2的n次方颗麦粒,我们应该放在第几个格子里嘞。由此想出一个c语言小问题。因为1颗麦粒放第一个格子,2颗麦粒放第二个格子,而我们放的麦粒数是2的n次方,我们可以设两个变量int number=1,count=1,用count和我们我们要放的麦粒数X比较,如何count小于X,我们就然count乘2,在和X比较,同时number自加一。直到count大于X时循环结束。
#include<stdio.h>
int main()
{
int X, number = 1, count = 1;
printf("请输入要放入的麦粒数:");
scanf("%d",&X);
while (count < X)
{
count *= 2;
number++;
}
printf("应放入第%d个格子",number);
}