题目
A.6
B.8
C.12
D.16
第5题
A.42
B.20
C.105
D.24
第7题
A.独裁者博弈
B.最后通牒游戏
C.桃心—花朵游戏
D.N-back任务
第8题
A.黑
B.白
C.无法确定
第9题
阅读下列函数说明和C代码及流程图,将应填入(n)处的字句写在对应栏内
[说明]
分糖果问题是一个经典问题。问题描述如下:幼儿国有n(<20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有8个孩子,则第1个将原来的一半分给第2个,第2个将原有的一半分给第3个……第8个将原来的一半分给第1个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个小孩的初始数由键盘输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。
[C程序]
include <stdlib.h>
include <stdio.h>
bool allequall (int child[], int n ) //判断各小孩子手中的糖果是否相等
{
for (int i=0; i<n-1; i++)
if (child[i]!=child[i+1] )
return false; //不相等返回假
return true; //相等返回真
}
const int MaxNum=20; //定义最大人数
//主函数
void main ()
{
int Num=0;
int *child;
int *child1;
//构造两个相应大小的数组child代表小朋友现有的粮果数child1代表小朋友原来有的糖果数
int Tnum=0;
int i=0;
do{
printf ("Pelase input the number of the children: ").,
scanf ("%d",&Num );
if (Num>MaxNum )
printf ("Error Number!!" );
} while (Num>MaxNum );
child=new int [Nmn];
child1=new int [Num];
for (i=0; i<Num; i++ ) //将数组赋值
{
printf ("Input NO. %d child's candy numbers: ",i+1);
scanf ("%d", &child[i] );
}
while ((1) )
{
for (i=0; i<Num; i++ )
{
if((2) )
{
(3)
Tnum++;
}
}
for (i=0; i<Num; i++ )
child1[i]=child[i]; //将child1赋值用来记忆原来小朋友的粮果数
for (i=0; i<Nam; i++ )
(4)
for (i=0; i<Num-1; i++)//用循环实现前一个小朋友粮果数加后一个小朋友粮果数的一半
{
child[i]/=2;
child[i]+=child 1 [i+1];
}
child[Num-1]/=2;
(5)
}
printf ("每个同学最后分到糖果数目是%d\n", child[1]);
printf ("老师分发出的糖果是%d\n", Tnum );
}
图12-7是一种解决问题的流程图,请根据该流程图将对应C代码(n)处补充完整。
第10题
阅读下列程序说明和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); }
第11题
将7个大小相同的橘子分给4个小朋友,要求每个小朋友至少得到1个橘子,一共有几种分配方法?()
A.A.14
B.B.18
C.C.20
D.D.22
为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!