四川省计算机二级C,C++

四川省计算机二级C,C++
四川省计算机二级C,C++

1.11.改错题

使用VC6打开考生文件夹下的工程test1_1,此工程包含一个源程序文件test1_1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果如下:

Constructor called.

Default constructor called.

Area is 6

Area is 0

Area is 6

源程序文件test1_1.cpp清单如下:

#include

class RectAngle

{

private:

double ledge,sedge;

public:

RectAngle()

{

cout<<"Default constructor

called.\n";

}

RectAngle(double l,double s)

{

ledge=l;sedge=s;

cout<<"Constructor called.\n";

}

void Set(double l,double s)

{

ledge=l;sedge=s;

}

void Area()

{

cout<<"Area is "<

}

};

void main()

{

/*************** found ****************/

RectAngle Rect1(2,3);

RectAngle Rect2(1);

/**************** found ***************/

RectAngle Rect3;

Rect1.Area();

/**************** found ****************/

Rect2.ledge=0;Rect2.sedge=0;

Rect2.Area();

Rect3.Area();

}

【答案】

(1)错误:Rect2(1)正确:Rect2

(2)错误:Rect3正确:Rect3(Rect1)

(3)错误:Rect2.ledge=0;Rect2.sedge=0;正确:Rect2.Set(0,0);

1.22.简单应用题

请编写一个函数long Fibo(int n),该函数返回n的Fibonacci数,规则如下:n等于1或者2时,Fibonacci数为1,之后每个Fibonacci

数均为其前两个数之和,即:F(n)=F (n-1)+F(n-2)。

注意:请使用递归算法实现该函数。

部分源程序已存在文件test1_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数Fibo 的花括号中填写若干语句。如n=8时,结果是21。

文件test1_2.cpp清单如下:

#include

const int N=8;

long Fibo(int n);

void main()

{

long f=Fibo(N);

cout<

}

long Fibo(int n)

{

}

【答案】

long Fibo(int n)

{

if(n==1) return 1L;

else if(n==2) return 1L;

else

return Fibo(n-1)+Fibo(n-2);

}

1.33.综合应用题

使用VC6打开考生文件夹下的工程test1_3。此工程包含一个test1_3.cpp,其中定义了类circle和column,其中column类由circle 类protected派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类circle的保护数据成员r和area,它们都是double型的数据。请在注释"// ** 1 ** "之后添加适当的语句。

(2)添加类circle的无参数的构造函数,使circle对象的r默认值为0,请在注释"// ** 2 ** "之后添加适当的语句。

(3)添加派生类column构造函数的定义,传入的参数为double 型的height和radius,并将其分别赋值给数据成员h和基类的r,请在注释"// ** 3 ** "之后添加适当的语句。

(4)完成派生类column的成员函数print的定义,使其以格式"r=_area=_"先输出半径r和底面积area,再以格式"h=_vol=_"输出高h和体积vol的值,请在注释"// ** 4 ** "之后添加适当的语句。

输出结果如下:

r=1 area=3.1416

h=2 vol=6.2832

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test1_3.cpp清单如下:

#include

const double pi=3.1416;

class circle

{

protected:

// ** 1 **

public:

// ** 2 **

circle(double radius){ r=radius; }

void print()

{

area=r*r*pi;

cout<<"r="<

"<<"area="<

}

};

class column: protected circle

{

protected:

double h;

public:

// ** 3 **

void print()

{

// ** 4 **

}

};

void main()

{

column Col(1.0,2.0);

Col.print();

}

【答案】

(1)double r;

double area;

(2)circle( ){ r=0; }

(3)column(double radius, double

height):circle(radius){ h=height;}

(4)circle::print( );

cout<<"h="<

"<<"vol="<

2.11.改错题

使用VC6打开考生文件夹下的工程test2_1,此工程包含一个源程序文件test2_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

调用基类BASE的构造函数:1

调用基类BASE的构造函数:2

调用派生类A的构造函数:3

调用派生类A的析构函数

调用基类BASE的析构函数

调用基类BASE的析构函数

源程序文件test2_1.cpp清单如下:

#include

class BASE

