模拟试题

3773考试网计算机等级考试模拟试题正文

[组图]计算机四级考试笔试样卷之软件测试工程师

来源:fjzsksw.com 2010-8-10 15:38:56

 

论述题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分)

 

 

 

上一页  [1] [2] [3] [4] 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1