2022年计算机软件水平考试报名:2016年计算机软件水平考试程序员模拟训练题

副标题:2016年计算机软件水平考试程序员模拟训练题

时间:2023-02-14 18:15:01 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


  本试卷共8道题,考生需解答5道题,其中试题1~试题3是必答题,试题4和试题5两题任选1道题,试题6至试题8三题任选1道解答。对于任选题,如果解答的试题数超过1道,则题号小的1道题解答有效。每题15分,满分75分。

  试题一(15分,每空3分)

  阅读以下说明和流程图,将应填入__(n)__处的字句写在答题纸的对应栏内。

  [说明]

  已知头指针分别为La和Lb的有序单链表,其数据元素都是按值非递减排列。现要归并La和Lb得到单链表Lc,使得Lc中的元素按值非递减排列。程序流程图如下所示。

  试题二(15分,每空3分)

  阅读以下函数说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。

  [程序2.1说明]

  已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。

  [程序2.1]

  #include

  #define N 100

  void main()

  {

  float a[N=1],x;

  int i,p;

  printf("输入已经排好序的数列:");

  for( i=0; i

  scanf(%f",&a[i]);

  printf("输入要插入的数:");

  scanf("%f",&x);

  for( i=0,p=N; i

  if(x

  {

  ___(1)___

  break;

  }

  for( i=N-1; i>=p; i-- )

  ___(2)___

  ___(3)___

  for( i=0; i<=N; i++ )

  printf("%f\t",a[i]);

  }

  [程序2.2说明]

  本程序用变量count统计文件中字符的个数。

  [程序2.2]

  #include

  #include

  void main()

  {

  FILE *fp;

  long count=0;

  if( (fp=fopen("letter.txt","r") ) == NULL )

  {

  printf("can not open file\n");

  exit(0);

  }

  while( !feof(fp) )

  {

  ___(4)___

  count++;

  }

  printf("count=%d\n",count);

  ___(5)___

  }

  试题三(15分,每空3分)

  阅读以下说明和C语言程序,将应填入___(n)___处的字句写在答题纸的对应栏内。

  [说明]

  Fibonacci数列

  列A={11,2,3,5,8,…}有如下性质:

  a0=a1=1

  ai=ai-1+ai-2 i>1

  对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:

  xi=ai/ai+1 i=0,1,…,n

  现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,

  排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数

  make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。

  [程序]

  #include

  #include

  #include

  struct fact

  {

  long m,n;

  };

  void sort(int n,struct fact *p)

  {

  int a;

  long s,t,u,v;

  struct fact *q,*end;

  for(end=p+(n-1),a=1;a;end--)

  for(a=0,q=p;q

  {

  s=q->m;

  t=q->n;

  u=(q+1)->m;

  v=(q+1)->n;

  if(___(1)___)

  {

  q->m=u;

  ___(2)___

  ___(3)___

  (q+1)->n=t;

  a=1;

  }

  }

  }

  void make(int n)

  {

  int i;

  long a,b,c;

  struct fact *x,*y;

  x=(struct fact *)malloc(sizeof(struct fact)*n);

  x->m=1;

  x->n=1;

  for( a=1,b=1,i=2;i<=n;i++)

  {

  ___(4)___

  a=b;

  b=c;

  (x+(i-1))->m=a;

  (x+(i-1))->n=b;

  }

  ___(5)___

  printf("x%d={/",n,x->m,x->n);

  for(y=x+1;y

  printf(",/",y->m,y->n);

  printf("}\n");

  free(x);

  }

  void main()

  {

  int n;

  printf("input n:");

  scanf("%d",&n);

  make(n);

  }

  试题四(15分,每空3分)

  阅读以下说明和C语言程序,将应填入___(n)___处的字句写在答题纸的对应栏内。

  [说明]

  本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:

  假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数

  key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:

  加密时从 S1 位置起顺时针计数,当数到第 key 个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第 key 个字符位置时,将原文中字符 C2 放入其中,并从环中除去该字符位置;依次类推,直至 n 个原文字符全部放入密文环中。由此产生的 S1S2...Sn 即为原文的密文。

  例如,当 Key=3 时,原文:this is a decoding system 的密文为:

  aotgnhedi ys d imietsnc ss

  当Key=4时,该原文的密文为:

  ssdtyd htegiasiscnm e ion

  #include

  #include

  typedef struct node

  { char ch;

  struct node *forward; /* Link to next node. */

  struct node *backward;/* Link to previous node.*/

  } CODE;

  int strlen(char *s)

  { int len = 0;

  while (*s++ != ’\0’ )

  len++;

  return( len );

  }

  char *decode(char *old,int key)

  { char *New; int length,count,i;

  CODE *loop,*p;

  length=strlen(old);

  loop=(CODE *) malloc( length*sizeof(CODE) );

  for ( i = 1;i

  { loop[i].forward = &loop[i+1];

  ___(1)___

  }

  loop[0].backward = &loop[length-1];

  loop[0].forward = &loop[1];

  loop[length-1].forward = loop;

  ___(2)___

  for ( p = loop,i = 0;i

  { for ( count = 1;count

  p= p->forward ;

  ___(3)___

  p->backward->forward = p->forward ;

  p->forward->backward = p->backward ;

  ___(4)___

  }

  New = ( char *)malloc( ( length+1 ) *sizeof(char) );

  for ( i=0;i

  ___(5)

  ___

  New[length]=’\0’;

  return (New);

  }

  void main()

  { char old[256];

  int key , num=0;

  printf("\nPlease input the telegraph: \n");

  while ( num<255 && ( old[num++] = getchar()) != ’\n’ );

  old [ (num==255)?num:num-1] = ’\0’;

  do

  { printf( "\nPlease input Key ( Key>1 ):" );

  scanf("%d",&key);

  } while ( key<=1 );

  printf( "\nThe decode of telegraph:’%s’ is:\n’%s’\n",old,decode( old,key ) );

  }

2016年计算机软件水平考试程序员模拟训练题.doc

本文来源:https://www.wddqw.com/z8Sx.html