题目内容
阅读下列程序说明和C代码,填入(n)处。
【说明】
幼儿园有n(<20)个孩子围成一圈分糖果。老师先随机地发给每个孩子若干颗糖果,
然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友。如共有8个孩子,则第1个将原有的一半分给第2个,第2个将原有的一半分给第3个,……,第8个将原有的一半分给第1个,这样的平分动作同时进行。若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果数变成偶数。小孩人数和每个小孩的初始糖果数由键盘输入。下面的程序可求出经过多少次上述这样的调整,使每个孩子手中的糖果—样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。
【程序】
include <stdio.h>
define N 20
int allEqual (int a[ ],int n) /*检查每个孩子手中的糖果是否一样多*/
{ iht i;
for(i=1; i<n; i++)
if(a[O]!=a[i]) return O;
return 1;
}
int a[N], b[N];
void main ()
{ int i, n, addk, loopc;
printf("Enter n((20)\n"); scanf("%d", &n);
printf ("Enter data\n");
for(i=O; i(n; i++) scanf("%d", &a[i]);
addk=O;(1);
while (2){ /*平分循环*/
loopc++;
for (i=O; i (n; i++){ /*为一次调整作准备*/
if(a[i]%2) { a[i]++;(3); }
if (i<n-1) b[i+1]=a[i]/2; else(4)
a[i]/=2;
}
for(i=O; i<n; i++)(5); /*完成一次调整*/
}
printf("调整%d次\n", loopc); printf("每个孩子有%d颗糖果\n", a[0]);
printf("调整过程中新增发%d颗糖果。\n", addk); }
查看答案
搜索结果不匹配?点我反馈