#include
CInteger(int iNum=0) //6
{m_iNum=iNum;} //7
int operator int() //8 {return m_iNum;} //9
void Print() const //10 {cout< 第8行有错误。原因:类型转换函数没有返回值类型。 改正:去掉返回值类型int 6-1.下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。 #include CBase(int iBase=0):m_iBase(iBase){} //5 virtual void Show() const=0; //6 int Get() const //7 { return m_iBase; } //8 private: //9 int m_iBase; //10 }; //11 class CDerive:public CBase //12 { public: //13 CDerive(int iBase=0,int iDerive=0):CBase(iBase) //14 { m_iDerive=iDerive;} //15 void Show() const //16 { cout< - 21 - int m_iDerive; //19 }; //20 //21 void Print(const CBase obj) //22 { obj.Show();} //23 //24 int main(void) //25 { CDerive obj(10); //26 Print(obj); //27 return 0; //28 } //29 答案: 第22行出错 原因:抽象类不能用来直接作函数参数,但可以使用抽象类的引用作参数 改正:将第22行改为: void Print(const Cbase &obj) 6-2.要求用下面的程序实现动态多态性,但程序有错,请指出错误并改正之(指出行号,说明错误原因,写出改正后的语句)。 #include public: //4 void f(){cout<<\ //5 }; //6 //7 class CC:public AA //8 { //9 public: //10 virtual void f(){cout<<\ //11 }; //12 //13 int main() //14 { //15 AA aa,*p; //16 CC cc; //17 p=&cc; //18 p.f(); //19 return 0; //20 } //21 答案: 第5行中基类中虚函数f()前应加关键字virtual修饰,应改为: virtual void f(){cout<<\第19行p.f();应改为:p->f(); - 22 - 五、程序填空题 1-1.下面程序的功能是:输入三角形的三条边放在变量a,b和c中,判断它们能否构成三角形,若能,则判断是等边、等腰、还是其他三角形,在横线上填上适当内容。 #include cout<<\ 【1】 ; //输入三角形的三条边 if(a+b>c&&b+c>a&&c+a>b) { if( 【2】 ) //判断是否为等边三角形 cout<<\等边三角形!\\n\ else if( 【3】 ) //判断是否为等腰三角形 cout<<\等腰三角形!\\n\ else cout<<\其它三角形!\\n\ } else cout<<\不能构成三角形!\\n\} 答案:【1】 cin>>a>>b>>c 【2】 a==b&&b==c 【3】 a==b||a==c||b==c 1-2.以下程序功能是输出1000以内个位数为6且能被3整除的所有数。请填空。 #include { int i,j; for(i=0; 【1】 ;i++) //i的终值,即结束循环的条件 { j=i*10+6; if( 【2】 ) continue; //如果j是否不能给3整除 // j%3 cout< } } 答案:【1】 i<100 【2】 j%3 1-3.求n(n≥6)内的所有偶数表示为两个素数之和,图1为输入12的运行结果。补充完整以下程序。【提示:一个偶数n(n≥6)可以表示为1+(n-1), 2+(n-2),3+(n-3),?】 - 23 - 图1 #include { int num; cout<<\请输入一个整数N(N>=6):\\n\ cin>>num; for(int n=6; 【1】 ;n+=2) //n的终值,即结束循环的条件 // n<=num for(int i=3;i<=n/2;i+=2) if( 【2】 ) //判断i和n-i是否素数 } { { cout< } int isprime(int n) int i,sqrtm=(int)sqrt(n); for(i=2; 【3】 ;i++) //i的终值,即结束循环的条件 if( 【4】 )return 0; //如果n为素数,返回0 【5】 ; //否则返回1 } 答案:【1】 n<=num 【2】 isprime(i)&&isprime(n-i) 【3】 i<=sqrtm 【4】 n%i==0 【5】 return 1 3-1.完成下面类中成员函数的定义。 #include { public: Test(int,float); //声明构造函数 test(test&); //声明成员函数text,将test引用对象的值向num和x赋值 private: int num; float x; }; test::Test(int n,float f) //定义构造函数 { num=n; - 24 -