【简答题】
阅读下列程序说明和C代码,填入(n)处。 【说明】 幼儿园有n(<20)个孩子围成一圈分糖果。老师先随机地发给每个孩子若干颗糖果, 然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友。如共有8个孩子,则第1个将原有的一半分给第2个,第2个将原有的一半分给第3个,……,第8个将原有的一半分给第1个,这样的平分动作同时进行。若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果数变成偶数。小孩人数和每个小孩的初始糖果数由键盘输入。下面的程序可求出经过多少次上述这样的调整,使每个孩子手中的糖果—样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。 【程序】 include 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); }
手机使用
分享
复制链接
新浪微博
分享QQ
微信扫一扫
微信内点击右上角“…”即可分享
反馈
收藏
举报
参考答案:
参考解析: