计算机二级考试C++每日一练(2016-1-22) |
第1题: 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成TC的构造函数,请改正注释1后的错误。 (2)完成func函数定义,请改正注释2后的错误。 (3)初始化CmyClass的成员变量Num3为4,请改正注释3后的错误。 (4)完成func函数,请改正注释4后的错误。 输出的结果为 Num1=12 Num2=18 Num3=16 Num1=4 Num2=2 Num3=19 注意:除在指定位置添加语句之外,不要改动程序中的其他内容。 试题程序: #include classTC { public: //********1******** TC(inti,intj) { Numl=i; Num3+=i: } voiddisplay() { cout<<"Num1="< cout<<"Num2="< cout<<"Num3="< } voidAddNum(inti) { Num3+=i; } private: intNum1; constintNum2; staticintNum3; //********2******** }; //********3******** voidfunc() { TCobj(1,2); obj.Num1=4; //********4******** obj.AddNum(); ohj.display(); } voidmain() { TCmyObj(12,18); myObj.display(); rune(); return; } |
【分析题】: |
第2题: 程序改错 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 150 200 注意:错误的语句在//******error******的下面,修改该语句即可。 提示:定义Numl为一个整型数据位长的变量。 试题程序: #include //******error****** struct { //******error****** intNuml:1; intNum2; } MyStruct; voidmain() { MyStructmstr; mstr.Num1=150; mstr.Num2=15; //******error****** int*ptr=&mstr.Numl; cout<<*ptr< cout<<*ptr< |
【分析题】: |
第3题: 改错题 使用VC6打开考生文件夹下的工程kt6_1,此工程包含一个源程序文件kt6_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下: Constructor2 Constructor1 i=0 i=10 Destructor 源程序文件kt6_1.cpp清单如下: #include classCSample { inti; public: CSample(){cout<<"Constructor1"< CSample(intval){cout<<"Constructor2"< ~CSample(){cout<<"Destructor"< voiddisp(); }; /**********found**********/ voiddisp() {cout<<"i="< voidmain() { CSample*a,b(10); /**********found**********/ a->disp(); /**********found**********/ b->disp(); } |
【分析题】: |
第4题:改错题 使用VC6打开考生文件夹下的工程kt7_1,此工程包含一个源程序文件kt7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下: Constructor1 Constructor1 Constructor1 Destructor Constructor2 Destructor x=0 x=5 Destructor Destructor 源程序文件kt21_1.cpp清单如下: #include classB {intx; public: B(){x=0;cout<<"Constructor1"< B(inti){x=i;cout<<"Constructor2"< ~B(){cout<<"Destructor"< /**********found**********/ ~B(inti){cout< voidprint(){cout<<"x="< voidmain() {B*ptr; ptr=newB[2]; /**********found**********/ ptr[0]=B(0); ptr[1]=B(5); /**********found**********/ for(inti=0;i<2;) ptr[i].print(); delete[]ptr;} |
【分析题】: |
第5题: 改错题(20分) 【题目】 以下程序的功能是:判断一个已排序的整型数组中是否存在元素值与其下标值相等(下标从0开始)的元素。如果存在,则输出其中一个该类元素的值(可能存在多个满足条件的元素) 正确程序的输出如下: 第3个元素值与其下标值相等 含有错误的源程序如下: #include int index_search(int x[n],int n) { int first=0; int last=n-1; int middle,index; index=-1; while(first<=last){ middle=(first+last)/2; if(x[middle]=middle){ index=middle; break; } else if(x[middle]>middle) last=middle-1; else first=middle+1; } return index; } void main() { int a[]={-1,0,1,3,8}; int result=index_search(a,sizeof(a)); if(result==-1) cout<<"第"< else cout<<"不存在下标值等于元素值的元素"< } 【要求】 1.把上述程序录入到文件myfa.cpp中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。程序中的注解可以不输入。 2.改错时,可以修改语句中的-部分内容,增加少量的变量说明、函数原型说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。 3.改正后的源程序文件myra.cpp必须放在T盘根目录下,供阅卷用。 |
【分析题】: |
第6题:试定义一个时间类time,具体要求如下: (1)私有数据成员。 •int h,m,s:分别表示时、分和秒。 •char *str_t:存放时间的字符串,格式为"hh:mm:ss",即"时:分:秒"。 (2)公有成员函数。 •time(int hh=0,int mm=0,int ss=0):构造函数,利用参数hh、mm和ss分别初始化成员h、m和s,并为字符串str_t分配9个字节的动态存储空间。要检查参数hh、mm和ss的合法性,即0≤hh<24,0≤mm<60,0≤ss<60,如果不合法,则采用相应的缺省参数值。 •~time():析构函数,撤销str_t所占用的动态存储空间。 •void convert():利用全局函数itoa()将成员h、m和s转换为字符串"hh:mm:ss"的形式,并存储在str_t中。 •void set_t(int hh,int mm,int ss):利用参数hh、mm和ss分别设置成员h、m和s的值,同时调用成员函数convert()设置成员str_t。注意检查参数的合法性。 •void print():输出字符串str_t,按输出示例中的格式输出时间。 (3)char *itoa(int n):全局函数,将整数n转换为字符串形式并返回。只考虑n至多为两位数的情形:当n为一位数时,如n=2,将n转换为"02"的形式;当n为两位数时,如n=59,将n转换为"59"的形式。 (4)在主函数中对该类进行测试。 输出示例: 00:00:00 12:05:30 【要求】 源程序文件名必须为myfb.cpp,并放在T盘根目录下,供阅卷用。 |
【分析题】: |
第7题:以下程序的功能是:求满足以下条件的所有三位数:(1)该三位数是某一个二位数的平方:(2)该三位数的个位数、十位数和百位数各不相同,即l到9这九个数字在该数中至多只允许出现一次.要求每行输出五个数。例如,满足以上条件的所有三位数有13个,分别为: 169 196 256 289 324 361 529 576 625 729 784 841 961 [程序](4分) #include <iostream.h> int f(int y) //y若满足条件,返回1:否则返回O { int i,j,k; i=y%10; //求个位数 j=___(23)___ ; //求十位数 k=y/100; if( ___(24)___) //判是否有相同的数字 return 0; for(i=11:i<=31:i++) //因32.32=1024,已超过三位数 if(___(25)___) return 1; return 0; } void main(void) { int x[22]={0},count=O; for(int i=102:i<987;i++){ if(f(i)){ ___(26)___ ; count++; } } for(i=0;i<count;i++){ cout<<x[i]<<’\t’; if((i+1)%5==0)cout<<’\n’; } cout<<’\n’<<“共有:”<<count<<“个三位数满足条件.\n”; } |
【分析题】: |
第8题:函数模板的概念、定义与应用? |
【分析题】: |
第9题:列举几种模板实参不能省略的情况? |
【分析题】: |
第10题:函数模板的定制? |
【分析题】: |