}while(--i);
cout<
} 【参考答案】 【7】-4
8.下面程序的运行结果为【8】。
#include
void fun(int x=0,int y=0) {cout<
void main() {fun(5);} 【参考答案】 【8】50
9.C++语言支持的两种多态性分别是编译时的多态性和【9】的多态性。
【参考答案】 【9】运行时
10.cout.put(′A′);,还可以表示为【10】。
【参考答案】 【10】cout<<′A′;
11.将以下程序写成三目运算表达式是【11】。
if(a>b)max=a; else max=b; 【参考答案】 【11】max=(a>b)?a:b;
12.下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。
#include #include void main() { char a[]=″clanguage″,t;
int i,j,k;
?k=strlen(a);
?for(i=0;i<=k-2;i+=2)
?for(j=i+2;j<=k;【12】)
?if(【13】)
?{ t=a[i];a[i]=a[j];a[j]=t;}
?cout<
?cout<
【12】j+=2 【13】a[i]>=a[j]或a[i]>a[j]
13.请定义一个函数名为A,返回值为int,没有参数的纯虚函数的定义是【14】。
【参考答案】 【14】virtual int A()=0;
14.假设fin是一个文件流对象,则关闭文件的语句是【15】。
【参考答案】 【15】fin
上机部分 一、改错题
使用VC6打开考生文件夹下的工程kt5_1,此工程包含一个源程序文件kt5_1.cpp,但该程序运行有问
题,请改正程序中的错误,使程序的输出结果如下:
(1,2) 5,6 (6,9)
源程序文件kt5_1.cpp清单如下:
#include classA{ public: A(inti,intj){a=i;b=j;}
/****************found*******************/
voidMove(intx,inty){a+=x;b+=y}
voidShow(){cout<<\
private: inta,b; }; classB:privateA
{ public:
/****************found*******************/
B(inti,intj,intk,intl):(i,j){x=k;y=l;} voidShow(){cout< voidfun(){Move(3,5);} /****************found*******************/ voidf1(){Show();} private: intx,y; }; 【参考答案 voidmain() { Ae(1,2); e.Show(); Bd(3,4,5,6); d.fun(); d.Show(); d.f1(); } 【参考答案】 (1)将void Move( int x, int y) {a+=x;b+=y} 改为:void Move( int x, int y) {a+=x;b+=y;} (2)将B(int i,int j,int k,int l):(i,j) {x=k;y=l;} 改为:B(int i,int j,int k,int l):A(i,j) {x=k;y=l;} (3)将void f1(){Show();} 改为:void f1(){A::Show();} 【试题解析】 (1)主要考查对表达式定义规则的掌握,此处缺少一个“;”,任何一个表达式都应该以分号作为结束标志; (2)主要考查对派生类构造函数定义的掌握,参数列表中基类的成员应使用基类构造函数初始化,因此 必须向基类传递参数,传递时直接使用基类名; (3)主要考查对基类函数调用方法的掌握,为了调用基类的函数应该使用作用域符“::”以限定访问的位 置。 】 二、简单应用题 请编写一个函数intpattern_index(charsubstr[],charstr[]),该函数执行含通配符\的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位 置,否则返回值为0。要求使用for循环实现。输出结果如下: 子串起始位置:5 注意:部分源程序已存在文件kt5_2.cpp中。 请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。 文件kt5_2.cpp的内容如下: #include intpattern_index(charsubstr[],charstr[]) { } voidmain() { char*substring,*string; intsame; substring=\ string=\ same=pattern_index(substring,string); if(same) cout<<\子串起始位置:\