考题
●试题四阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明4.1】假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:typedef struct{DateType data [MaxSize];int front[2],rear[2];}Queue2;对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数EnQueue(Queue2*Q,int i,DateType x)的功能是实现第i个队列的入队操作。【函数4.1】int EnQueue(Queue2*Q,int i,DateType x){∥若第i个队列不满,则元素x入队列,并返回1;否则,返回0if(i<0‖i1)return 0;if(Q-rear[i]==Q-front[ (1) ]return 0;Q-data[ (2) ]=x;Q-rear[i]=[ (3) ];return 1;}【说明4.2】函数BTreeEqual(BinTreeNode*T1,BinTreeNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时才被认为相等。已知二叉树中的结点类型BinTreeNode定义为:struct BinTreeNode{char data;BinTreeNode*left,*right;};其中data为结点值域,left和right分别为指向左、右子女结点的指针域,【函数4.2】int BTreeEqual(BinTreeNode*T1,BinTreeNode*T2){if(T1==NULL && T2==NULL)return 1;∥若两棵树均为空,则相等else if( (4) )return 0;∥若一棵为空一棵不为空,则不等else if( (5) )return 1;∥若根结点值相等并且左、右子树∥也相等,则两棵树相等,否则不等else return 0;}
考题
阅读下列函举说明和C代码,将应填入(n)处的字句写在对应栏内。【说明4.1】假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:typedef struct {DateType data [MaxSize];int front[2],rear[2];}Queue2;对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数.EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第i个队列的入队操作。【函数4.1】int EnQueue(Queue2 * Q, int i, DateType x){ /*若第i个队列不满,则元素x入队列,并返回1;否则,返回0*/if(i<0‖i>1) return 0;if(Q->rear[i]==Q->front[(1)]return 0;Q->data[(2)]=x;Q->rear[i]=[(3)];return 1;}【说明4.2】函数BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。已知二叉树中的结点类型BinTreeNode定义为:struct BinTreeNode {char data;BinTreeNode * left, * right;};其中dau为结点值域,leR和risht分别为指向左、右子女结点的指针域,【函数4.2】int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2){if(Ti == NULL T2 == NULL)return 1 /*若两棵树均为空,则相等*/else if((4))return 0; /*若一棵为空一棵不为空,则不等*/else if((5)) return 1; /*若根结点值相等并且左、右子树*//*也相等,则两棵树相等,否则不等*/else return 0;}
考题
试题五(共 15分)阅读以下关于 C语言及 C代码的叙述,回答问题 1至问题 3,将答案填入答题纸的对应栏内。【说明】在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:【C代码 1】是李工为了在嵌入式平台上开发一段可变参数函数,在X86 平台上实现的一个参数个数可变函数实例。【C代码 2】是王工在编写软件时,自己编写的内存拷贝函数。【C代码 3】是赵工编写的一段数据处理的程序,其中 fun()的含义为从已创建的一个单向链表中查找倒数第index 个节点。他的设计思路为:首先创建两个指针 ptrl,ptr2,并且都指向链表头,然后 ptrl向前走index 步,这样ptrl和 ptr2 之间就间隔 index 个节点,然后 ptrl和ptr2 同时向前步进,当 ptrl到达最后一个节点时,ptr2 就是倒数第 index 个节点了。ReverseList()为赵工编写的对已有单向链表进行逆序重排的函数。【C代码 1】long sum(int i,...){int *p,j;long s = 0;p=i+1;for(j=0;ji;j++)s+=p[j]return s;}long Sum = sum(3,l,2,3);【C代码 2】static int pent;……void *MyMemcpy(void * dest, const void* src, int n ){char *pDest = (char *)dest;char *pSrc = (char *)src;for (int i=0;in; i++) {*(pDest +i) = *(pSrc+i);} return dest;}【C代码 3】node *fun(node * head, int index){node *ptr1,*ptr2;int 1 = 0;ptr1 = head;ptr2 = head;if( head == NULL || head-next == NULL)return ptrl;while(iindex){(1)if(ptrl == NULL)return head;i++;}while(ptrl-next != NULL){ptrl = ptrl-next;(2) ;}return (3) ;}node* ReverseList(node *head){node *templ = NULL;node *temp2 = NULL;node *temp3 = NULL;if((head-next == NULL) || (head == NULL)){return head;} templ=head;temp3= templ-next;templ-next= NULL;while(temp3-next!=NULL){temp2 = temp3;temp3= temp3-next;(4) ;templ=temp2;}temp3-next= templ;retum (5)}【问题1】(3分)执行【C代码 1】后,Sum的值应为多少?请用十进制表示。【问题2】(7分)请问【C代码2】中 static的作用是什么?const的作用是什么?王工自己编写的内存拷贝函数安全吗?如存在缺陷,请指出缺陷在哪里。【问题3】(5 分)仔细阅读并分析【C代码 3】,填补其中的空(1)~(5)。
考题
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。【问题1] (6分)请给出满足100%DC(判定覆盖)所需的逻辑条件。【问题2] (10分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。【问题3](4分)请给出问题2中控制流图的线性无关路径。
考题
阅读下列说明和程序,回答问题l至问题3.将答案填入答题纸的对应栏内。【说明】在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中:【程序1】;实现两个变量的值的互换;【程序2】:完成某功能的C语言程序;【程序3】和【程序4】:是P、V操作的形式化定义,设S为信号量。在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量是解决进程间同步与互斥的有效方法。【程序1】【程序3】P操作的形式化定义P (S){(1):If(2) {阻塞该进程;将该进程插入信号量S的等待队列}}【程序4】V操作的形式化定义:V(S){(3)if(4) {从信号量s的等待队列中取出队首进程将其插入就绪队列:}}【问题1】(6分)执行【程序1】后,没有能够实现两个变量值的交换,为什么?请修改上述函数实现两个变量值的交换,要求函数无返回值,形式为:void swap(...)。请将答案填写在答题纸中对应的栏目。【问题2】(3分)请问【程序2】运行结果是什么?【问题3】(6分)请简述什么是临界资源?什么是临界区?请完成【程序3】和【程序4】的形式化定义,将应填入(n)处的内容写在答题纸的对应栏中。
考题
阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。
问题1:(6分) 请针对上述C程序,给出满足100%DC(判定覆盖)所需的逻辑条件。
问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
考题
阅读下列Java程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由Java语言编写的程序,按要求回答问题。
问题1:(2分) 请简述基本路径测试法的概念。
问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
考题
阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。
问题1:(5分)请给出满足100%DC(判定覆盖)所需的逻辑条件。
问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
考题
阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。
main( ){int i,n; //1for(i=1;i