#define N 20
int n
int equal(int [])
void main()
{
int num=0,count=0,i,t1,t2
int child[N]
scanf("%d",&n)
printf("请输入每个小孩手中的原始糖数:")
for(i=0i<ni++)
scanf("%d",&child[i])
while(!equal(child))
{
for(i=0i<ni++)
{
if(child[i]%2!=0)
{
child[i]+=1
num+=1
}
}
t1=child[0]
for(i=0i<ni++)
{
t2=child[(i+1)%n]
child[(i+1)%n]/=2
child[(i+1)%n]+=t1/2
t1=t2
}
count+=1
for(i=0i<ni++)
printf("%d ",child[i])
printf("\n")
}
printf("经过%d次交换后糖数相\n调整过程中新发%d颗糖\n糖数是%d颗\n",count,num,child[1])
}
int equal(int child[])
{
int i
for(i=1i<ni++)
if(child[i]!=child[i-1])
return 0
return 1
}
不少问题,改了一下,楼主看看。加了一个每次分完后的结果输出。
都已经回复过了,怎么还在重复发贴啊~~#include<stdio.h>
int
equal(int
child[])//判断每个小孩手上的糖是否相等
{
int
i
for(i=1i<10i++)
if(child[i]!=child[i-1])
return
1
return
0
}
void
main()
{
int
child[10]={10,2,8,22,16,4,10,6,14,20}
int
i,
tmp0,
tmp,
sum=0,
count=1
while(equal(child))
{
tmp0=
child[0]
for(i=1i<10i++)
{//循环分糖
if(child[i]%2)
child[i]++
tmp
=
child[i]
child[i-1]=child[i-1]/2+tmp/2//分糖后
}
if(tmp0%2)
tmp0++
child[9]=child[9]/2+tmp0/2
count++
}
printf("经过%d次后,大家手上都有%d块糖.\n",
count,
child[0])
}