logo - 刷刷题
下载APP
【简答题】

论述题 3 :针对以下 C 语言程序,请按要求回答问题( 18 分)
已知 link.c 源程序如下:
/*link.c 程序对单向链表进行操作 , 首先建立一个单向链表 , 然后根据用户的选择可以对其进行插入节点 、
删除节点和链表反转操作 */
#include
#include
typedef struct list_node *list_pointer; // 定义链表指针
typedef struct list_node{ // 定义链表结构
int data;
list_pointer link;
}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_pointer ptr=NULL;
list_pointer node, 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<location){
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<location){
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_pointer p1, 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 分)

举报
参考答案:
参考解析:
.
刷刷题刷刷变学霸
举一反三

【单选题】测试用例是一组()。

A.
测试用的输入数据以及对应的预期结果
B.
测试驱动程序
C.
测试数据
D.
测试程序及数据