{

public:

BASE(int i){cout<<"调用基类BASE的构造函数:"<

~BASE(){cout<<"调用基类BASE的析构函数

"<

/*****************found*****************/

}

class A: public BASE

{

public:

/*****************found*****************/

A(int a,int b):i(a),b(b)

{cout<<"调用派生类A的构造函

数:"<

~A(){cout<<"调用派生类A的析构函数"<

private:

BASE b;

};

void main()

{

/*****************found*****************/

BASE obj(1,2);

}

【答案】

(1)错误:类BASE的定义缺少";"正确:};

(2)错误:A(int a,int b):i(a),b(b)

正确:A(int a,int b):BASE(a),b(b)

(3)错误:BASE obj(1,2);正确:A obj(1,2);

2.22.简单应用题

请编写两个函数void sort(int &x, &y)和void sort(int x,int y,int z),实现对2个和3个元素的排序并在屏幕上输出排序结果(数字之间使用跳格)。

注意:部分源程序已存放在文件test2_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数的花括号中填写若干语句。

输出结果如下:

3 4

2 3 4

文件test2_2.cpp的内容如下:

#include

void sort(int &x,int &y)

{

/**1**/

}

void sort(int x,int y,int z)

{

/**2**/

}

void main()

{

int a=4,b=3,c=2;

sort(a,b);

sort(a,b,c);

}

【答案】

(1)void sort(int &x,int &y)

{

int t;

if (x>y)

{

t=x;

x=y;

y=t;

}

cout<

}

(2)void sort(int x,int y,int z)

{

int t;

if(x>y){ t=x; x=y; y=t;}

if(x>z){ t=x; x=z; z=t;}

if(y>z){ t=y; y=z; z=t;}

cout<

}

2.33.综合应用题

使用VC6打开考生文件夹下的工程test2_3。此工程包含一个test2_3.cpp,其中定义了类Stud,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类的公有数据成员no,name[10],其中no是int型的数据,name[10]是字符型一维数组。请在注释"// ** 1 ** "之后添加适当的语句。

(2)完成函数set的定义,分别将参数n,na的值赋给数据成员no,name。注意:请使用this指针完成对no的赋值,使用字符串函数实现对name和cname的赋值。请在注释"// ** 2 ** "之后添加适当的语句。

(3)完成类的成员函数disp的定义,使其按no,deg,name和cname的顺序输出类的数据成员的值,中间使用跳格符分隔,请在注释"// ** 3 ** "之后添加适当的语句。

输出结果如下:

1 李华95 990701

2 王东8

3 990702

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test2_3.cpp清单如下:

#include

#include

class Stud

{

public:

// ** 1 **

int deg;

char cname[10];

Stud(){}

void set(int n,char na[],int d,char cn[])

{

// ** 2 **

deg=d;

strcpy(cname,cn);

}

void disp()

{

// ** 3 **

}

};

void main()

{

Stud obj[2];

obj[0].set(1,"李华",95,"990701");

obj[1].set(2,"王东",83,"990702");

obj[0].disp();

obj[1].disp();

}

【答案】

(1)int no;

char name[10];

(2)this->no=n;

strcpy(name,na);

(3)

cout<

3.11.改错题

使用VC6打开考生文件夹下的工程test3_1,此工程包含一个源程序文件test3_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

A:a=5

display1:a=6

display2:a=5

源程序文件test3_1.cpp清单如下:

#include

class A

{

public:

/**********found**********/

A(){}

void printa(){cout<<"A:a="<

private:

int a;

/**********found**********/

class B;

};

class B

{

public:

/**********found**********/

void display1(A t)

{

(*t).a++;cout<<"display1:a="<<(*t).a<

}

void display2(A t)

{

t.a--;cout<<"display2:a="<

}

};

void main()

{

A obj1;

B obj2;

obj1.printa();

obj2.display1(&obj1);

obj2.display2(obj1);

}

【答案】

(1)错误:A(){} 正确:A(){a=5;}

(2)错误:class B;正确:friend class B;

(3)错误:void display1(A t)正确:void display1(A *t)

3.22.简单应用题

请编写函数fun,其功能是将两个两位数的正整数a,b合并形成

一个整数放在c中。合并的方式是将a数的个位和十位数依次在c数

千位和十位上,b数的十位和个位数依次放在c数的个位和百位。

注意:部分源程序以存在文件test3_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数fun

的花括号中填写若干语句。

文件test3_2.cpp的内容如下:

#include

void fun(int a ,int b,long *c)

{

}

void main()

{int a,b;

long c;

cout<<"Input a,b;"<

cin>>a>>b;

fun(a,b,&c);

cout<<"The result is:\n"<

}

【答案】

void fun(int a, int b , long *c)

{

*c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;

}

3.33.综合应用题

使用VC6打开考生文件夹下的工程test3_3,此工程包含一个源程序文件test3_3.cpp,其中建立了普通的基类base用于存储边的信息,建立派生类triangle和square,用于存储三角形和正方形的信息。请按要求完成下列操作,将类定义补充完整。

(1)定义基类base的保护数据成员x和y用于记录边的长度,

它们都是int型的数据。请在注释"//**1**"之后添加适当的语句。

(2)完成基类base默认构造函数的定义,把数据成员x和y分

别初始化为参数a和b的值,要求使用作用域符"::"。请在注释

"//**2**"之后添加适当的语句。

(3)完成派生类triangle函数disp的定义,使其以"三角形面积:"的格式将三角形的面积输出到屏幕上。请在注释"//**3**"之后添

加适当的语句。

(4)添写派生类square的默认构造函数的定义,使其调用基类的构造函数,记录下正方形的边长信息a,其缺省值为0。请在注释"//**4**"之后添加适当的语句。

输出结果如下:

三角形面积:200

正方形面积:400

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test3_3.cpp清单如下:

#include

class base

{

protected:

//**1**

public:

base(int a,int b)

{

//**2**

}

virtual void disp(){cout<<"调用base基类

"<

};

class triangle:public base

{

public:

triangle(int a,int b):base(a,b){};

void disp()

{

//**3**

}

};

class square:public base

{

public:

//**4**

void disp(){cout<<"正方形面

积:"<

};

void main()

{

base *p;

triangle t(20,20);

square s(20);

p=&t;

p->disp();

p=&s;

p->disp();

}

【答案】

(1)int x;

int y;

(2)base::x=a;

base::y=b;

(3)cout<<"三角形面积:"<

(4)square(int a=0):base(a,a){};

4.11.改错题

使用VC6打开考生文件夹下的工程test4_1,此工程包含一个源程序文件test4_1.cpp,但该程序在类的定义中存在问题,请改正类定义中的错误,使程序的输出结果如下:

a=3 b=13

a=5 b=13

注意:请勿修改主函数main中的任何内容。

源程序文件test4_1.cpp清单如下:

#include

class T

{

public:

/**********found**********/

T(int x){a=x; b+=x;}

/**********found**********/

void display(T c)

{ cout<<"a="<

private:

const int a;

static int b;

};

/**********found**********/

int b=5;

void main()

{

T A(3),B(5);

T::display(A);

T::display(B);

}

【答案】

(1)错误:T(int x){a=x; b+=x;} 正确:T(int x):a(x){b+=x;}

(2)错误:void display(T c)正确:static void display(T c)

(3)错误:int b=5;正确:int T::b=5;

4.22.简单应用题

常用字符串函数strcat(s1,s2)可将字符串s2添加到字符串s1的末端,但其使用必须保证字符串s1足够大,以便保存它自己的内容和字符串s2中的内容。请编写一个函数char *append(char *s1,char

*s2),其可将字符串s2添加到字符串s1的末端,而且不受s1空间大小的限制。请利用常用字符串函数实现。

常用字符串函数说明:

strcpy(to,form):将form字符串复制到to字符串;

strcat(s1,s2):将字符串s2添加到字符串s1的末端,但必须保证字符串s1足够大;

strlen(s):返回字符串s的长度;

注意:部分源程序已存在文件test4_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数append的花括号中填写若干语句。

输出结果如下:

this is a string.

文件test4_2.cpp的内容如下:

#include

#include

char *append(char *s1,char *s2)

{

}

void main()

{

char *s,*s1,*s2;

s1="this is ";

s2="a string.";

s=append(s1,s2);

cout<

}

【答案】

char *append(char *s1,char *s2)

{

char *tmp;

int length;

length=strlen(s1)+strlen(s2);

tmp=new char[length+1];

strcpy(tmp,s1);

strcat(tmp,s2);

return tmp;

}

4.33.综合应用题

使用VC6打开考生文件夹下的工程test4_3。此工程包含一个源程序文件test4_3.cpp,其对一个学校的教师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teacher作为person类的派生类。请按要求完成下列操作,将程序中的类定义补充完整。

(1)定义基类person的私有数据成员name和age,分别用于表示姓名和年龄,name为字符指针,age为int型的数据。请在注释"//**1**"之后添加适当的语句。

(2)完成基类person的重载构造函数person(char *n,int a)的定义,把数据成员name,age分别初始化为参数n,a的值,请在注释"//**2**"之后添加适当的语句。

(3)根据主函数main中对s1的声明,定义派生类student的构造函数。在注释"//**3**"之后添加适当的语句。

(4)完成派生类teacher成员函数void setinf(char *n,int a,char *d,char *l)的定义,其功能为记录教师的姓名、年龄、院系与职称信息。请在注释"//**4**"之后添加适当的语句。

输出结果如下:

刘雷(45)destructor

蒋军(23)destructor

注意:除在指定位置添加语句之外,请不要改动程序中的其他

内容。

源程序文件test4_3.cpp清单如下:

#include

class person

{

//**1**

public:

person(){}

person(char *n,int a)

{

//**2**

}

void setname(char *n){name=n;}

void setage(int a){age=a;}

~person(){cout<

};

class student:public person

{

char *department;

int code;

public:

//**3**

{

department=d;

code=c;

}

};

class teacher:public person

{

char *department;

char *level;

public:

teacher(){}

void setinf(char *n,int a,char *d,char *l)

{

//**4**

department=d;

level=l;

}

};

void main()

{

student s1("蒋军",23,"计算机学院",2);

teacher t1;

t1.setinf("刘雷",45,"计算机学院","教授");

}

【答案】

(1)char *name;

int age;

(2)name=n;

age=a;

(3)student(char *n,int a,char *d,int

c):person(n,a)

(4)setname(n);

setage(a);

5.11.改错题

使用VC6打开考生文件夹下的工程test5_1,此工程包含一个源程序文件test5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

x=3 y=5 z=0

8

源程序文件test5_1.cpp清单如下:

#include

static int x=5;

int z=0;

int *add(int x,int y)

{

cout<<"x="<

z="<

z=z+x+y;

/**********found**********/

return z;

/**********found**********/

};

void main()

{

int y=5;

int x=3;

/**********found**********/

cout<<&(add(x,y))<

}

【答案】

(1)错误:return z;正确:return &z;

(2)错误:};正确:}

(3)错误:cout<<&(add(x,y))<

正确:cout<<*(add(x,y))<

5.22.简单应用题

请编写函数void swap(int *px,int *py) 与void swap(int &px,int &py),实现主程序中变量a和b值的交换。

输出结果如下:

3 2

2 3

注意:部分源程序已存在文件test5_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数相应的花括号中填写若干语句。

文件test5_2.cpp的内容如下:

#include

void swap(int *px,int *py)

{

/***1***/

}

void swap(int &px,int &py)

{

/***2***/

}

void main()

{

int a=2,b=3;

swap(a,b);

cout<

swap(&a,&b);

cout<

}

【答案】

(1)void swap(int *px,int *py)

{

int temp;

temp=*px;

*px=*py;

*py=temp;

}

(2)void swap(int &px,int &py)

{

int temp;

temp=px;

px=py;

py=temp;

}

5.33.综合应用题

使用VC6打开考生文件夹下的工程test5_3。此工程包含一个源程序文件test5_3.cpp,其中定义了一个类Fn,用于求n!。请按要求完成下列操作,将程序补充完整。

(1)定义私有数据成员value(存放n)和fact(存放n!),它们都是int型的数据。请在注释"//**1**"之后添加适当的语句。

(2)完成默认构造函数Fn的定义,使Fn对象的数据成员value 值为i,fact值为1。请在注释"//**2**"之后添加适当的语句。

(3)完成函数Cal的定义,该函数计算value的阶乘,并将运算结果保存在fact中,要求使用while循环实现。请在注释"//**3**"之后添加适当的语句。

(4)将主函数补充完整,直接调用类的成员函数,在界面上输出value的阶乘值。请在注释"//**4**"之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test5_3.cpp清单如下:

#include

class Fn

{

//**1**

public:

Fn(int i);

void Cal();

void disp();

};

Fn::Fn(int i)

{

//**2**

}

void Fn::Cal()

{

//**3**

fact*=i--;

}

void Fn::disp()

{

cout<

}

void main()

{

int value;

cout<<"Enter the value:";

cin>>value;

Fn A(value);

//**4**

}

【答案】

(1)int value;

int fact;

(2)value=i;

fact=1;

(3)int i=value;

while(i>1)

(4)A.Cal();

A.disp();

6.11.改错题

使用VC6打开考生文件夹下的工程test6_1,此工程包含一个源程序文件test6_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

Constructor2

Constructor1

i=0

i=10

Destructor

源程序文件test6_1.cpp清单如下:

#include

class CSample

{

int i;

public:

CSample(){cout<<"Constructor1"<

i=0;}

CSample(int

val){cout<<"Constructor2"<

~CSample(){cout<<"Destructor"<

void disp();

};

/**********found**********/

void disp()

{

cout<<"i="<

}

void main()

{

CSample *a,b(10);

/**********found**********/

a->disp();

/**********found**********/

b->disp();

}

【答案】

(1)错误:void disp()

正确:void CSample::disp()

(2)错误:a->disp();

正确:a=new CSample; a->disp();

(3)错误:b->disp();

正确:b.disp();

6.22.简单应用题

编写函数fun(),它的功能是利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。

x n+1 =cos(x n)

迭代步骤如下:

(1)取x1初值为0.0。

(2)x0=x1,把x1的值赋给x0。

(3)x1=cos(x0),求出一个新的x1。

(4)若x0-x1的绝对值小于0.000001, 则执行步骤(5),否则执行步骤(2)。

(5)所求x1就是方程cos(x)-x=0的一个实根,做为函数值返回。

程序输出结果Root=0.739085。

注意:部分源程序已存在文件test6_2.cpp中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

文件test6_2的内容如下:

#include

#include

#include

float fun()

{

}

void main()

{

cout<<"Root="<

}

【答案】

float fun()

{ float x1=0.0,x0;

do

{ x0=x1;

x1=cos(x0);

}

while(fabs(x0-x1)>=1e-6);

return x1;

}

6.33.综合应用题

使用VC6打开考生文件夹下的工程test6_3,此工程包含一个源程序文件test6_3.cpp,其中定义了用于表示考生的类Student,请按要求完成下列操作,将程序补充完整。

(1)定义私有数据成员code、english分别用于表示考生的编号、英语成绩、它们都是int型的数据。请在注释"//**1**"之后添加适当的语句。

(2)完成成员函数void Student::inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下所示:输入编号:

英语成绩:

计算机成绩:

请在注释"//**2**"之后添加适当的语句。

(3)利用已实现的类Student的成员函数,完成函数void firstname(Student *A[],int num)的定义,该函数根据考生信息A[],输出num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。请在注释"//**3**"之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test6_3.cpp清单如下:

#include

class Student

{

//**1**

int computer;

int total;

public:

void getinformation();

void computesum();

int getcode();

int gettotalscore();

~Student();

};

void Student::getinformation()

{

//**2**

cout<<"英语成绩:";

cin>>english;

cout<<"计算机成绩:";

cin>>computer;

}

void Student::computesum()

{

total=english+computer;

cout<<"编号"<

}

int Student::getcode()

{

return code;

}

int Student::gettotalscore()

{

return total;

}

void firstname(Student *A[],int num)

{

//**3**

tempsum=(*A[0]).gettotalscore();

for(int i=1;i

{

if

(((*A[i]).gettotalscore())>tempsum)

{

tempcode=(*A[i]).getcode();

tempsum=(*A[i]).gettotalscore();

}

}

cout<<"总分最高者--"<

"<

}

void main()

{

Student *A[3];

int i,n=3;

for(i=0;i

{

A[i]=new Student;

A[i]->getinformation();

}

for(i=0;i

{

A[i]->computesum();

}

firstname(A,3);

}

【答案】

(1)int code;

int english;

(2)cout<<"输入编号:";

cin>>code;

(3)int tempcode,tempsum;

tempcode=(*A[0]).getcode();

7.11.改错题

使用VC6打开考生文件夹下的工程test7_1,此工程包含一个源程序文件test7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

Constructor1

Constructor1

Constructor1

Destructor

Constructor2

Destructor

x=0

x=5

Destructor

Destructor

源程序文件test1_1.cpp清单如下:

#include

class B

{

int x;

public:

B(){x=0;cout<<"Constructor1"<

B(int

i){x=i;cout<<"Constructor2"<

~B(){cout<<"Destructor"<

/**********found**********/

~B(int i){cout<

Destructor"<

void print(){ cout<<"x="<

};

void main()

{

B *ptr;

ptr=new B[2];

/**********found**********/

ptr[0]=B(0);

ptr[1]=B(5);

/**********found**********/

for(int i=0;i<2;)

ptr[i].print();

delete []ptr;

}

【答案】

(1)错误:~B(int i){cout<

(2)错误:ptr[0]=B(0);

正确:ptr[0]=B();

(3)错误:for (int i=0;i<2;)

正确:for(int i=0;i<2;i++)

7.22.简单应用题

编写一个函数int charnum(char fn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。

注意:部分源程序已存在文件test7_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。

文件test7_2.cpp的内容如下:

#include

#include

#include

int charnum(char fn[10]);

void main()

{

int num;

num=charnum("abc.txt");

cout<<"num="<

}

int charnum(char fn[10])

{

}

【答案】

int charnum(char fn[10])

{

fstream file;

file.open(fn,ios::in);

if(!file)

{

cout<<"abc.txt can't open"<

abort();

}

char ch;

int i=0;

while(!file.eof())

{

file.get(ch);

i++;

}

file.close();

return i-1;

}

7.33.综合应用题

使用VC6打开考生文件夹下的工程test7_3,此工程包含一个源程序文件test7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。

(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释"//**1**"之后添加适当的语句。

(2)为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序

Circle c;

c.SetRadius(5);

c.Print();

将输出:The circle has radius of 5!

请在注释"//**2**"之后添加适当的语句。

(3)完成友元函数void CompareR(Circle *c1,Circle *c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if-else结构完成。请在注释"//**3**"之后添加适当的语句。

输出结果如下:

The circle has radus of 5!

The circle has radius of 10!

c1

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test7_3.cpp清单如下:

#include

class Circle{

public:

Circle():radius(5){}

//**1**

void SetRadius(int r) { radius=r; }

int GetRadius() { return radius; }

//**2**

friend void CompareR(Circle *c1,Circle

*c2);

private:

int radius;

};

void CompareR(Circle *c1,Circle *c2)

{

//**3**

cout<<"c1>c2"<

else

if

((c1->GetRadius())==(c2->GetRadius()))

cout<<"c1=c2"<

else

if

((c1->GetRadius())<(c2->GetRadius()))

cout<<"c1

}

void main()

{

Circle c1;

c1.SetRadius(5);

c1.Print();

Circle c2(10);

c2.Print();

CompareR(&c1,&c2);

}

【答案】

(1)Circle(int rad):radius(rad){}

(2)void Print(){cout<<"The circle has radius of "<

(3)if ((c1->GetRadius())>(c2->GetRadius())) 8.11.改错题

使用VC6打开考生文件夹下的工程test8_1,此工程包含一个源程序文件test8_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

f1 function of derive

f2 function of base

f4 function of base

源程序文件test8_1.cpp清单如下:

#include

class base

{

public:

/**********found**********/

void f1(){ cout<<"f1 function of

base"<

virtual void f2(){ cout<<"f2 function of base"<

virtual void f3(){ cout<<"f3 function of base"<

void f4(){cout<<"f4 function of

base"<

};

/**********found**********/

class derive::public base

{

void f1(){ cout<<"f1 function of derive"<

void f2(int x){ cout<<"f2 function of derive"<

void f4(){ cout<<"f4 function of derive"<

};

void main()

{

base *p;

derive obj2;

/**********found**********/

p=obj2;

p->f1();

p->f2();

p->f4();

}

【答案】

(1)错误:void f1(){ cout<<"f1 function of base"<

base"<

(2)错误:class derive::public base

正确:class derive:public base

(3)错误:p=obj2;

正确:p=&obj2;

8.22.简单应用题

已知考生的记录由学号和学习成绩构成,N名考生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的考生记录,通过形参返回主函数(规定只有一个最低分)。已给予出函数的首部,请完成该函数。

注意:部分源程序已存在文件test8_2.cpp中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

文件test8_2.cpp的内容如下:

#include

#include

#include

#define N 10

typedef struct ss

{char num[10];

int s;

} STU;

void fun(STU a[],STU *s)

{

}

void main( )

{STU

a[N]={{"A01",81},{"A02",89},{"A03",66},{" A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08 ",61},{"A09",80},{"A10",71}},m;

fun(a,&m);

cout<<"***** The original date

*****"<

cout<<"The lowest :"<

【答案】

fun(STU a[],STU *s)

{

int i, min;

min=a[0].s;

for(i=0;i

if(a[i].s

{min=a[i].s;

*s=a[i];

}

}

8.33.综合应用题

使用VC6打开考生文件夹下的工程test8_3,此工程包含一个源程序文件test8_3.cpp,该文件设计了用于输出乘法九九表的类。请认真阅读已有的代码,按要求完成下列操作,将程序补充完整。

(1)定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。请在注释"//**1**"之后添加适当的语句;

(2)完成类Table的成员函数print()的定义,该函数以"x*y=z"的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现,在注释"//**2**"之后添加适当的语句;

(3)完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕,请在注释"//**3**"之后添加适当的语句;

(4)补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。请在注释"//**4**"之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test8_3.cpp清单如下:

#include

#include

class Table

{

//**1**

int z;

public:

void print(int x,int y,int z);

};

void Table::print (int x,int y,int z)

{

//**2**

}

class Table9:public Table

{

public:

void print();

};

void Table9::print()

{

//**3**

int x,y,z;

for (i=1;i<10;i++)

{

for(j=1;j

{

x=i;

y=j;

z=i*j;

Table::print(y,x,z);

}

printf("\n");

}

}

main()

{

//**4**

return 0;

}

【答案】

(1)int x;

int y;

(2)printf( "%d*%d=%d ",x,y,z);

if(z<10) printf(" ");

(3)int i,j;

(4)Table9 t_9;

t_9.print();

9.11.改错题

使用VC6打开考生文件夹下的工程test9_1,此工程包含一个源程序文件test9_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

4,5

20

源程序文件test9_1.cpp清单如下:

#include

class A

{

protected:

int n,m;

public:

void set(int a,int b){m=a; n=b;}

void show(){cout<

/**********found**********/

}

class B:public A

{

int s;

public:

void set(){s=m*n;}

void shows(){cout<

};

void main()

{

B b;

/**********found**********/

b.set();

b.show();

b.set();

/**********found**********/

b.show();

}

【答案】

(1)错误:} 正确:};

(2)错误:b.set(); 正确:b.A::set(4,5);

(3)错误:b.show(); 正确:b.shows();

9.22.简单应用题

请编写一个函数int CalcDigital(char *str),该函数可返回字符串str中数字字符(即'0'-'9'这10个数字)的个数,如字符串"olympic2008"中数字字符的个数为4。请用if条件判断语句与for循环语句来实现该函数。

注意:部分源程序已存在文件test9_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数find 的花括号中填写若干语句。

文件test9_2.cpp的内容如下:

#include

#include

int CalcDigital(char *str);

void main()

{

char *str;

str=new char[255];

cout<<"输入字符串:";

cin>>str;

int num=CalcDigital(str);

cout<

}

int CalcDigital(char *str)

{

}

【答案】int CalcDigital(char *str)

{

if(str==NULL) return 0;

int num_of_digital=0;

int len=strlen(str);

for(int i=0;i

if(str[i]<='9' && str[i]>='0')

num_of_digital++;

return num_of_digital;

}

9.33.综合应用题

使用VC6打开考生文件夹下的工程test9_3,此工程包含一个源程序文件test9_3.cpp,其中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。

(1)定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。请在注释"//**1**"之后添加适当的语句。

(2)定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。请在注释"//**2**"之后添加适当的语句;

(3)完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。请在注释"//**3**"之后添加适当的语句。

(4)完成Money类成员函数float Money::TotalMoney(float fencelen, float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。请在注释

"//**4**"之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test9_3.cpp清单如下:

#include

//**1**

class Circle

{

private:

float radius;

public:

//**2**

float Circumference(){return 2 * PI * radius;}

float Area(){return PI * radius * radius;}

};

class Money

{

private:

float FencePrice;

float ConcretePrice;

public:

Money(float f,float c);

float TotalMoney(float fencelen, float conarea);

};

Money::Money(float f,float c)

{

//**3**

}

float Money::TotalMoney(float fencelen, float conarea)

{

//**4**

}

void main()

{

float radius,fence,concrete;

cout.setf(ios::fixed);

cout.setf(ios::showpoint);

cout.precision(2);

cout << "Enter the radius of the pool: ";

cin >> radius;

cout << "Enter the FencePrice: ";

cin >> fence;

cout << "Enter the ConcretePrice: ";

cin >> concrete;

Circle Pool(radius);

Circle PoolRim(radius + WIDTH);

Money mon(fence,concrete);

float

totalmoney=mon.TotalMoney(PoolRim.Circumference (),(PoolRim.Area() - Pool.Area()));

cout << "The total money is RMB " << totalmoney << endl;

}

【答案】

(1)const float PI = 3.14159f;

const float WIDTH =3.00f;

(2)Circle(float r):radius(r){};

(3)FencePrice=f;

ConcretePrice=c;

(4)return

FencePrice*fencelen+ConcretePrice*conarea;

10.11.改错题

使用VC6打开考生文件夹下的工程test10_1,此工程包含一个源程序文件test10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:

class Base

class D1

class D2

class D3

f in Base

源程序文件test10_1.cpp清单如下:

#include

class Base

{

public:

Base(){cout<<"class Base"<

void f(){cout<<"f in Base"<

};

class D1:virtual public Base

{

public:

D1(){cout<<"class D1"<

void f(){ cout<<"f in D1"<

};

/**********found**********/

class D2:public Base

{

public:

D2(){cout<<"class D2"<

};

/**********found**********/

class D3::public D1,public D2

{

public:

D3(){cout<<"class D3"<

};

void main()

{

D3 d;

/**********found**********/

d.f();

}

【答案】

(1)错误:class D2:public Base

正确:class D2:virtual public Base

(2)错误:class D3::public D1,public D2

正确:class D3:public D1,public D2

(3)错误:d.f(); 正确:d.Base::f();

10.22.简单应用题

请编写一个函数inline long sum(int n),用递归函数完成运算:sum(n)=1*1+2*2+? ??+n*n,递归表达式为sum(n)=sum(n-1)+n2。

注意:部分源程序已存在文件test10_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数sum 的花括号中填写若干语句。

文件test10_2.cpp的内容如下:

#include

inline long sum(int n)

{

}

void main()

{

int n;

cout<<"输入n:";

cin>>n;

cout<<"结果为:"<

}

【答案】

inline long sum(int n)

{

if(n==1)

return 1;

else

return n*n+sum(n-1);

}

10.33.综合应用题

使用VC6打开考生文件夹下的工程test10_3,此工程包含一个源程序文件test10_3.cpp,其中定义了用于表示雇员信息的CEmployee类与表示公司信息的Company类,但这两个类的定义并不完整。请按要求完成下列操作。

(1)定义Cemployee类的私有数据成员name(大小为50的字符数组)和pay(double型数据),分别用于记录雇员姓名和月薪。请在注释"//**1**"之后添加适当的语句。

(2)完成Company类默认构造函数的定义,该构造函数将n值赋值给私有成员num,并完成指针emp所指的n个Cemployee对象空间的申请,请在注释"//**2**"之后添加适当的语句。

(3)完成Company类成员函数void Company::add(int code,char name[50],double pay)的定义,该函数将某一雇员的编号code、姓名name及月薪pay输入到公司信息中。请在注释"//**3**"之后添加适当的语句。

(4)完成Company类成员函数void Company::print()的定义,

使其以"_ is paid _RMB for one month"的格式输出公司内所有员工

的月薪信息。请在注释"//**4**"之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他

内容。

源程序文件test10_3.cpp清单如下:

#include

#include

class CEmployee

{

public:

void putname(char n[50]){strcpy(name,n);}

void getname(char n[50]){strcpy(n,name);}

void putpay(double d){pay=d;}

double getpay(){return pay;}

private:

//**1**

};

class Company

{

private:

CEmployee *emp;

int num;

public:

Company(int n);

void add(int code,char name[50],double pay);

void print();

};

Company::Company(int n)

{

//**2**

}

void Company::add(int code,char

name[50],double pay)

{

//**3**

}

void Company::print()

{

//**4**

for(int i=0;i

{

(emp+i)->getname(c);

money=(emp+i)->getpay();

cout<

}

}

void main()

{

Company com(2);

com.add(0,"Jack",200);

com.add(1,"Lee",300);

com.print();

}

【答案】

(1)char name[50];

double pay;

(2)num=n;

emp=new CEmployee[num];

(3)(emp+code)->putname(name);

(emp+code)->putpay(pay);

(4)char c[50];

double money; 11.11.改错题

使用VC6打开考生文件夹下的工程test11_1,此工程包含一个源程序文件test11_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

ch1=7 ch2=9

源程序文件test11_1.cpp清单如下:

#include

class Sample

{

/**************** found ****************/

char ch1,ch2

public:

/**************** found ****************/

friend void set(Sample s, char c1,char c2)

{

s.ch1=c1;

s.ch2=c2;

}

void print(){cout<<"ch1="<

ch2="<

};

void main()

{

Sample obj;

/**************** found ****************/

obj.set(obj,'7','9');

obj.print();

}

【答案】

(1)错误:char ch1,ch2 正确:char ch1,ch2;

(2)错误:friend void set(Sample s, char c1,char c2)

正确:friend void set(Sample &s, char c1,char c2)(3)错误:obj.set(obj,'7' ,'9'); 正确:set(obj,'7' ,'9');

11.22.简单应用题

请编写一个函数int sum(int n),该函数完成1+2+3+…+n的运算,并返回运算结果,其中n>0。注意:请使用递归算法实现该函数。

注意:部分源程序已存在文件test11_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数sum 的花括号中填写若干语句。

文件test11_2.cpp的内容如下:

#include

int sum(int n)

{

}

void main()

{

int n;

cout<<"输入n: ";

cin>>n;

int result=sum(n);

cout<<"结果为:"<

}

【答案】

int sum(int n)

{

if(n==1)

return 1;

else

return n + sum(n-1);

}

11.33.综合应用题

使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。

(1)在类定义外完成重载的两个构造函数CPosition()和CPosition(double dx, double dy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。请在注释"// ** 1 ** "之后添加适当的语句。

(2)在类体中添加函数move(double ax, double ay)的定义,使得点的坐标x和y分别移动ax和ay个单位,请在注释"// ** 2 ** "之后添加适当的语句。

(3)完成函数double distance(double bx, double by)的定义,该函数返回*this和点(bx,by)的距离,请在注释"// ** 3 ** "之后添加适当的语句。

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test11_3.cpp清单如下:

#include

#include

class CPosition

{

public:

CPosition();

CPosition(double dx, double dy);

double getx();

double gety();

// ** 2 **

double distance(double bx, double by);

private:

double x;

double y;

};

// ** 1 **

{

x=0; y=0;

}

CPosition::CPosition(double dx, double dy)

{

x=dx; y=dy;

}

double CPosition::getx()

{

return x;

}

double CPosition::gety()

{

return y;

}

double CPosition::distance(double bx, double by)

{

// ** 3 **

}

void main()

{

double a,b;

cout << "Input x, y position of a point: ";

cin >> a >> b;

CPosition psA(a, b);

cout << "Input x, y position of another point: ";

cin >> a >> b;

cout << "The distance is " <<

psA.distance(a,b) <

}

【答案】

(1)CPosition::CPosition()

(2)void move(double ax, double ay){x += ax;y += ay;};

(3)return sqrt(pow(x-bx, 2) + pow(y-by, 2));

12.11.改错题

使用VC6打开考生文件夹下的工程test12_1,此工程包含一个源程序文件test12_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

fun(Sample &p) 1 2

fun(Sample *p) 3 4

20 10

源程序文件test12_1清单如下:

#include

class Sample

{

private:

int x,y;

static int z;

public:

Sample(int a,int b){ x=a;y=b; }

void fun(Sample &p);

void fun(Sample *p);

static void print(Sample s);

};

/**************** found ****************/

int z=10;

void Sample::fun(Sample &p)

{

x=p.x; y=p.y;

cout<<"fun(Sample &p)"<<" "<

"<

}

void Sample::fun(Sample *p)

{

/**************** found ****************/

x=p.x; y=p.y;

cout<<"fun(Sample *p)"<<" "<

"<

}

void Sample::print(Sample s)

{

/**************** found ****************/

x=20;

cout<

}

void main()

{

Sample p(1,2),q(3,4);

p.fun(p);

p.fun(&q);

p.print(p);

}

【答案】

(1)错误:int z=10; 正确:int Sample::z=10;

(2)错误:x=p.x; y=p.y; 正确:x=p->x; y=p->y;

(3)错误:x=20; 正确:s.x=20;

12.22.简单应用题

请编写一个函数int Count(double a[], int n),统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数并返回这个值。注意:请使用for循环实现该函数。

注意:部分源程序已存在文件test12_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数Count的花括号中填写若干语句。

文件test12_2的内容如下:

#include

int Count(double a[], int n)

{

}

void main()

{

double a[5];

cout<<"请输入5个double型的数字"<

for(int i=0;i<5;i++)

{

cin>>a[i];

}

int result=Count(a,5);

cout<<"大于等于所有元素平均值的元素个

数:"<

}

【答案】int Count(double a[], int n)

{

double m=0;

int i;

for(i=0;i

m=m/n;

int c=0;

for(i=0;i

if(a[i]>=m) c++;

return c;

}

12.33.综合应用题

使用VC6打开考生文件夹下的工程test12_3,此工程包含一个test12_3.cpp,其中定义了类Base和类A,类A公有继承Base,但这两个类的定义都并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义枚举类型变量en,它包含两个枚举符front和back,请在注释"// ** 1 ** "之后添加适当的语句。

(2)在类Base中添加常成员虚函数void E()的定义,该函数输出"In BaseE!",请在注释"// ** 2 ** "之后添加适当的语句。

(3)在类A中添加常成员虚函数void E()的定义,该函数先调用基类中的虚函数E()再输出"In AE!",请在注释"// ** 3 ** "之后添加适当的语句。

(4)完成类A构造函数的定义,请使用参数列表的形式初始化类A的成员,并输出"A constructor.",请在注释"// ** 4 ** "之后添加适当的语句。

输出结果如下:

Base constructor.

A constructor.

In BaseE!

In AE!

In BaseP!

In A!

1

A destructor.

Base destructor.

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test12_3.cpp清单如下:

#include

// ** 1 **

class Base

{

protected:

int b1;

int b2;

public:

Base();

~Base();

int Getb1()const { return b1; }

void Setb1(int x){ b1 = x; }

int Getb2()const { return b2; }

void Setb2(int y) { b2 = y; }

void Print()const {cout<<"In

BaseP!"<

// ** 2 **

};

Base::Base():b1(1),b2(5)

{

cout<<"Base constructor."<

}

Base::~Base()

{

cout<<"Base destructor."<

}

class A:public Base

{

protected:

en enA;

public:

A();

~A();

en GetColor()const { return enA; }

void SetColor(en color){ enA = color; }

void InA(){cout<<"In A!"<

// ** 3 **

{

Base::E();

cout<<"In AE!"<

}

};

// ** 4 **

{

cout<<"A constructor."<

}

A::~A()

{

cout<<"A destructor."<

}

void main()

{

A a1;

a1.E();

cout<

a1.Print();

a1.InA();

cout<

}

【答案】

(1)enum en{front,back};

(2)virtual void E()const {cout<<"In

BaseE!"<

(3)virtual void E()const

(4)A::A():enA(front)

13.11.改错题

使用VC6打开考生文件夹下的工程test13_1,此工程包含一个源程序文件test13_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

n=2

n=5

n=7

源程序文件test13_1清单如下:

#include

class Sample

{

int n;

public:

/**************** found *****************/

Sample()

Sample(int i){n=i;}

/**************** found *****************/

void add(Sample s1,Sample s2)

/*************** found ******************/

{

this.n=s1->n+s2.n;

}

void disp(){cout<<"n="<

};

void main()

{

Sample s1(2),s2(5),s3;

s3.add(&s1,s2);

s1.disp();

s2.disp();

s3.disp();

}

【答案】

(1)错误:Sample() 正确:Sample(){}

(2)错误:void add(Sample s1,Sample s2)

正确:void add(Sample *s1,Sample s2)

(3)错误:this.n=s1->n+s2.n; 正确:this->n=s1->n+s2.n;

13.22.简单应用题

请编写一个函数int fun(int nFirst,int nSecond),求两个数的最小公倍数并返回这个值。

注意:部分源程序已存在文件test13_2.cpp中。如输入7和8时,结果是56。

请勿修改主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填写若干语句。

文件test13_2的内容如下:

#include

int fun(int nFirst,int nSecond);

void main()

{

int nFirst, nSecond;

cout<<"Please input the first one\n";

cin>>nFirst;

cout<<"Please input the second one\n";

cin>>nSecond;

cout<<"最小公倍数:

"<

}

int fun(int nFirst,int nSecond)

{

}

【答案】

int fun(int nFirst,int nSecond)

{

int nMax, nMin;

if (nFirst>nSecond)

{

nMax = nFirst;

nMin = nSecond;

}

else

{

nMax = nSecond;

nMin = nFirst;

}

int nMod = nMax % nMin;

while(nMod)

{

nMax = nMin;

nMin = nMod;

nMod = nMax % nMin;

}

int nMultiple = nFirst * nSecond / nMin;

return nMultiple;

}

13.33.综合应用题

使用VC6打开考生文件夹下的工程test13_3。此工程包含一个test13_3.cpp,其中定义了类Vector,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)完成构造函数的定义,把数据成员size初始化为参数s的值,数据成员buffer指向动态申请的int型size大小的空间。请在注释"// ** 1 ** "之后添加适当的语句。

(2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释"// ** 2 ** "之后添加适当的语句。

(3)完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,注意如果ndx超界,请输出"error in index"。请在注释"// ** 3 ** "之后添加适当的语句。

(4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer指向的空间。请在注释"// ** 4 ** "之后添加适当的语句。

输出结果如下:

1234567891012345678910dd

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test13_3清单如下:

#include

#include

class Vector

{

public:

Vector(int s=100);

Vector(Vector &v);

int &elem(int ndx);

void display();

void set();

~Vector();

protected:

int size;

int *buffer;

};

Vector::Vector(int s)

{

// ** 1 **

}

Vector::Vector(Vector &v)

{

// ** 2 **

for(int i=0; i

{

*(buffer+i)=*(v.buffer+i);

}

}

int &Vector::elem(int ndx)

{

// ** 3 **

{

cout<<"error in index"<

exit(1);

}

return buffer[ndx];

}

void Vector::display()

{

for(int j=0;j

cout<

}

void Vector::set()

{

for(int j=0;j

elem(j)=j+1;

}

Vector::~Vector()

{

// ** 4 **

}

void main()

{

Vector a(10);

Vector b(a);

a.set();

b.set();

a.display();

b.display();

}

【答案】

(1)size=s;

buffer=new int[size];

(2)size=v.size;

buffer=new int[size];

(3)if (ndx<0||ndx>=size)

(4)cout<<"d"<

delete [] buffer;

14.11.改错题

使用VC6打开考生文件夹下的工程test14_1,此工程包含一个源程序文件test14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

member1= 5 member2=5

member1=7 member2=9

源程序文件test14_1.cpp清单如下:

#include

class MyClass

{

/*************** found ******************/

friend void setMember(MyClass myObj,char mem1)

{

myObj.member1=mem1;

myObj.member2=mem1;

cout<<"member1="<

(2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释"// ** 2 ** "之后添加适当的语句;

(3)完成成员函数copy(File &source, File &target)的定义,该函数实现将source的内容拷贝至target的功能,注意必须使用已经定义的成员函数来实现。请在注释"// ** 3 ** "之后添加适当的语句;

(4)完成析构函数的定义,要求释放content指向的空间。请在注释"// ** 4 ** "之后添加适当的语句。

输出结果如下:

file2:file1 contents

file2:file2 contents

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test14_3.cpp清单如下:

#include

#include

class File{

private:

char file_name[64];

char * contents;

public:

File(char *filename)

{

// ** 1 **

};

File::~File()

{

// ** 4 **

}

void

printfile(){cout<

friend bool copy(File & source, File & target);

bool set_contents(char * new_contents);

};

bool File::set_contents(char *

new_contents)

{

// ** 2 **

if(contents==NULL)

return false;

strcpy(contents,new_contents);

return true;

}

bool copy(File &source,File &target)

{

// ** 3 **

}

void main()

{

File f1("file1"),f2("file2");

f1.set_contents("file1 contents");

copy(f1,f2);

f2.printfile();

f2.set_contents("file2 contents");

f2.printfile();

}

【答案】

(1)strcpy(file_name,filename);

contents=NULL;

(2)contents=new

char[(strlen(new_contents)+1)];

(3)return target.set_contents

(source.contents);

(4)delete []contents;

15.11.改错题

使用VC6打开考生文件夹下的工程test15_1,此工程包含一个源程序文件test15_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:

My object has member 7

源程序文件test15_1.cpp清单如下:

#include

class MyClass

{

public:

MyClass(int mem){member=mem;}

~MyClass(){}

int GetAge() const{ return member;}

private:

int member;

};

/**************** found ****************/

void main()

{

int mem=7;

/**************** found ****************/

MyClass myObj=MakeObject(mem);

cout<<"My object has member

"<GetAge()<

/**************** found ****************/

delete;

}

MyClass *MakeObject(int mem)

{

MyClass *pMyClass=new MyClass(mem);

return pMyClass;

}

【答案】

(1)添加函数定义MyClass *MakeObject(int mem);

(2)错误:MyClass myObj=MakeObject(mem);

正确:MyClass *myObj=MakeObject(mem);

(3)错误:delete;

正确:delete myObj;

15.22.简单应用题

请编写一个函数char MaxCharacter(char * str),该函数返回参数str所指向的字符串中具有最大ASCII码的那个字符(如字符串"world"中字符'w'具有最大的ASCII码)。当str所指向的字符串为空时,则返回空字符0x0或'\0'。

输出结果如下:

Good Morning!

Max char:r

注意:部分源程序已存在文件test15_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数MaxCharacter的花括号中填写若干语句。

文件test15_2.cpp的内容如下:

#include

#include

char MaxCharacter(char * str);

void main()

{

char str[100];

strcpy(str,"Good Morning!");

char maxc=MaxCharacter(str);

cout<

cout<<"Max char:"<

}

char MaxCharacter (char *str)

{

}

【答案】

char MaxCharacter (char *str)

{

if(str==NULL)

return 0x0;

char maxChar=0x0;

int len=strlen(str);

for(int i=0;i

{

if(str[i]>maxChar)

maxChar=str[i];

}

return maxChar;

}

15.33.综合应用题

使用VC6打开考生文件夹下的工程test15_3。此工程包含一个test15_3.cpp,其中定义了类Time和Timex,Timex公有继承Time,但定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)完成类Time构造函数的定义,将数据成员hours和minutes 分别初始化为参数new_hours和new_minutes的值。请在注释"// ** 1

** "之后添加适当的语句。

(2)完成类Timex的构造函数的定义,注意参数的传递。请在注释"// ** 2 ** "之后添加适当的语句。

(3)请按时间格式"hour:minute"和"hour:minute:second"分别输出对象time1和time2所表示的时间,注意必须使用已经定义的成员函数。请在注释"// ** 3 ** "之后添加适当的语句。

输出结果如下:

20:30

10:45:34

注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

源程序文件test15_3.cpp清单如下:

#include

class Time

{

public:

Time(int new_hours,int new_minutes)

{

// ** 1 **

}

int get_hours();

int get_minutes();

protected:

int hours,minutes;

};

int Time::get_hours()

{

return hours;

}

int Time::get_minutes()

{

return minutes;

}

class Timex:public Time

{

public:

Timex(int new_hours,int new_minutes,int new_seconds);

int get_seconds();

protected:

int seconds;

};

// ** 2 **

{

seconds=new_seconds;

}

int Timex::get_seconds()

{

return seconds;

}

void main()

{

Time time1(20,30);

Timex time2(10,45,34);

// ** 3 **

}

【答案】

(1)hours=new_hours;

minutes=new_minutes;

(2)Timex::Timex(int

new_hours,intnew_minutes,

int new_seconds):Time(new_hours,new_minutes) (3)

cout<

cout<

16.11.改错题

使用VC6打开考生文件夹下的工程test16_1,此工程包含一个源程序文件test16_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:

Which act(a or b)?b

act1

act2

Bact3

Bact4

Bend

源程序文件test16_1.cpp清单如下:

#include

class A

{

public:

virtual void

act1(){cout<<"act1\n";act2();}

void act2(){cout<<"act2\n";act3();}

/**************** found ****************/

void act3(){cout<<"Aact3\n";act4();}

/**************** found ****************/

virtual void

act4{cout<<"Aact4\n";act5();}

void act5(){cout<<"Aend\n";}

};

class B :public A

{

void act3(){cout<<"Bact3\n";act4();}

void act4(){cout<<"Bact4\n";act5();}

void act5(){cout<<"Bend\n";}

};

void main(void)

{

char c;

A *a;

cout<<"Which act(a or b)?";

/**************** found ****************/

cin<

if(c=='a')

a = new A;

else

a = new B;

a->act1();

delete a;

}

【答案】

(1)错误:void act3(){cout<<"Aact3\n";act4();}

正确:virtual void act3(){cout<<"Aact3\n";act4();} (2)错误:virtual void act4{cout<<"Aact4\n";act5();}

正确:virtual void act4(){cout<<"Aact4\n";act5();} (3)错误:cin<

正确:cin>>c;

16.22.简单应用题

请编写一个函数void fun(char ss[]),该函数将字符串ss翻转,如ss为"123abc"则翻转后为"cba321"。注意:用数组方式及for循环来实现该函数。

注意:部分源程序已存在文件test16_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填写若干语句。

文件test16_2.cpp的内容如下:

#include

#include

void fun(char ss[]);

void main()

{

char s[80];

cout<<"请输入字符串:";

cin>>s;

fun(s);

cout<<"逆序后的字符串:"<

}

void fun(char ss[])

{

}

【答案】void fun(char ss[])

{

int n=strlen(ss);

for(int i=0;i<(n/2); i++)

{

char c=ss[i];

ss[i]=ss[n-1-i];

ss[n-1-i]=c;

}

}

16.33.综合应用题

使用VC6打开考生文件夹下的工程test16_3,此工程包含一个源程序文件test16_3.cpp,其中定义了类Cat,但类Cat的定义并不完整。请按要求完成下列操作,将类Cat的定义补充完整。

(1)定义类Cat的保护数据成员itsAge用于表示年龄,它是int 型的数据。请在注释"//**1**"之后添加适当的语句。

(2)完成成员函数GetAge()的类外定义,返回成员的itsAge值,请在注释"//**2**"之后添加适当的语句。

(3)完成成员函数SetAge(int age)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释"//**3**"之后添加适当的语句。

(4)完成成员函数Meow的类外定义,使其输出字符串"meow."到屏幕上。请在注释"//**4**"之后添加适当的语句。

输出结果如下:

meow.

kitty is a cat who is 5 years old.

meow.

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test16_3.cpp清单如下:

#include

class Cat

{

public:

int GetAge();

void SetAge(int age);

void Meow();

protected:

//**1**

};

int Cat::GetAge()

{

//**2**

}

void Cat::SetAge(int age)

{

//**3**

}

void Cat::Meow()

{

//**4**

}

void main()

{

Cat kitty;

kitty.Meow();

kitty.SetAge(5);

cout<<"kitty is a cat who is ";

cout<

cout<<" years old.\n";

kitty.Meow();

}

【答案】(1)int itsAge;

(2)return itsAge;

(3)itsAge=age;

(4)cout<<"meow.\n";

17.11.改错题

使用VC6打开考生文件夹下的工程test17_1,此工程包含一个源程序文件test17_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

Vehicle message

Car message

Vehicle message

源程序文件test17_1.cpp清单如下:

#include

class vehicle

{

int wheels;

float weight;

public:

/**************** found ****************/

void message(void){ cout<<"Vehicle message\n";}

};

class car:public vehicle

{

int passenger_load;

public:

/**************** found ****************/

void message (void){cout>>"Car

message\n";}

};

class truck:public vehicle

{

int passenger_load;

float payload;

public:

int passengers(void){return

passenger_load;}

};

void main()

{

vehicle * unicycle;

unicycle=new vehicle;

/**************** found ****************/

unicycle.message();

delete unicycle;

unicycle=new car;

unicycle->message();

delete unicycle;

unicycle=new truck;

unicycle->message();

delete unicycle;

}

【答案】

(1)错误:void message(void){ cout<<"Vehicle message\n";}正确:virtual void message(void){ cout<<"Vehicle message\n";}

(2)错误:void message (void){cout>>"Car message\n";}

正确:void message (void){cout<<"Car message\n";}(3)错误:unicycle.message();

正确:unicycle->message();

17.22.简单应用题

编写类AA的成员函数int Compare(AA b),该函数用于比较*this 与b的大小,若两者含有元素的个数n相同,并且数组中前n个元素值对应相同,则认为两者相等返回1,否则返回0。注意:用数组方式及for循环来实现该函数。输出结果如下:

a=b

a<>c

注意:部分源程序已存在文件test17_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数Compare的花括号中填写若干语句。

文件test17_2.cpp的内容如下:

#include

#include

class AA {

int *a;

int n;

int MS;

public:

void InitAA(int aa[], int nn, int ms)

{

if(nn>ms)

{

cout<<"Error!"<

exit(1);

}

MS=ms;

n=nn;

a=new int[MS];

for(int i=0; i

}

int Compare(AA b);

};

int AA::Compare(AA b)

{

}

void main()

{

AA a,b,c;

int x[]={1,2,3,4,5};

int y[]={1,2,3,6,7};

int z[]={1,2,5,7,9};

a.InitAA(x,3,5);

b.InitAA(y,3,5);

c.InitAA(z,3,5);

if (https://www.360docs.net/doc/ee799650.html,pare(b))

cout<<"a=b"<

else

cout<<"a<>b"<

if (https://www.360docs.net/doc/ee799650.html,pare(c))

cout<<"a=c"<

else

cout<<"a<>c"<

}

【答案】int AA::Compare(AA b)

{

if(n!=b.n) return 0;

for(int i=0; i

if(a[i]!=b.a[i]) return 0;

return 1;

}

17.33.综合应用题

使用VC6打开考生文件夹下的工程test17_3,此工程包含一个源程序文件test17_3.cpp,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。

(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。请在注释"//**1**"之后添加适当的语句。

(2)完成类Text的构造函数Text(char *str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释

"//**2**"之后添加适当的语句。

(3)定义类CircleWithText的构造函数CircleWithText(int cx,int cy, char *msg),int 型的cx和cy用于赋值给x和y,char型的指针*msg 用于赋值给text,请在注释"//**3**"之后添加适当的语句。

输出结果如下:

Point: 3 4

hello

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test17_3.cpp清单如下:

#include

#include

class Point

{

int x,y;

public:

//**1**

{

cout<<"Point:"<

}

~Point(){}

};

class Text

{

char text[100];

public:

Text(char *str)

{

//**2**

}

~Text(){}

};

class CircleWithText:public Point,public Text

{

public:

//**3**

{}

~CircleWithText() {}

};

void main()

{

CircleWithText cm(3,4,"hello");

}

【答案】(1)Point(int x1=0, int y1=0) :x(x1), y(y1)(2)strcpy(text,str);

cout<

(3)CircleWithText(int cx,int cy, char

*msg):Point(cx,cy),Text(msg)

18.11.改错题

使用VC6打开考生文件夹下的工程test18_1,此工程包含一个源程序文件test18_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

Enter x and y:

-4 -5

xoffset=1

yoffset=1

计算机二级C语言测试题

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和 */ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

计算机二级考试C语言练习题及答案

一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

全国计算机二级考试C语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构占总分1% 2、数据类型及其运算占总分4% 3、选择结构程序设计占比分的3% 4、循环结构占比分的5% 5、数组的定义和引用占比分的5% 6、函数占比分的5% 7、编译预处理占比分1% 8、指针占比分的5% 9、结构体占比分的3% 10、位运算占比分的2% 11、文件操作占比分的2% 考试方式 上机考试,时长120分钟 单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题) 第一部分 C语言知识复习资料 第一章C语言基本知识(90分) 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。 【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

最新计算机二级C 考试复习资料(全)

计算机二级C++考试复习资料(全) 一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup博士并不是从头开始设计新语言,而是在C语言的基础上进行创建。这就是C++语言。 1985年,C++开始在外面慢慢流行。经过多年的发展,C++已经有了多个版本。为次,ANSI和ISO的联合委员会于1989年着手为C++制定标准。1994年2月,该委员会出版了第一份非正式草案,1998年正式推出了C++的国际标准。 (二) C和C++ C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C 程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。 C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 二、关键字和变量 C++相对与C增加了一些关键字,如下: typename bool dynamic_cast mutable namespace static_cast using catch explicit new virtual operator false private template volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool型变量和wchar_t型变量: 布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。 #include iostream.h int main() { bool flag; flag=true; if(flag) cout< return 0; }

全国计算机等级考试二级笔试样卷C语言程序设计(含答案)

全国计算机等级考试二级笔试样卷C语言程序设计 【打印】【字体:大中小】【关闭】 一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A)源程序要文档化B)数据说明的次序要规范化 C)避免滥用goto语句D)模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A)概要设计与详细设计B)数据设计与接口设计

C)软件结构设计与数据设计 D)过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试B)概要设计 C)软件维护 D)详细设计 (4)在数据库系统中,用户所见的数据模式为 A)概念模式B)外模式C)内模式D)物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运行阶段 D)物理设计 (6)设有如下三个关系表 R S T

下列操作中正确的是 A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S (7)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 (8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63 B)64 C)6 D)7 (9)数据库技术的根本目标是要解决数据的

全国计算机等级考试二级C语言选择题

程序流程图中带有箭头的线段表示的是()。 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 参考答案:C 【解析】在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C)。 结构化程序设计的基本原则不包括()。 A) 多态性 B) 自顶向下 C) 模块化 D) 逐步求精 参考答案:A 【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。 软件设计中模块划分应遵循的准则是()。 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 参考答案:B 【解析】软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 在软件开发中,需求分析阶段产生的主要文档是()。 A) 可行性分析报告 B) 软件需求规格说明书 C) 概要设计说明书 D) 集成测试计划 参考答案:B 【解析】A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 算法的有穷性是指()。 A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的 C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用

【解析】算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。 A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序 参考答案:D 【解析】除了堆排序算法的比较次数是,其他的都是n(n-1)/2。 下列关于栈的叙述正确的是()。 A) 栈按"先进先出"组织数据 B) 栈按"先进后出"组织数据 C) 只能在栈底插入数据 D) 不能删除数据 参考答案:B 【解析】栈是按"先进后出"的原则组织数据的,数据的插入和删除都在栈顶进行操作。 在数据库设计中,将E-R图转换成关系数据模型的过程属于()。 A) 需求分析阶段 B) 概念设计阶段 C) 逻辑设计阶段 D) 物理设计阶段 参考答案:C 【解析】E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 有三个关系R、S和T如下: 由关系R和S通过运算得到关系T,则所使用的运算为()。 A) 并 B) 自然连接 C) 笛卡尔积 D) 交

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机二级考试C语言试题及答案第一套

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。) (1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 A)PAD图 B)N-S图 C)结构图 D)数据流图 (2)结构化程序设计主要强调的是 A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性 (3)为了使模块尽可能独立,要求 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (4)需求分析阶段的任务是确定 A)软件开发方法 B)软件开发工具 C)软件开发费用 D)软件系统功能 (5)算法的有穷性是指

A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序 (7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序 (8)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性 B)关系 C)键 D)域 (9)有三个关系R、S和T如下: R B C D a 0 k1 b 1 n1 S B C D f 3 h2 a 0 k1

计算机二级c语言题库

一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 (D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

计算机二级C语言真题及答案

2014 年 3 月计算机二级 C 语言真题及答案 一、选择题 二、( 1)下列关于栈叙述正确的是 三、A) 栈顶元素最先能被删除 四、B)栈顶元素最后才能被删除 五、C) 栈底元素永远不能被删除? 六、D) 以上三种说法都不对 七、( 2)下列叙述中正确的是 八、A) 有一个以上根结点的数据结构不一定是非线性结构 九、B) 只有一个根结点的数据结构不一定是线性结构 十、C) 循环链表是非线性结构 十一、D)双向链表是非线性结构 十二、(3) 某二叉树共有7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层) 十三、A)3? 十四、B)4? 十五、C)6? 十六、D)7 十七、(4) 在软件开发中,需求分析阶段产生的主要文档是 十八、A)软件集成测试计划? 十九、B)软件详细设计说明书二十、C)用户手册?

