全国计算机等级考试四级笔试样卷软件测试工程师

来源:计算机等级考试    发布时间:2012-08-27    计算机等级考试视频    评论


  论述题3:针对以下C语言程序,请按要求回答问题(18分)
  已知link.c源程序如下:
  /*link.c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/
  #include
  #include
  typedef struct list_node *list_pointer; //定义链表指针
  typedef struct list_node{//定义链表结构
  int data;
  list_pointerlink;
  }list_node;
  //用到的操作函数:
  list_pointer create();//建立一个单向链表
  void insert(list_pointer *p_ptr, list_pointer node);  //在node后加入一个新的节点
  void delete_node(list_pointer *p_ptr, list_pointer trail, list_pointer node);
  //删除前一个节点是trail的当前节点node
  void print(list_pointer ptr);  //打印链表节点中的值
  list_pointer invert(list_pointer lead);  //反转链表
  int main()
  {
  list_pointerptr=NULL;
  list_pointernode, trail;
  list_pointer*p = &ptr;
  int choose, location, i;
  printf("you should create a link first:/n");
  //建立一个单向链表:
  ptr=create();/* ptr 指向链表的第一个节点 */
  print(ptr);
  //根据用户的不同选择进行相应的操作:
  printf("input number 0, you can quit the program/n");
  printf("input number 1, you can insert a new node to link/n");
  printf("input number 2, you can delete a node from the link/n");
  printf("input number 3, you can invert the link/n");
  printf("please input your choice/n");
  scanf("%d", &choose);
  while(choose!=0){
  switch(choose){
  case 1:
  printf("you will insert a node to the link/n");
  printf("please input the location of the node:/n");
  scanf("%d", &location);
  node = ptr;
  i = 1;
  while(i
  node = node->link;
  i++;
  }
  insert(p, node);/* p为指向ptr的指针 */
  print(ptr);
  break;
  case 2:
  printf("you will delete a node from the link/n");
  printf("please input the location of the node:/n");
  scanf("%d", &location);
  node = ptr;
  if(location ==1)
  trail = NULL;
  trail = ptr;
  i = 1;
  while(i
  trail = trail->link;
  i++;
  }
  node = trail->link;
  delete_node(p, trail, node);
  print(ptr);
  break;
  case 3:
  printf("you will invert the link/n");
  ptr = invert(ptr);
  print(ptr);
  break;
  default:
  break;
  return -1;
  }
  printf("please input your choice/n");
  scanf("%d", &choose);
  }
  return 0;
  }
  //根据用户的输入数值建立一个新的单向链表:
  list_pointer create()
  {
  int i, current, length;
  list_pointerp1, p2, head;
  printf("please input the node number of the link:/n");
  scanf("%d", &length);
  printf("the number of the link is : %d/n", length);
  printf("please input the data for the link node:/n");
  i =0;
  p1= p2= (list_pointer) malloc(sizeof(list_node));
  head = p1;
  for(i = 0; i
  scanf("%d", ¤t);
  p1->data = current;
  p2->link = p1;
  p2 = p1;
  p1 = (list_pointer) malloc(sizeof(list_node));
  }
  p2->link = NULL;
  return head;
  }
  ……
  (1)画出主函数main的控制流程图。(10分)
  (2)设计一组测试用例,尽量使main 函数的语句覆盖率能达到100% 。如果认为该函数的语句覆盖率无法达到100% ,需说明原因。(8分)

上一页234下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答