函数fun的功能是:将一副扑克牌编号为1,2,3,…,53,54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,如第一次这样洗牌后的结果为:1,28,2,29,…,53,27,54。两次洗牌后的结果为:1

admin2017-11-05  25

问题 函数fun的功能是:将一副扑克牌编号为1,2,3,…,53,54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,如第一次这样洗牌后的结果为:1,28,2,29,…,53,27,54。两次洗牌后的结果为:1,41,28,15,2,42…,53,40,27,14,54。
程序的功能是:输出经过n次这样洗牌后的结果。
请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
    #include
    void fun(int a[55],int lrl)
    {  int i,k;
    /**********found**********/
  int m[55];
  for(i=0;i<11;i++)
  {  for(k=1;k<=27;k++)
    {  b[2*k一1]=a[k];
    /**********found**********/
    b[一[2]*[k]=a[k+27];
    }
    for(k=1;k<=54;k++)
    /**********found**********/
    a[k]=[3];
    }
    }
    main()
    {  int m,a[55],i;
    flor(i=1;i<55;i++)a=i;
    trintf(“请输入洗牌次数:”);scanf(“%d”,&m);
    fun(a,m);
    for(i=1;i<55;i H)prinff(“%d,”,a);
    printf(“\n”);
    }

选项

答案(1)b (2)2 (3)b[k]

解析 填空1:for循环中使用了一个数组b,用来临时存放交换位置后的扑克牌,C语言中变量需要先声明后使用,所以填空
(1)处需要声明一个数组b。答案为b。
填空2:第二个for循环是将数组a中前一半元素(即1~27编号的扑克牌)放入数组b的奇数位置,将数组a中的后一半元素(即28~54编号的扑克牌)放人数组b的偶数位置,实现扑克牌的交叉洗牌。所以填空(2)处是数组b的起始值为2的偶数下标2k,答案为2。
填空3:由于数组b属于函数中的临时变量,所以将数组a的元素交叉存储到数组b后,还需要将数组b的元素依次赋值给数组a,第三个for循环实现的功能是将数组b赋值给数组a,所以填空(3)处需要填入对应下标为k的数组b的元素,答案为b[k]。
转载请注明原文地址:https://kaotiyun.com/show/JcID777K
0

相关试题推荐
最新回复(0)