内容发布更新时间 : 2025/11/4 11:23:32星期一 下面是文章的全部内容请认真阅读。
show(p,n);
答案:[修改]f(p,n);
[解析]f(*p,n);f函数第一个参数是指针而调用时使用*p,*p表示p所指向的变量或对象,不是
地址即不是指针。
3. #include  cout<<*p< 答案:int * const p=&i;在指针变量前加const表示一个常指针即地址不能变化,它指向的变 量不能改变且定义时必须设置指向变量或对象的地址。 [修改]int *p=&i;  4. #include    cout<<*p< 答案:*p=i;指针即地址没有被赋值。 [修改]p=&i;  5. #include  void fun(int i,int j) {x=i;y=j;} void show()  {cout< void main() {A a1; a1.fun(2); a1.show(); }  答案:void fun(int i,int j)调用时有一个参数,形参有两个,可以使第二个带默认值。 [修改]void fun(int i,int j=0)  四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 完成下面类中成员函数的定义。  #include  str & operator=(____) {delete st; set(a.st); return *this; }  void show(){cout< void set(char *s)//初始化st {_____ strcpy(st,s); } };  void main()  {str s1(\s1.show(),s2.show(); s2=s1;  s1.show(),s2.show();}  答案:str &a,st=new char[strlen(s)+1];  [解析]对“=”运算符进行重载,调用时s2=s1,都是对象,所以形参使用对象的引用,不 要使用对象作为形参(产生临时对象)。使用strcpy进行字符的复制,st必须有一定的空间,空  间是strlen(s)+1(‘\0’作为结束符,strlen得到的长度不包括结束符)。  2. 一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用  show()函数输出num的值10。 #include  static int num; public: Test(int); void show(); };  _________  Test::Test(int n) {num=n;}  void Test::show() {cout< 答案:int Test::num=5;,t.show();  [解析]静态成员在类外初始化,注意它的格式。调用show输出。  3. 下面是一个三角形三边,输出其面积C++程序,在下划线处填上正确的语句。 #include  cout<<\________  if(a+b>c&&a+c>b&&c+b>a) {double l=(a+b+c)/2; _______  cout<<\} else  cout<<\}  void main() {area();}  答案:cin>>a>>b>>c;,double s=sqrt(l*(l-a)*(l-b)*(l-c));  [解析]输入三个边的长度,由公式得出三角形的面积double s=sqrt(l*(l-a)*(l-b)*(l-c));  4. 下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序  的输出为: Der1 called! Der2 called!  #include  _______________; };  class Der1:public Base {public:  void display(){cout<<\};  class Der2:public Base  {public:  void display(){cout<<\};  void fun(______________) {p->display();} void main() {Der1 b1; Der2 b2;  Base * p=&b1; fun(p); p=&b2; fun(p); }  答案:virtual void display()=0;,Base *p  [解析]抽象类有纯虚函数,派生类为display。结果fun函数用指针做参数。  5. 下面程序中用来求数组和。请在下面程序的横线处填上适当内容,以使程序完整,并使程序  的输出为:s=150。 #include  Arr():a(0),n(0){} Arr(int *aa, int nn) {n=nn;  a=new int[n]; for(int i=0;i ~Arr(){delete a;}  _____________; {return *(a+i);} };  void main()  {int b[5]={10,20,30,40,50}; Arr a1(b,5); int i=0,s=0;  _____________ s+=a1.GetValue(i); cout<<\}  答案:int GetValue(int i),for(;i<5;i++)  [解析]函数调用GetValue,由此可知要定义该函数,循环求和,循环5次。 五、程序分析题(本大题共4小题,每小题5分,共20分)