2019年计算机软考程序员模拟试题及答案1

时间:2017-11-14 11:05:51 来源:

【摘要】 软考网权威发布2019年计算机软考程序员模拟试题及答案1,更多2019年计算机软考程序员模拟试题及答案1相关信息请访问计算机软件水平考试网。

软考网权威发布2019年计算机软考程序员模拟试题及答案1,更多2019年计算机软考程序员模拟试题及答案1相关信息请访问计算机软件水平考试网。

试题一

  【说明】

  该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。

  例如:原文:You He Me

  I am a student.

  结果:Me He You

  student a am I

  原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

  【函数】

  #include

  #include

  #include

  #include

  char xx[50][80];

  int maxline=0;/*文章的总行数*/

  int ReaaDat(void);

  void WriteDat(void);

  void StrOL(void)

  {

  char*pl,*p2,t[80];

  int i;

  for(i=0;i  {p1=xx[i];t[0]=0;

  while(*p1)p1++;

  while(p1>=xx[i])

  {while(!isalpha(*p1)&&p1!=xx[i])p1--;

  p2=p1;

  while( (1) )p1--;

  if(p1==xx[i])

  if(isalpha(*p1))p1--;

  else if(!isalpha(*(p1+1)))break;

  p2++;

  (2) ;

  strcat(t,p1+1);

  strcat(t," ");

  }

  strcpy(xx[i],t);

  }

  }

  void main()

  {

  if( (3) ){

  printf("数据文件in.dat不能打开!\n\007");

  return;

  }

  StrOL();

  writeDat();

  getch();

  }

  int ReadDat(void)

  {

  FILE*fp;

  int i=0;

  char*p;

  if((fp=fopen("e:\\a\\in.dat","r"))==NULL)return 1;

  while(fgets(xx[i],80,fp)!=NULL){

  p=strchr(xx[i],′\n′);

  if(p)*p=0;

  i++;

  }

  maxline= (4)

  fclose(fp);

  return 0;

  }

  void WriteDat(void)

  {

  FILE*fp;

  int i;

  fp=fopen("e:\\a\\out6.dat","w");

  for(i=0;i< (5) ;i++){

  printf("%s\n",xx[i]);

  fprintf(fp,"%s\n",xx[i]);

  }

  fclose(fp);

  }

  【答案】

  (1)isalpha(*p1)&&p1!=xx[i]

  (2)*p2=0

  (3)ReadDat()

  (4)i

  (5)maxline

  试题二

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

  【流程图说明】

  下面的流程(如图1所示)用N-S盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有3个成员:data,left和right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。

  【算法说明】

  【流程图】

  将上题的排序二叉树中查找元素的过程用递归的方法实现。其中NODE是自定义类型:

  typedef struct node{

  int data;

  struct node*left;

  struct node*right;

  }NODE;

  【算法】

  NODE*SearchSortTree(NODE*tree,int e)

  {

  if(tree!=NULL)

  {

  if(tree->data  (4) ;∥小于查找左子树

  else if(tree->data  (5) ;∥大于查找左子树

  else return tree;

  }

  return tree;

  }

  【答案】

  (1)p=p->left

  (2)p=p->right

  (3)return P

  (4)return SearchSortTree(tree->left)

  (5)return SearchSortTree(tree->right)

  试题三

  假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。

  例如:链表初始元素为:

  (7,10,10,21,30,42,42,42,51,70)

  经算法操作后变为:

  (7,10,21,30,42,51,70)

  【函数1】

  void deleteklist(LinkList head)

  {

  LinkNode*p,*q;

  p=head->next;

  while(p!=head)

  {

  q=p->next;

  while( (1) )

  {

  (2) ;

  free(q);

  q=p->next;

  }

  p=p->next;

  }

  }

  【说明2】

  已知一棵完全二叉树存放于一个一维数组T[n]中,T[n]中存放的是各结点的值。下面的程

  序的功能是:从T[0]开始顺序读出各结点的值,建立该二叉树的二叉链表表示。

  【函数2】

  #include

  typedef struct node {

  int data;

  stuct node leftChild,rightchild;

  }BintreeNode;

  typedef BintreeNode*BinaryTree;

  void ConstrncTree(int T[],int n,int i,BintreeNode*&ptr)

  {

  if(i>=n) (3) ;∥置根指针为空

  else

  {

  ptr=-(BTNode*)malloc(sizeof(BTNode))

  ptr->data=T[i];

  ConstrucTree(T,n,2*i+1, (4) );

  ConstrucTree(T,n, (5) ,ptr->rightchild);

  }

  }

  main(void)

  {/*根据顺序存储结构建立二叉链表*/

  Binarytree bitree;int n;

  printf("please enter the number of node:\n%s";n);

  int*A=(int*)malloc(n*sizeof(int));

  for(int i=0;i

  for(int i=0;i

  ConstructTree(A,n,0,bitree);

  }

  答案:

  (1)q!=head &&q->data==p->data

  (2)p->next=q->next

  (3)ptr=NULL

  (4)ptr->leftchild

  (5)2*i+2

上一篇      下一篇
软件水平相关推荐 更多>>
2019年计算机软考程序员模拟试题及答案2 2019年计算机软考程序员选择模拟试题及答案
软件水平热点专题 更多>>
热点问答
国家公务员考试年龄限制是多少 公务员国考和省考考试内容有什么区别 函授大专学历能不能考公务员 国家公务员考试考点能自己选择吗 新闻学专业能报考2022年公务员考试吗 什么是联合培养研究生 什么是破格录取研究生 什么人不适合读研 研究生报名户口所在地填什么 研究生结业和毕业有什么区别
网站首页 网站地图 返回顶部
考必过移动版 https://m.kaobiguo.net