二十一、D)软件需求规格说明书 二十二、(5) 结构化程序所要求的基本结构不包括 二十三、A)顺序结构? 二十四、B)GOTC跳转 二十五、C)选择(分支)结构? 二十六、D)重复(循环)结构 二十七、(6) 下面描述中错误的是 二十八、A)系统总体结构图支持软件系统的详细设计 二十九、B)软件设计是将软件需求转换为软件表示的过程三十、C)数据结构与数据库设计是软件设计的任务之一 三十一、D)PAD图是软件详细设计的表示工具 三十二、(7) 负责数据库中查询操作的数据库语言是 三十三、A) 数据定义语言 三十四、B)数据管理语言 三十五、C)数据操纵语言 三十六、D)数据控制语言 三十七、 (8) 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师 和课程间的联系是 三十八、A)1:1 联系? 三十九、B)1:m 联系 四十、C)m:1 联系? 四十一、D)m:n 联系 四十二、(9)有三个关系R、S和T如下: 四十三、则由关系R和S得到关系T的操作是四十四、A) 自然连接?

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1)、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2)、每个C语言程序中main函数是有且只有一个。 3)、在函数中不可以再定义函数。 4)、算法的是一定要有输出的,他可以没有输入。 5)、break可用于循环结构和switch语句。 6)、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

