计算机二级考试c++上机考什么

我想参加C++的二级考试,报名表上说是机试,请问一下具体考什么

二级考试分笔试和机试,笔试我将我自己总结的考试大纲分享给你吧,你要去买本计算机二级考试的书(市面上多的是)按照大纲复习。值得注意的是笔试只有选择题和填空题,你可以在网上搜索“C++二级上机模拟”的软件可以自动生成题库你可以试试,提前有个体型的了解。机试分三大题,第一题是改错,第二题是编程,第三题是综合,我给你贴个模拟试题吧:
(还有什么其他问题可以问我,我给你解答,因为本人也才考完C++二级,现在准备三级了,呵呵,祝你顺利通过!)

笔试考试大纲

公共基础知识部分30分(公共基础是另外一本书)

专业语言部分 70分

C++语言程序设计
基本要求
1. 掌握C++语言的基本语法规则。
2. 熟练掌握有关类与对象的相关知识。
3. 能够采用面向对象的编程思路和方法编写应用程序。
4. 能熟练使用Visual C++6.0集成开发环境编写和调度程序。
考试内容
一、 C++语言概述
1. 了解C++语言的基本符号。
2. 了角C++语言的词汇(保留字、标识符、常量、运算符、标点符号等)。
3. 掌握C++程序的基本框架(结构程序设计框架、面向对象程序设计框架等)。
4. 能够使用Visual C++ 6.0集成开发环境编辑、编译、运行与调度程序。
二、 数据类型、表达式和基本运算
1. 掌握C++数据类型(基本类型,指针类型)及其定义方法。
2. 了解C++的常量定义(整型常量,字符常量,逻辑常量,实型常量,地址常量,符号常量)。
3. 掌握变量的定义与使用方法(变量的定义及初始化,全局变量,局部变量)。
4. 掌握C++运算符的种类、运算优先级和结合性。
5. 熟练掌握C++表达式类型及求值规则(赋值运算,算术运算符和算术表达式,关系运算符和关系表达式,逻辑运算符和逻辑表达式,条件运算,指针运算,逗号表达式)。
三、 C++的基本语句
1. 掌握C++的基本语句,例如赋值语句、表达式语句、复合语句、输入、输出语句和空格语句等。
2. 用if语句实现分支结构。
3. 用switch语句实现多分支选择结构。
4. 用for语句实现循环结构。
5. 用while语句实现循环结构。
6. 用do…while语句实现循环结构。
7. 转向语句(goto,continue,break和return)。
8. 掌握分支语句和循环语句的各种嵌套使用。
四、 数组、指针与引用
1. 掌握一维数组的定义、初始化和访问,了解多维数组的定义、初始化和访问。
2. 了解字符串与字符数组。
3. 熟练掌握常用字符串函数(strlen,strcpy,streat,strcmp,strstr等)。
4. 指针与指针变量的概念,指针与地址运算符,指针与数组。
5. 引用的基本概念,引用的定义与使用。
五、 掌握函数的有关使用
1. 函数的定义方法和调用方法。
2. 函数的类型和返回值。
3. 形式参数与实在参数,参数值的传递。
4. 变量的作用域、生存周期和存储类别(自动、静态、寄存器,外部)。
5. 递归函数。
6. 内联函数。
7. 带有缺省参数值的函数。
六、 熟练掌握类与对象的相关知识
1. 类的定义方式、数据成员、成员函数及访问权限(public,private,protected)。
2. 对象和对象指针的定义与使用。
3. 构造函数与析构函数。
4. 静态数据成员与静态成员函数的定义与使用方式。
5. 常数据成员与常成员函数。
6. This指针的使用。
7. 友元函数和友元类。
8. 对象数组与成员对象。
七、 掌握类的继承与派生知识
1. 派生类的定义和访问权限。
2. 继承基类的数据成员与成员函数。
3. 基类指针与派生类指针的使用。
4. 虚基类。
八、 了解多态性概念
1. 虚函数机制的要点。
2. 纯虚函数与抽象基类,虚函数。
3. 了解运算符重载。
九、 模板
1. 简单了解函数模板的定义和使用方式。
2. 简单了解类模板的定义和使用方式。
十、 输入输出流
1. 掌握C++流的概念。
2. 能够使用格式控制数据的输入输出。
3. 掌握文件的I/O操作。
考试方式
1. 笔试:90分钟,满分100分,其中含公共基础知识部分的30分。
2. 上机操作:90分钟,满分100分。
上机操作包括:
(1) 基本操作。
(2) 简单应用。
(3) 综合应用。

机试第一题:
请使用VC6打开考生文件夹下的工程proj1,该工程含有一个源程序文件proj1.cpp。其中每个注释"//ERROR ***********found*************"之后的一行有语句存在错误。请修改这些错误,使程序的输出结果为:1 2 3 4 5 6 7 8 9 10

注意:只需修改注释"//ERROR ***********found**********"的下一行语句,不要改动程序中的其它内容。
// proj1.cpp
#include <iostream>
using namespace std;

class MyClass {
public:
MyClass(int len)
{
array = new int[len];
arraySize = len;
for(int i = 0; i < arraySize; i++)
array[i] = i+1;
}

~MyClass()
{
// ERROR **********found**********
delete array[];
}

void Print() const
{
for(int i = 0; i < arraySize; i++)
// ERROR **********found**********
cin << array[i] << ' ';

cout << endl;
}
private:
int *array;
int arraySize;
};

