1、0表示整数常量,值为0;0表示ASCII码值为0的字符常量;0表示ASCII码值为48的字符常量;“0”为字符串常量,其中包含0和0两个字符。10.说明下面程序中存在的问题#includeint main() int arr10, *p=arr; int i; for( ; p*p; for(; ap;+arr) cout*arr0; return 0;arr为数组名,对应地址不可修改,不能应用+arr运算。11.有如下定义,请写出访问a23元素的不同方法int a45;int (*p)5 = a;a23、p23、*(a2+3)、*(p2+3)、*(*(a+2)+3)、*(*(p+2)+3)1
2、.1阅读程序1.写出下面程序的运行结果。#include using namespace std; double numOne = ; int numTwo = 3; double quotient = numOne/2; coutQuotient: quotientendl; quotient = numTwo/2;2.写出下面程序的运行结果。 int number = 103; int digit, tens, hundreds; digit = number %10; tens = (number/10)%10; hundreds = (number/100)%10;Hundreds:h
3、undreds, Tens: tens, Digit:digitgrade; if(grade=85)Excellentn else if(70=grade= baseLine ) return true; return false;bool check(int score, int baseLine = 60); int score=65; if( check(score) = true)Passed!nFailed! if( check(score, 70) = true)5.写出下面程序的运行结果。int fun(int a);double fun(double a);char fun(
4、char a);fun(3)funfun(A)=a&z) result=a-32;Z result=a+32; return result;6.写出下面程序的运行结果。int gcd(int m, int n) if(n=0) return m; return gcd(n, m%n);1:gcd(20,8)2:gcd(36,64) & wordi= ) wordi-= 32;Upper case:word8.写出下面程序的运行结果,假定输入Hello123_WorldEnter a string: int pos=0; if(wordi9 wordpos=wordi; +pos; wordpo
5、s=result:9.写出下面程序的运行结果。 int i,j; for(i=0;i5;i+) for(j=i;jj+) cout * cout return 0;10.写出下面程序的运行结果。int sum( int a, int b=1, int c=3 ) return a+b+c; int sum(int a, int b=3, int c=4);sum (2)sum (2,5)sum (2,3,6)11.写出下面程序的运行结果。char & elem(char *s, int n) return sn; char str=HelloWorld elem(str,1)= str12.写
6、出下面程序的运行结果。int x=10; int x=15;x:13.写出下面程序的运行结果。void xhg(int *a,int *b) int *tmp; tmp=b; b=a; a=tmp;*a *b int x(5),y(4); xhg(&x,&y);y14.写出下面程序的运行结果。void xhg(int &a,int &b) int tmp;ab xhg(x,y);15.写出下面程序的运行结果。int ff(int *a,int size) if(size=1) return a0; return asize-1+ff(a,size-1); int a5=1,2,3,4,5;“r
7、esult:”ff(a,5)1) f(s,n-1); f(animal,6);hello,3);17.写出下面程序的运行结果。int func(int data,int size) int a=data0; int b=data0; for(int i=1;size;+i) if(dataia) a=datai; if(dataib) b=datai; return a-b; int a=9,3,2,-1,8,0,4;func(a,7)func(a+2,4)19.写出下面程序的执行结果。int fun(int interval) int sum=0, i=0; for(i=0; i100; i
8、+=interval) sum+=i; return sum;Result:fun(2)20.写出下面程序的执行结果。double func( double pData , int size); double array=, , 6, ;func(array, 4)func(array, 3)double func( double pData , int size) double result=0; result+=pDatai; result /= size;2面向对象程序设计2.1基础概念1、定义形式如下的类,C+编译器自动为该类产生的四个缺省函数是什么写出其原型。class MyClas
9、s public: void SetX(int);private: int x;无参构造函数,拷贝构造函数,析构函数,赋值运算符函数。MyClass();MyClass(const MyClass& );MyClass();MyClass& operator=(const MyClass&2、定义形式如下的类,写出C+编译器自动生成的拷贝构造函数和赋值运算符函数的定义。 a) x=; MyClass:operator=(const MyClass& return *this;3、拷贝构造函数在哪几种情况下会被调用1)当类的一个对象去初始化该类的另一个对象时;2)如果函数的形参是类的对象,调用函
10、数进行形参和实参结合时;3)如果函数的返回值是类对象,函数调用完成返回时。4、构造函数与普通成员函数相比有什么不同 1)构造函数是类的一种特殊成员函数,一般情况下,它是专门用来初始化数据成员的。2)构造函数的名字必须与类名相同,它不具有任何返回类型。构造函数在创建对象时由系统自动调用。5、创建派生类对象时,构造函数的调用顺序是什么1)先调用基类构造函数;2)按定义顺序初始化对象数据成员;3)最后调用本类的构造函数。6、哪几种情况必须用到初始化成员列表1)类的常量数据成员初始化;2)类的引用成员初始化;3)类的对象成员初始化,而该对象没有无参构造函数;4)基类成员初始化,而基类没有无参构造函数。
11、7、C+头文件中通常会包含哪些内容类的定义、常量定义、函数声明、全局变量声明8、什么是常对象常对象是指在任何场合都不能对其成员的值进行修改的对象。9、什么叫抽象类包含纯虚函数的类,不能定义抽象类对象,可以定义抽象类的指针或引用,指向或引用派生类对象。10、同类对象间是怎样实现数据共享的通过类的静态数据成员来实现。静态数据成员属于类,而不为某个对象所私有,所有实例对象共享类的静态数据成员。11、函数重载是什么意思它与虚函数的概念有什么区别1) 函数重载是相同作用域内存在多个同名的函数,编译系统在编译阶段通过函数参数个数、参数类型不同来区分该调用哪一个函数,即实现的是静态的多态性,但不能仅仅通过函
12、数返回值不同来实现函数重载。2) 虚函数在基类中通过使用关键字virtual来声明一个函数为虚函数,该函数的功能可能在将来的派生类中重新定义或者在基类的基础之上进行扩展,系统只能在运行阶段才能动态决定该调用哪一个函数,所以实现的是动态的多态性。12、函数重载与函数覆盖的区别1)函数重载是在相同作用域内,存在多个同名的函数,但函数参数或参数类型不同,调用函数时编译器通过实参类型匹配某个函数版本,属于静态多态性;2)函数覆盖指基类和派生类之间存在同名函数,派生类中的函数隐藏了基类的同名函数的现象。13、构造函数和析构函数是否可以被重载,为什么构造函数可以被重载,析构函数不可以被重载。因为构造函数可
13、以带多个参数,而析构函数不能带参数。14、分析正误:抽象类不能产生实例,所以不需要有构造函数。错。抽象类中可以包含数据成员,派生类对象初始化时需要通过抽象基类的构造函数完成对其数据成员的初始化。15、一个类的构造函数和析构函数什么时候被调用,是否需要手工调用构造函数在创建类对象的时候被自动调用,析构函数在类对象生命期结束时。构造函数和析构函不需要手工调用,由系统自动调用。16、构造函数和析构函数的调用顺序析构函数为什么要定义为虚函数答案:构造函数的调用顺序:基类构造函数对象成员构造函数派生类构造函数;析构函数的调用顺序与构造函数相反:派生类析构函数对象成员析构函数基类析构函数。析构函数定义为虚
14、函数是为了防止析构不彻底,造成内存泄漏。17、请说出类中private,protect,public三种访问限制类型的区别private是私有类型,只有本类中的成员函数才能访问;protect是保护型的,本类和子类成员函数可以访问;public是公有类型,本类和子类成员函数可以访问,类外部通过对象可以间接访问。18、Test是一种类类型,现要为其重载前置和后置+运算符,写出它们的原型。1)前置+:Test& operator+(); 2)后置+: operator+(int)19、说明组合和继承在复用代码方面的区别组合关系描述的是“有一种”关系,一个对象是另一个对象的一部分;继承关系描述的“是
15、一种”关系,实现对象的层次关系。20、指出Dog类定义中的错误。class Dog Dog() age=1; weight=10; Dog(int a,int w)age=a; weight=w; void play()const coutageweight+ const int age; int weight;1) age为常数据成员,不能在构造函数体内赋值,只能通过初始化列表完成初始化;2) play为常成员函数,不能修改数据成员的值。2.2阅读程序1、写出程序输出结果class Base void display() cout“Base display” class Derived : public Base void display() cout“Derived display”void display(Base & rr) (); Base b; Derived d; display(b); display(d);2、写出程序输出结果class Person Person() “Person构造函数! Person() “Person被析构!class Student : public Person Stude
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1