2017年全国计算机等级考试二级C语言真题及答案

2017年全国计算机等级考试二级笔试试卷 C 语言程序设计(附答案) (考试时间90 分钟,满分100 分) 一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题1 分,共70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D)上述三种说法都不对 (2)下列叙述中正确的是 A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对 (3)软件测试的目的是 A)评估软件可靠性 B)发现并改正程序中的错误 C)改正程序中的错误 D)发现程序中的错误 (4)下面描述中,不属于软件危机表现的是 A)软件过程不规范B)软件开发生产率低C)软件质量难以控制C)软件成本不断提高(5)软件生命周期是指 A)软件产品从提出、实现、使用维护到停止使用退役的过程 B)软件从需求分析、设计、实现到测试完成的过程 C)软件的开发过程 D)软件的运行维护过程 (6)面向对象方法中,继承是指 A)一组对象所具有的相似性质 B)一个对象具有另一个对象的性质 C)各对象之间的共同性质 D)类之间共享属性和操作的机制 (7)层次型、网状型和关系型数据库划分原则是 A)记录长度B)文件的大小B)联系的复杂程度D)数据之间的联系方式 (8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 A)一对一B)一对多C)多对多D)多对一 (9)数据库设计中反映用户对数据要求的模式是 A)内模式B)概念模式C)外模式D)设计模式 (10)有三个关系R、S 和T 如下:

全国计算机等级考试二级C语言上机答题技巧

上机编程题答题技巧 上机编程题的特点和说明 一、在二级C程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。 二、进行编程测试时,建议按以下步骤进行 1.首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。 2.当在Visual C++6.0环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。 3.理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。 4.选择适当的算法进行编程,输入程序语句。不要忘记及时存盘! 5.编译程序,直到没有语法错误。 6.调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。 三、编程时常出现的错误 1.书写标识符时,忽略了大小写字母的区别。 main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() { float a,b; printf("%d",a%b);

(完整版)历年全国计算机二级C语言题库

50道C语言知识题 1.以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出 D)用C程序实现的算法可以既没有输入也没有输出 2.下列可用于C语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段 inta=3,b=5,c=7;

相关文档
最新文档