int func(int i) { if(i > 1) return i*func(i-1); else return 1; }
请问函数调用f(5)的返回值是多少()阶乘计算
A、5 B、15 C、20 D、120
5、请问以下说法,哪个是正确的()
A、每个类都有一个无参数的构造函数
B、每个类都有一个拷贝构造函数
C、每个类能有多个构造函数
D、每个类能有多个析构函数
6、用class关键字定义的类,其成员默认的访问属性为()
A、private
B、protected
C、public
D、无定义
7、类的成员有三种访问属性,分别是public、protected、private,子类能够访问的成员是()
A、都能访问
B、public和protected
C、public和private
D、protected和private
8、请问对一个排好序的数组进行查找,时间复杂度为()
A、O(n) B、O(lgn) C、O(nlgn) D、O(1)
9、以下二叉树:
|
|
class A { public: ~A(); }; A::~A() { printf("delete A "); } class B : public A { public: ~B(); }; B::~B() { printf("delete B "); }
请问执行以下代码
A *pa = new B();
delete pa;
输出的串是()A
A、delete A B、delete B C、delete B delete A D、delete A delete B
12、文件长度是一个大于0的整数,用变量unsigned file_length; 来表示,把文件分成块,每块的长度也是一个大于0的整数,用变量unsigned block_length; 来表示,则文件被分成的块数为()
A、file_length/block_length
B、file_length/block_length+1
C、(file_length+block_length-1)/block_length
D、(file_length-1)/block_length+1
13、整数int i = 0xFE78DA45; int k = 0xAC3189B2;则i^k的值为()
A、0x524953f7
B、0xAC308800
C、0xFE79DBF7
D、0X0000001
14、看以下代码:
class parent { public: virtual void output(); }; void parent::output() { printf("parent!"); } class son : public parent { public: virtual void output(); }; void son::output() { printf("son!"); }则以下程序段:
struct prime_number_node { int prime_number; prime_number_node* next; }; int calc_prime_number() { prime_number_node* list_head = new prime_number_node(); list_head->next = NULL; list_head->prime_number = 2; prime_number_node* list_tail = list_head; for(int number = 3 ; number < 100 ; number++) { int remainder; prime_number_node* cur_node_ptr = list_head; while(cur_node_ptr != NULL) { remainder = number%cur_node_ptr->prime_number; if(remainder == 0) { //1 } else { //2 } } if(remainder != 0) { prime_number_node* new_node_ptr = new prime_number_node(); new_node_ptr->prime_number = number; new_node_ptr->next = NULL; list_tail->next = new_node_ptr; //3 } } int result = 0; while(list_head != NULL) { result++; prime_number_node* temp_ptr = list_head; list_head = list_head->next; //4 } return result; }
1、2、3、4四行代码依次为:break;
cur_node_ptr = cur_node_ptr->next;
list_tail = list_tail->next;
delete temp_ptr;
2、已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。
链表结点的结构类型定义如下:
struct node { int elem; node* next; }; void difference(node** LA , node* LB) { node *pa , *pb , *pre , *q; pre = NULL; //1 while(pa) { pb = LB; while( ) //2 pb = pb->next; if( ) //3 { if(!pre) *LA = ; //4 else = pa->next; //5 q = pa; pa = pa->next; free(q); } else { ; //6 pa = pa->next; } } }
1、2、3、4、5、6六行代码依次为
pa = *LA;
pb && pa->elem != pb->elem
pb
pa->next
pre->next
pre = pa;
代码中的指针pa用于指向集合A的元素;pb指向集合B的元素;临时指针q指向需要被删除的元素;pre用于实现删除时结点的链接,与pa保持所指结点的前后继关系。