1.二级C++语言程序设计上机考试包括基本操作、简单应用和综合应用。
2.C++上机操作主要是要求考生能够阅读和分析C++程序,能够采用面向对象的方法编写程序,能熟练使用Visual C++ 6.0集成开发环境编写和调试程序。
3.上机考试总时间为90分钟,满分100分,共有3种类型的考题:基本操作题、简单应用题、综合应用题。
4.基本操作题主要以改作题的形式出现,其出题范围主要是C++中有关类与对象的操作,如考核对象的定义、对象成员的访问方式等;简单应用题主要是考察考生编写应用程序的能力,如题目要求的功能实现某个函数的定义,或考核某种算法的C++实现等;综合应用题的出题范围主要集中在类和对象以及类的继承与派生这些知识点上。出题形式通常是要求考生按照题目要求将程序补充完整,并调试程序使之输出正确的结果。
例1 :使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误。
源程序文件main.cpp清单如下:
#include
class MyClass
{
public:
MyClass(int m)
{
member=m;
}
~MyClass(){}
int GetMember()
{
return member;
}
private:
int member;
};
MyClass Makeobject(int m)
{
MyClass *pMyClass=new MyClass(m);
return *pMyClass;
}
int main()
{
int x=7;
/*********found**********/
MyClass *myobj=Makeobject(x);
/*********found**********/
cout< <″My object has member″< <&NBSP;
return 0;
分析:本题考核对象指针的应用,属于改错题。
程序中出现了2个出错标识符,说明此程序有2处错误。
第1处错误:MyClass*myobj=Makeobject(x);,myobj是对象指针,而函数Makeobject的返回值是类MyClass的对象,所以应改为:MyClass*my0bj=&Make0bject(x);。
第2处错误是:cout< <″My object has member″< <&NBSP;成员名;和(*对象指针名).成员名;,显然上述语句的对象指针的使用方式是错误的。
答案: 应改为:cout< <″My object has member″< GetMember()< <&NBSP; < <(*myobj).GetMember()<
请点击下方“下一页”翻页 第1页 共2页
[FS:PAGE]
例2 :请编写一个函数int find(char s[],char t[]),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值):否则返回-1。注意:用数组方式及两重循环来实现该函数。
注意:部分源程序已存在文件PROC2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数find的花括号中填写若干语句。
文件PROC2.cpp的内容如下:
#include
int find(char s[],char t[] );
const int MAXLINE=256;
int main()
{
char source[MAXLINE],target[MAXLINE];
cout< <″please input a string for searching:\n″;
cin.getline(source,[MAXLINE]);
cout< <″please input a string you want to find:\n″;
cin.getline(target,MAXLINE);
int intpos=find(source,target);
if(intpos>=0)
cout< <″Finding it,The target string is at index ″
< <&NBSP;
else
cout< <″Not finding it \n″;
return 0;
}
int find(char s[],char t[])
{
}
分析:本题是一道简单应用题。
函数int find(char s[],char t[])的功能是在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);否则返回-1。而且用数组方式及两重循环来实现该函数。
答案:
int find(char s[],char t[])
{
int i=0,j=0;
for( i=0;s[i]!=′\0′;i+ +)
{
if(t[0]= =s[i])
{
while(t[j]!=′\0′&&s[i+j]!=′\0′)
{
j+ +;
if(t[j]!=s[i+j])
break;
}
}
if(t[j]= =′\0′)
return i;
}
return -1;
}