全国计算机二级C语言 # (15)程序填空题:标识符、常量和变量(1-3)

全国计算机二级C语言 # 程序填空题:标识符、常量和变量


41)
定程序中,函数fm的功能是将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中,并且,要先打开BLANK1. SLN文件再操作。不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
typedef struct
{ int num;
char name[10];
}PERSON;
/**********found**********/
void fun(PERSON ___1___)
{
/**********found**********/
___2___ temp;
if(std[0].num>std[1].num)
{ temp=std[0]; std[0]=std[1]; std[1]=temp; }
if(std[0].num>std[2].num)
{ temp=std[0]; std[0]=std[2]; std[2]=temp; }
if(std[1].num>std[2].num)
{ temp=std[1]; std[1]=std[2]; std[2]=temp; }
}
main()
{ PERSON std[ ]={ 5,”Zhanghu”,2,”WangLi”,6,”LinMin” };
int i;
/**********found**********/
fun(___3___);
printf(“\nThe result is :\n”);
for(i=0; i<3; i++)
printf(“%d,%s\n”,std[i].num,std[i].name);
}
[codesyntax lang=”php”]

[微答案]
(1)std[] (2)PERSON (3)std
[微分析]
填空1:定义形参变量引用数组std,此时形参可以定义为指针变量,也可以定义为数组。由下文可知,程序是通过数组下标对数组元素进行操作的,因此形参应使用数组形式,而非指针形式。
填空2:程序使用变里temp交换结构体数组元素的值,因而temp应定义为ERS0N型。
填空3:程序通过函数fun对数组std进行操作,因此函数的实参应为stdo
#include
typedef  struct
{  int  num;
   char  name[10];
}PERSON;
/**********found**********/
void fun(PERSON  *std)
{
/**********found**********/
   PERSON  temp;
   if(std[0].num>std[1].num)
  {  temp=std[0];  std[0]=std[1];  std[1]=temp;  }
   if(std[0].num>std[2].num)
  {  temp=std[0];  std[0]=std[2];  std[2]=temp; }
   if(std[1].num>std[2].num)
  {  temp=std[1];  std[1]=std[2];  std[2]=temp;  }
}
main()
{  PERSON  std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" };
   int  i;
/**********found**********/
   fun(std);
   printf("\nThe result is :\n");
   for(i=0; i<3; i++)
      printf("%d,%s\n",std[i].num,std[i].name);
}

[/codesyntax]
 


41)
甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t秒放一
次,丁每隔t4秒放-次,每人各放n次。函数fum的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声, 第- -次响声是在第0秒。例如,若t1=7,t2=5, t3=6, t4=4, n=10, 则总共可听到28次鞭炮声。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中,并且,要先打开BLANK1. SLN文件再操作。不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/**********found**********/
#define OK(i, t, n) ((___1___%t==0) && (i/t<n))
int fun(int t1, int t2, int t3, int t4, int n)
{ int count, t , maxt=t1;
if (maxt < t2) maxt = t2;
if (maxt < t3) maxt = t3;
if (maxt < t4) maxt = t4;
count=1; /* ?count??? */
/**********found**********/
for(t=1; t< maxt*(n-1); ___2___)
{
if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) )
count++;
}
/**********found**********/
return ___3___;
}
main()
{ int t1=7, t2=5, t3=6, t4=4, n=10, r;
r = fun(t1, t2, t3, t4, n);
printf(“The sound : %d\n”, r);
}
 
[codesyntax lang=”php”]

[微合案]
(1)i (2)t++ (3)count
[微分析]
填空1:在0K函数里i应该代表的是放鞭炮的次数,因而在第一空应该填i。
填空2:在0K函数里t代表的是间隔的秒数,for循环中的此空该填t+ +。
填空3:最后返回的应该是听到的鞭炮总共的炸响声,本题中count代表的是鞭炮总共的炸响声,因而此空应填count。
#include
/**********found**********/
#define    OK(i, t, n)    ((i%t==0) && (i/t<n)) int="" fun(int="" t1,="" t2,="" t3,="" t4,="" n)="" {="" count,="" t="" ,="" maxt="t1;" if="" (maxt="" <="" t2)="" t3)="" t4)="" count="1;" *="" ?count???="" **********found**********="" for(t="1;" t<="" maxt*(n-1);="" t++)="" if(ok(t,="" ||="" ok(t,="" n)||="" )="" count++;="" }="" return="" count;="" main()="" t1="7," t2="5," t3="6," t4="4," n="10," r;="" r="fun(t1," n);="" printf("the="" sound="" :="" %d\n",="" r);="" pre="">[/codesyntax]
</n))>

 

 


41)
函数fum的功能是:将一副扑克牌编号为 1.2.3… 53,54,以某种特定的方式洗牌,这种方式
是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,譬如第-次这样洗牌后的结果为: 1.28.2.2….53.27.54. 两次洗牌后的结果为: 1.41.28,15,2.42… .53.40,27.14,54。
程序的功能是:输出经过n次这样洗牌后的结果。
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中,并且,要先打开BLANK1. SLN文件再操作。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun( int a[55], int n )
{ int i, k ;
/**********found**********/
int __(1)__[55];
for (i=0; i<n; 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;
for (i=1; i<55; i++) a[i]= i;
printf(“请输入洗牌次数 : “); scanf(“%d”, &m);
fun(a, m);
for (i=1; i<55; i++) printf(“%d,”,a[i]);
printf(“\n”);
}
 
[codesyntax lang=”objc”]

[微合条]
(1) b (2) 2 (3)b[k]
[微分析]
填空1:看下面的语句要用到数组b,所以要定义数组b。填空2: b数组下标为偶数的项赋值。
填空3:把数组b的值依次赋值数组ao
#include
void  fun( int  a[55], int  n )
{  int  i, k  ;
/**********found**********/
   int  b[55];
   for (i=0; i<n; i++)="" {="" for="" (k="1;" k<="27;" k++)="" b[="" 2*k-1="" ]="a[k];" **********found**********="" 2*="" k="" }="" a[k]="b[k];" main(="" )="" int="" m,="" a[55],i;="" (i="1;" i<55;="" a[i]="i;" printf("ÇëÊäÈëÏ´ÅÆ´ÎÊý="" :="" ");="" scanf("%d",="" &m);="" fun(a,="" m);="" printf("%d,",a[i]);="" printf("\n");="" <="" pre="">[/codesyntax]
</n;>

 

54 Views
分享你的喜爱
默认图片
linwute

我要像梦一样自由,像大地一样宽容;
在艰辛放逐的路上,点亮生命的光芒;
我要像梦一样自由,像天空一样坚强;
在曲折蜿蜒的路上,体验生命的意义;

留下评论