分糖果问题
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