[试题]

阅读下列程序说明和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); }

参考答案与解析:

相关试题

阅读下列程序说明和C£«£«代码,将应填入(n)处。 (说明) “背包问题”的基

[主观题]阅读下列程序说明和C++代码,将应填入(n)处。(说明)“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1;w2,……,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。(程序4.1)include<stdio.h>define N 7define S 15int w[N+1]={0,1,

  • 查看答案
  • 阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。(程序说明) 著名

    [试题]阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。(程序说明)著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻:矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。(程序)incl

  • 查看答案
  • 阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 (说明) “背包

    [试题]阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。(说明)“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn。希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得“背包问题”的一组解,其中程序1是“背包问题”的递归解法,而程序2是“背包问题”的非递归解法。(程序1)include<stdio.h>define N 7define S 15int w[N+1]={0,1,4

  • 查看答案
  • 阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。[说明] 函数Pr

    [试题]阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。[说明]函数Printprime(int UpBound)的功能是输出1到UpBound以内的全体素数。[函数2.1]void PrintPrime(int UpBound)printf("2," );for(i=3; i<UpBound; i+ =2) {int k = sqrt(i);for(j=3; j<= k;(1)) /*检查i是否有3到k以入的奇因数*/if((2)) break;fi((3)) printf("%d

  • 查看答案
  • 阅读下列程序说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。 (说明)

    [主观题]阅读下列程序说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。(说明)程序利用选择排序算法对数组a中的N个整数按照从小到大的顺序排列,并将排序结果显示出来。(程序)define N 10main(){void (1);int i,a[N];for(i=0;i<10,i++) /*输入*/scanf(“%d”,&a[i]);(2);for(i=0;i<N,i++) /*输出*/printf(“%3d”,a[i]);}void selectSon(int x[],int n){int

  • 查看答案
  • 阅读下列程序说明和C代码,将应填入(n)处。(程序5说明) 著名的四色定理指出任

    [试题]阅读下列程序说明和C代码,将应填入(n)处。(程序5说明)著名的四色定理指出任何平面区域图均可用四种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过四种颜色的着色方案。程序中用1~4表示四种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用 adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。(程序5)include<st

  • 查看答案
  • 阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 (说明) 设M叉

    [试题]阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。(说明)设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根节点的值部分(设为一个字符)和用“()”,括起来的各子树的列表(如有子树的话),各子列表间用“,”分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。(函数5-8)inelude<stdio.h>include<stdlib.h>define M3typedef stru

  • 查看答案
  • 阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。(说明) 设某城市

    [试题]阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。(说明)设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。如是这样,从站点x至站点y的最少上车次数便对应图G

  • 查看答案
  • 阅读下列程序说明和C代码,把应填入其中n处的字句写在对应栏内。 (说明) 下面的

    [主观题]阅读下列程序说明和C代码,把应填入其中n处的字句写在对应栏内。(说明)下面的程序能够计算不同图形的面积。程序中把每个图形的数据定义成结构类型,利用共同体类型描述2种图形的数据。程序根据输入参数代表的图形类型,求出图形的面积并输出。(程序)struct Circle{float x,y; /*圆心位置*/float r; /*圆半径*/};struct Rectangle{float width; /*矩形宽*/float length; /*矩形长*/};union shape{struct C

  • 查看答案
  • 阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面程序用

    [主观题]阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。[说明]下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ryt、try、tyr、ytr、yrt),但考虑到破译速度,采用如下方法。注意到单词列表中不存在组成字符完全相同的单词(如Hack12与Hack21包含完全相同的字符),因此将单词中的字符进行重组再进行比较,例如,try单词重组为rty(按ASCⅡ码顺序),这样不管打

  • 查看答案