int main()
{
// ERROR **********found**********
MyClass obj;

obj.Print();
return 0;
}

机试第二题:
请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2.cpp。其中定义了类Set和用于测试该类的主函数main。类Set是一个用来描述字符集合的类,在该字符集合中,元素不能重复(将'a'和'A'视为不同元素),元素最大个数为100。为该类实现一个构造函数Set(char *s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符c是否在一个集合中,若在,则返回true,否则返回false。
构造函数Set和成员函数InSet的部分实现代码已在文件proj2.cpp中给出,请在标有注释"//TODO:"的行中添加适当的代码,将这两个函数补充完整,以实现其功能。

提示:在实现构造函数时,可调用InSet函数来判断一个字符是否已经在集合中。

注意:只需在指定位置编写适当代码,不要改动程序中的其他内容,也不能删除或移动"//*******************found************"。
// proj2.cpp
#include <iostream>
using namespace std;

const int MAXNUM = 100;

class Set {
private:
int num; // 元素个数
char setdata[MAXNUM]; // 字符数组,用于存储集合元素
public:
Set(char *s); // 构造函数,用字符串s构造一个集合对象
bool InSet(char c); // 判断一个字符c是否在集合中,若在,返回true,否则返回false
void Print() const; // 输出集合中所有元素
};

Set::Set(char *s)
{
num = 0;
while (*s){
if (!InSet(*s))
//**********found**********
_____________; // TODO: 添加一条语句,加入元素至集合中
num++;
s++;
}
}

bool Set::InSet(char c)
{
for (int i = 0; i < num; i++)
if (c==setdata[i])
//**********found**********
______________; // TODO: 添加一条语句,进行相应处理

return false;
}

void Set::Print() const
{
cout << "Set elements: " << endl;
for(int i = 0; i < num; i++)
cout << *(setdata+i) << ' ';
cout << endl;
}

int main()
{
char s[MAXNUM];
cin.getline(s, MAXNUM-1); // 从标准输入中读入一行
Set setobj(s); // 构造对象setobj
setobj.Print(); // 显示对象setobj中内容
return 0;
}

机试第三题:请使用VC6打开考生目录下的工程文件proj3。此工程包含一个源程序文件proj3.cpp,其中定义了用于表示二维向量的类MyVector;程序应当显示:(6,8)
但程序中有缺失部分,请按下面的提示,把下划线标出的三处缺失部分补充完整:
(1)在//**1** *************found***********的下方是构造函数的定义,它用参数提供的坐标对x和y进行初始化。
(2)在//**2** **************found***********的下方是减法运算符函数定义中的一条语句。两个二维向量相减生成另一个二维向量:它的X坐标等于两个向量X的坐标之差,它的Y坐标等于两个向量Y坐标之差。
(3)在//**3** ***************found***********的下方的语句的功能是使变量v3获得新值,它等于向量v1与向量v2之和。

注意:只需在指定位置编写适当的代码,不要改动程序中的其它内容,也不能删除或移动"*************found***************"。

// proj3.cpp
#include<iostream>
using std::ostream;
using std::cout;
using std::endl;

class MyVector{ //表示二维向量的类
double x; //X坐标值
double y; //Y坐标值
public:
MyVector(double i=0.0 , double j=0.0); //构造函数
MyVector operator+( MyVector j); //重载运算符+
friend MyVector operator-( MyVector i, MyVector j); //重载运算符-
friend ostream& operator<<( ostream& os, MyVector v); //重载运算符<<
};
//**1** **********found**********
___________________(double i , double j): x(i),y(j){}

MyVector MyVector::operator+( MyVector j) {
return MyVector(x+j.x, y+j.y);
}

MyVector operator-( MyVector i, MyVector j)
{//**2** **********found**********
return MyVector(__________________);
}

ostream& operator<<( ostream& os, MyVector v){
os << '(' << v.x << ',' << v.y << ')' ; //输出向量v的坐标
return os;
}

int main()
{
MyVector v1(2,3), v2(4,5), v3;
//**3** **********found**********
v3=___________;
cout<<v3<<endl;
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-13
1、改错题

1)标点符号,如“;”“::”“{}”“:”等;

对于“;”常出现与类定义的结尾,在语句结尾都要有“;”,在一些特殊语句结束后也要用“;”,如结构体、do.....while()循环、枚举还有一个就是类,定义完以后一定要有分号;

对于:"::"常在类外定义类的成员函数时要加类名和该符号,而常见的错误是没有,或者将" ::" 写成“:”;而对于“:”常出现的错误是将其写为“::”,用“:”的地方常在参数列表,这两个符号极易用混;

对于花括号,常在类或者函数定义完后没有而出错。

2)成员初始化:一般成员初始化:1、直接利用构造函数,利用赋值初始化;

2、利用初始化列表初始化;

利用列表程序如下(假设类A,含成员a):

A(int num):a(num){}

特殊成员:1、常对象成员,其初始化必须用初始化列表

2、静态数据成员(即利用 static 修饰的成员),在类内声明,类外定义;规格如下:

class A{

static int num;

}

int A::num=0;

3)枚举类型使用规则:

有如下枚举例子:enum PLUS{n1,n2,n3,n4=6,n5,n6,n7};

使用时定义一个PLUS的对象,PLUS num=n1;此时num的值是n1的值,注意:n1的值是0,其后 面 的值为其前面的加一,遇到有赋值的,那个元素用所赋的值,其后面的元素为其当前值加一,如: n4=6;n5=7;等等,

4)等等
相似回答