case ’/’: if(b==0) {
cout<<\ exit(1); }
else return a/b;
default: cout<<\ exit(1); } }
功能:
2. IntNode* FindMax(IntNode *f) {
if(!f) return NULL; IntNode *p=f; f=f->next; while(f) {
if(f->data>p->data) p=f; f=f->next; }
return p; }
假定IntNode的类型定义为: struct IntNode {
int data; //结点值域 IntNode* next; //结点指针域 };
功能:
六、程序改错。请根据程序或函数模块的功能改写个别地方的错误(每小题6分,共6分)。
在下面的定义中,NODE是链表结点的结构,appendToList则是一函数,其功能是:在list所指向的链表的末尾添加一个新的值为x的结点,并返回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。 struct NODE{ int data; NODE *next; };
NODE* appendToList(NODE *list, int x){ //1行 NODE *p=new int; //2行 p->data=x; //3行 p->next=NULL; //4行
if(list==NULL) return p; //5行 NODE *p1=list; //6行 while(p1->next!=NULL) p1=p1->next; //7行 p1=p; //8行 return list; }
错误行的行号为______和________。
分别改正为______________和______________。
七、编程(每小题8分,2小题,共16分) 1. 编一程序求出满足不等式1?111?????5的最小n值并输出。 23n
2. 根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<\ MS=ms; n=nn;
a=new int[MS];
for(int i=0; i int MaxMin(int& x, int& y); //从数组a的前n个元素中求出 //最大值和最小值,并分别由引用参数x和y带回, //同时若n大于0则返回1,否则返回0。 }; 试题参考解答: 一、单项选择 1. A 2. B 3. D 4. C 5. A 6. A 7. B 8. A 9. C 10. D 11. C 12. B 二、填空 1. C 2. 6 30 3. false (或0) 4. if 5. 10 19 6. 栈 7. 25 8. ple 9. 设计 实现 10. this 11. 构造函数 12. 1 13. 1 14. 成员函数 15. 虚基类 三、程序填充 1. (1) x<3 (或x<=2) (2) x%i==0 (3) i++ (或++i或i=i+1或i+=1) 2. (1) i (2) table[i] (3) L=p 3. (1) top==ARRAY_SIZE-1 (或Depth()==ARRAY_SIZE) (2) top++(或++top) (3) newElem 四、写出程序或程序段的运行结果 1. 11 14 switch end. 2. year:4 month:5 day:3 3. Point:3 4 Text con! Point with Text con! Point with Text des Text des! Point des! 五、指出程序或函数的功能 1. 以参数a和b为运算对象,以参数op为四则算术运算符,求出运算结果并返回。 2. 从表头指针f指向的、由IntNode类型的结点所构成的链表中查找出data域的值最大的结点并返回指向该结点的指针。 六、程序改错。请根据程序或函数模块的功能改写个别地方的错误。 错误行的行号: 2 8 分别改正为: NODE *p=new NODE; p1->next=p; 七、编程 #include int i=0; double s=0; while(s<5) s+=double(1)/++i; cout<<\ } 若采用for循环编写程序,则如下所示: #include int i; double s=0; for(i=1; s<5; i++) s+=1.0/i; cout<<\ //注意:此i-1的值为所求的n值 } 2.int AA::MaxMin(int& x, int& y) { int mx,my; mx=my=a[0]; for(int i=1; i x=mx; y=my; if(n>0) return 1; else return 0; }