1. 怎樣用C語言編程積木游戲
1)第一行include語句前沒有加#。不知道是不是你粘貼程序的時候漏了。
include<stdio.h>
-->
#include
<stdio.h>
2)在分積木的for循環中,應該為for
(i=0;
i<n-1;
i++),而不是i<n-2。因為在這個循環中,a[i]是獲得積木的小朋友;a[i+1]是給出積木的小朋友。按照你原來的循環(i<n-2),那麼最後一個獲得積木的是a[n-3],最後一個給出積木的是a[n-2],這樣a[n-2]就得不到a[n-1]的積木了。
3)在分積木的for循環中,a[i+1]把一半的積木分給左邊的小朋友a[i]之後,剩餘的積木數量卻沒有減少。
4)循環外處理a[0]分給a[n-1]的特殊情況時,應該是按a[0]得到a[1]的積木前的數量來算。而你現在是a[0]拿到a[1]的一半積木後,再把當前的一半分給a[n-1]。
這樣修改後的代碼片段為:
int
a[100],i,n,b;
...
...
b
=
a[0];
for(i=0;
i<n
-
1;
i++)
{
a[i]
+=
a[i+1]
/
2;
/*把自己的積木分一半給左邊的小朋友*/
a[i+1]
/=
2;
}
a[i]
+=
b
/
2;
a[0]
-=
b
/
2;
2. 怎樣用C語言編程積木游戲
1)第一行include語句前沒有加#。不知道是不是你粘貼程序的時候漏了。
include<stdio.h>
-->
#include <stdio.h>
2)在分積木的for循環中,應該為for (i=0; i<n-1; i++),而不是i<n-2。因為在這個循環中,a[i]是獲得積木的小朋友;a[i+1]是給出積木的小朋友。按照你原來的循環(i<n-2),那麼最後一個獲得積木的是a[n-3],最後一個給出積木的是a[n-2],這樣a[n-2]就得不到a[n-1]的積木了。
3)在分積木的for循環中,a[i+1]把一半的積木分給左邊的小朋友a[i]之後,剩餘的積木數量卻沒有減少。
4)循環外處理a[0]分給a[n-1]的特殊情況時,應該是按a[0]得到a[1]的積木前的數量來算。而你現在是a[0]拿到a[1]的一半積木後,再把當前的一半分給a[n-1]。
這樣修改後的代碼片段為:
int a[100],i,n,b;
...
...
b = a[0];
for(i=0; i<n - 1; i++)
{
a[i] += a[i+1] / 2; /*把自己的積木分一半給左邊的小朋友*/
a[i+1] /= 2;
}
a[i] += b / 2;
a[0] -= b / 2;