阅读下列程序说明和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); }
第1题:
阅读以下说明和流程图,回答问题,并将解答填入对应栏内。
【说明】
求解约瑟夫环问题。算法分析:n个士兵围成一圈,给他们依次编号,班长指定从第w个士兵开始报数,报到第s个士兵出列,依次重复下去,直至所有士兵都出列。
【流程图】
【问题】
将流程图中的(1)~(5)处补充完整。
第2题:
试题三(共 15 分)
阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
第3题:
第4题:
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
该程序运行后,输出下面的数字金字塔
【程序】
include<stdio.h>
main ()
{char max,next;
int i;
for(max=′1′;max<=′9′;max++)
{for(i=1;i<=20- (1) ;++i)
printf(" ");
for(next= (2) ;next<= (3) ;next++)
printf("%c",next);
for(next= (4) ;next>= (5) ;next--)
printf("%c",next);
printf("\n");
}
}
第5题:
()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]有一个一维数组cj,内放20个学生成绩,求平均成绩。函数ave用来求20个学生的平均成绩。[C语言函数]float ave(float a[20]){ int i;float aver,sum= (1) ;for(i=1;i<20;i++) sum= (2) ;aver= (3) ;return( (4) );}main(){ float cj[20],aver;int i;printf(“input 20 cj:\n”);for(i=0;i<20;i++) scanf(“%f”,&cj[i]);printf(“\n”);aver= (5) ;printf(“average cj is %6.2f”,aver);}