C语言用for语句构成循环:把一张0.001米厚的纸,不断进行对折,折多少次后,厚度可认超过1米?

Python045

C语言用for语句构成循环:把一张0.001米厚的纸,不断进行对折,折多少次后,厚度可认超过1米?,第1张

int main()

{

  float a=0.0001

  int cnt=0

  for (a <1)

  {

      a *= 2

      cnt++

  }

  printf("折叠次数:%d\n", cnt)

  return 0

}

很简单,如果n = 1是折叠1次,应该为纸张厚度*2,也就是0.05*1。为0.1mm。但是根据本答案提供的式子m*2^(n-1),答案应为m也就是0.05。在此即跟题意有所出入。

提供Python过程参考程序:

thick = 0.05

x = 0

while thick <= 8848000:

    thick *= 2

    x += 1

    print(thick, x)

显示效果如下:

次数    纸张厚度  

0    0.05  

1    0.1  

2    0.2  

3    0.4  

4    0.8  

5    1.6  

6    3.2  

7    6.4  

8    12.8  

9    25.6  

10    51.2  

11    102.4  

12    204.8  

13    409.6  

14    819.2  

15    1638.4  

16    3276.8  

17    6553.6  

18    13107.2  

19    26214.4  

20    52428.8  

21    104857.6  

22    209715.2  

23    419430.4  

24    838860.8  

25    1677722  

26    3355443  

27    6710886  

28    13421773  

答案应为28次。