1.二級(jí)C++語言程序設(shè)計(jì)上機(jī)考試包括基本操作、簡單應(yīng)用和綜合應(yīng)用。
2.C++上機(jī)操作主要是要求考生能夠閱讀和分析C++程序,能夠采用面向?qū)ο蟮姆椒ň帉懗绦?,能熟練使用Visual C++ 6.0集成開發(fā)環(huán)境編寫和調(diào)試程序。
3.上機(jī)考試總時(shí)間為90分鐘,滿分100分,共有3種類型的考題:基本操作題、簡單應(yīng)用題、綜合應(yīng)用題。
4.基本操作題主要以改作題的形式出現(xiàn),其出題范圍主要是C++中有關(guān)類與對(duì)象的操作,如考核對(duì)象的定義、對(duì)象成員的訪問方式等;簡單應(yīng)用題主要是考察考生編寫應(yīng)用程序的能力,如題目要求的功能實(shí)現(xiàn)某個(gè)函數(shù)的定義,或考核某種算法的C++實(shí)現(xiàn)等;綜合應(yīng)用題的出題范圍主要集中在類和對(duì)象以及類的繼承與派生這些知識(shí)點(diǎn)上。出題形式通常是要求考生按照題目要求將程序補(bǔ)充完整,并調(diào)試程序使之輸出正確的結(jié)果。
例1 使用VC6打開考生文件夾下的工程proj1,此工程包含一個(gè)源程序文件main.cpp,但該程序運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤。
源程序文件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;
分析: 本題考核對(duì)象指針的應(yīng)用,屬于改錯(cuò)題。
程序中出現(xiàn)了2個(gè)出錯(cuò)標(biāo)識(shí)符,說明此程序有2處錯(cuò)誤。
第1處錯(cuò)誤:MyClass*myobj=Makeobject(x);,myobj是對(duì)象指針,而函數(shù)Makeobject的返回值是類MyClass的對(duì)象,所以應(yīng)改為:MyClass*my0bj=&Make0bject(x);。
第2處錯(cuò)誤是:cout< <″My object has member″< <&NBSP;成員名;和(*對(duì)象指針名).成員名;,顯然上述語句的對(duì)象指針的使用方式是錯(cuò)誤的。
答案: 應(yīng)改為:cout< <″My object has member″< GetMember()< <&NBSP; < <(*myobj).GetMember()<
例2 請(qǐng)編寫一個(gè)函數(shù)int find(char s[],char t[]),該函數(shù)在字符串s中查找字符串t,如果找到,則返回字符串t在字符串s中的位置(整數(shù)值):否則返回-1。注意:用數(shù)組方式及兩重循環(huán)來實(shí)現(xiàn)該函數(shù)。
注意:部分源程序已存在文件PROC2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)find的花括號(hào)中填寫若干語句。
文件PROC2.cpp的內(nèi)容如下:
#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[])
{
}
分析: 本題是一道簡單應(yīng)用題。
函數(shù)int find(char s[],char t[])的功能是在字符串s中查找字符串t,如果找到,則返回字符串t在字符串s中的位置(整數(shù)值);否則返回-1。而且用數(shù)組方式及兩重循環(huán)來實(shí)現(xiàn)該函數(shù)。
答案:
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;
}
例3 請(qǐng)編寫一個(gè)函數(shù)void fun(int aa[],int n,int x),其中n表示數(shù)組aa中元素的個(gè)數(shù),函數(shù)的功能是:計(jì)算前x為的和并放在aa[x]中,aa數(shù)組中的元素值和x的值由主函數(shù)通過鍵盤讀入。
部分源程序如下:
#include
#define MAX 100
void main()
{
void fun(int aa[],int n,int x);
int bb[MAX],i,x,n;
cout< <″please enter the counter of the number:\n″;
cin> >n;
cout< <″please enter the number:\n″;
for(i=0;i
cin> >bb[i];
2.C++上機(jī)操作主要是要求考生能夠閱讀和分析C++程序,能夠采用面向?qū)ο蟮姆椒ň帉懗绦?,能熟練使用Visual C++ 6.0集成開發(fā)環(huán)境編寫和調(diào)試程序。
3.上機(jī)考試總時(shí)間為90分鐘,滿分100分,共有3種類型的考題:基本操作題、簡單應(yīng)用題、綜合應(yīng)用題。
4.基本操作題主要以改作題的形式出現(xiàn),其出題范圍主要是C++中有關(guān)類與對(duì)象的操作,如考核對(duì)象的定義、對(duì)象成員的訪問方式等;簡單應(yīng)用題主要是考察考生編寫應(yīng)用程序的能力,如題目要求的功能實(shí)現(xiàn)某個(gè)函數(shù)的定義,或考核某種算法的C++實(shí)現(xiàn)等;綜合應(yīng)用題的出題范圍主要集中在類和對(duì)象以及類的繼承與派生這些知識(shí)點(diǎn)上。出題形式通常是要求考生按照題目要求將程序補(bǔ)充完整,并調(diào)試程序使之輸出正確的結(jié)果。
例1 使用VC6打開考生文件夾下的工程proj1,此工程包含一個(gè)源程序文件main.cpp,但該程序運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤。
源程序文件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;
分析: 本題考核對(duì)象指針的應(yīng)用,屬于改錯(cuò)題。
程序中出現(xiàn)了2個(gè)出錯(cuò)標(biāo)識(shí)符,說明此程序有2處錯(cuò)誤。
第1處錯(cuò)誤:MyClass*myobj=Makeobject(x);,myobj是對(duì)象指針,而函數(shù)Makeobject的返回值是類MyClass的對(duì)象,所以應(yīng)改為:MyClass*my0bj=&Make0bject(x);。
第2處錯(cuò)誤是:cout< <″My object has member″< <&NBSP;成員名;和(*對(duì)象指針名).成員名;,顯然上述語句的對(duì)象指針的使用方式是錯(cuò)誤的。
答案: 應(yīng)改為:cout< <″My object has member″< GetMember()< <&NBSP; < <(*myobj).GetMember()<
例2 請(qǐng)編寫一個(gè)函數(shù)int find(char s[],char t[]),該函數(shù)在字符串s中查找字符串t,如果找到,則返回字符串t在字符串s中的位置(整數(shù)值):否則返回-1。注意:用數(shù)組方式及兩重循環(huán)來實(shí)現(xiàn)該函數(shù)。
注意:部分源程序已存在文件PROC2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)find的花括號(hào)中填寫若干語句。
文件PROC2.cpp的內(nèi)容如下:
#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[])
{
}
分析: 本題是一道簡單應(yīng)用題。
函數(shù)int find(char s[],char t[])的功能是在字符串s中查找字符串t,如果找到,則返回字符串t在字符串s中的位置(整數(shù)值);否則返回-1。而且用數(shù)組方式及兩重循環(huán)來實(shí)現(xiàn)該函數(shù)。
答案:
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;
}
例3 請(qǐng)編寫一個(gè)函數(shù)void fun(int aa[],int n,int x),其中n表示數(shù)組aa中元素的個(gè)數(shù),函數(shù)的功能是:計(jì)算前x為的和并放在aa[x]中,aa數(shù)組中的元素值和x的值由主函數(shù)通過鍵盤讀入。
部分源程序如下:
#include
#define MAX 100
void main()
{
void fun(int aa[],int n,int x);
int bb[MAX],i,x,n;
cout< <″please enter the counter of the number:\n″;
cin> >n;
cout< <″please enter the number:\n″;
for(i=0;i
cin> >bb[i];