首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

分糖果有关问题

2012-02-07 
分糖果问题10个小孩围成一圈分糖果,老师顺序分给每个人的糖块分别为12,2,8,22,16,4,10,6,14,20。然后按下列

分糖果问题
10个小孩围成一圈分糖果,老师顺序分给每个人的糖块分别为12,2,8,22,16,4,10,6,14,20。然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再像老师补要一快,问经过多少次调整后,大家的糖块一样多,且每人多少块?
这是我做的,只是输入数据后没有输出,为什么呢,请高手指点一下..  
#include "stdio.h "
void   main()
{
int   n,i,a[10],j,k,l;
for(i=0;i <10;i++)
scanf( "%d ",&a[i]);
n=0;
for(l=0;l==0;l=0)
{n++;
k=a[0]/2;a[0]=a[0]/2+a[9]/2;
      for(i=9;i> 1;i--)
a[i]=a[i]/2+a[i-1]/2;
a[1]=a[1]/2+k;
for(j=0;j <10;i++)if(a[j]%2!=0)a[j]=a[j]+1;

if(a[1]==a[2])break;
}
printf( "%d,%d ",n,a[1]);
}            


[解决办法]
楼主的编程习惯不要啊!我费老劲了才看出错哪了!
你看这个循环 for(j=0;j <10;i++)if(a[j]%2!=0)a[j]=a[j]+1;
循环体里面是(j=0;j <10;i++) 怎么成i ++le ,这样死循环啊!怎么可能出结果的。
以后要看仔细哦!

[解决办法]
#include "stdio.h "
void main()
{
int n,i,a[10],j,b[10];

for(i=0;i <10;i++)
scanf( "%d ",&a[i]);
while(a[0]!=a[1]||a[0]!=a[2]||a[0]!=a[3]||a[0]!=a[4]||a[0]!=a[5]||a[0]!=a[6]||a[0]!=a[7]||a[0]!=a[8]||a[0]!=a[9])
{
for(j=0;j <10;j++)/*b[]保存原始值*/
b[j]=a[j];

for(i=1;i <10;i++)/*相互给糖*/
{

a[0]=b[0]/2+b[9]/2;
a[i]=b[i-1]/2+b[i]/2;
}

for(j=0;j <10;j++)/*奇数加一块*/
{
if(a[j]%2!=0)
a[j]++;
}

n++;

}/*while*/
printf( "n=%d a=%d\n ",n,a[2]);
getch();
}

n=16 a=18

热点排行