c++期末考试复习题

c++期末考试复习题
c++期末考试复习题

一、填空题(每空1分,共15分,将正确答案写在()中)

1.C++中有两种数据类型:( 整型)和( 字符型)可以使用signed修饰符。

在C++中,用数组、指针、和( 引用)作为函数参数,能够将参数值带回。

2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。

3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承)、( 多态)。

4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 拷贝每一个数据成

员)。或逐一拷贝

5.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(默认)构造函数,否则应用程序会产生一个编译错

误。

6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享)。

7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 有一个不同)。

8.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装)特性。

9.预编译指令由三种,它们是:文件包含、( 宏定义)(条件编译)

10.静态的成员函数没有隐含的( this指针),所以,它们只能直接访问类的静态的数据成员。

11.在C++中,函数的参数有两种传递方式,它们是值传递和( 引用传递)。

12.当非静态成员函数被调用时,该成员函数的( this指针)指向调用它的对象。

13.拷贝构造函数使用( 一个已经存在的对象)作为参数初始化创建中的对象。

14.在公有继承的情况下,基类数据成员在派生类中的访问权限( 保持不变)。

15.在C++中,构造派生类对象时,总是先从(基类)的初始化开始的。

16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据

)成员。

17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为(虚基

类)。

18.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为( 抽象类),定义该类至少具有一个(纯虚函数)。

19.在C++中构造一个对象时,其数据成员在构造函数中初始化。对于内嵌的对象、( 常量)( 基类)数据成员需要在构

造函数的成员初始化列表中初始化。

20.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言,(是公

有的);而对于其外部的程序而言,( 是私有的)。

21.控制格式输出的操纵符中,(setprecision )是设置数据精度的,(hex )是设置十六进制的。

22.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为___1 _。

23.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=?a?+4?的值为__ e__。

24.数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于引用传递,对形参的改变可影响到实参。

25.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为public的成员;若要访问其他成员变量,需要通过成员函数或友元函数函数。

26.一个__类__和_对象__的关系,正如基本数据类型与该类型的变量一个。

27.类成员的默认访问方式是__私有_ __.

28.一个类有_多个_个构造函数,有___一个__析构函数。

29.类的__静态__成员函数不能对类中的非静态成员进行默认访问。

30.如果说明类B是类A的友元类,则类B的所有成员函数都是类A的__友元函数____。

31.利用成员函数对二元运算符重载,其左操作数为this 指针右操作数为成员函数参数 。

32.类有两种用法:一种是类的实例化,即生成类的_对象_____ ;另一种是通过__继承_____派生出新的类。

33.运算函数中的关键字是_operator_____,它和运算符一起组成该运算符函数的函数名。

34.如果一个类中有一个或多个纯虚函数,则这个类称为__抽象类____。

35.文件的打开是通过通过使用类_fstream__的成员函数___open( )_____来实现的。

36.设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为_9_。

37.已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=…c?+1的值为___d_____。

38.函数的形参在未被调用之前不会分配空间,函数的形参的

个数和类型要和实参的相同。

39.类的成员分为数据成员和_成员函数______。

40.类完成了面向对象程序设计的__封装___特性。

41.构造函数是__对象____被创建时自动执行,对象消失时自动执行的成员函数称为__析构函数_____对象

42.C++将类继承分为单继承和多继承两种。

43.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类中子对象类的析构函数,最后执行基类的析构函数。

44.类的__public__数据成员是类所有对象共享的成员。

45.友元函数__不是_类的成员函数。(是/不是)

46.如果类A继承了类B,则类A称为___派生类____,类B称为____基类___。

47.运算符重载后,原运算符的优先级和结合特性___不会__改变。(会/不会)

48.___纯虚函数___是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现。

49.文件的关闭是通过通过使用类__fstream__的成员函数__close( )______来实现的。

二、选择题

1.面向对象的( B )是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。

A.多态性B.封装性C.继承性D.重用性

2.C++的合法注释是(B )。

A./*This is a C program/*B.// This is a C program

C.“This is a C program”D./*This is a C program//

3.关于C++和C语言的描述中,(D)是错误的?

A.C是C++的一个子集B.C程序在C++环境可以运行

C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的

4.运算符+、<=、=、% 中,优先级最低的运算符是( C )。

A. +

B.<=

C.=

D.%

5.已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a

A.9 B.6 C.8 D.0 (假)

6.对while、d o…while循环结构,下面说法正确的是(B )。

A.只是表达形式不同B.do…while结构中的语句至少执行一次(先执行后判断)

C.while结构中的语句至少执行一次D.条件成立时,它们有可能一次也不执行

7.对中断语句的说法下面不正确的是(B )。

A.用户可以指定中断的位置B.用户可以指定转移的位置

C.break语句可以跳出本循环D.continue语句可以结束本次循环

8.以下正确的说法是()。

A.用户若需要调用标准函数,调用前必须重新定义

B.用户可以直接调用所有标准库函数

C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数

D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数

9.下列哪个不是重载函数在调用时选择的依据()。

A.参数类型B.参数个数C.函数类型D.函数名

10.对数组名作函数的参数,下面描述正确的是(B)。

A.数组名作函数的参数,调用时将实参数组复制给形参数组

B.数组名作函数的参数,主调函数和被调函数共用一段存储单元

C.数组名作参数时,形参定义的数组长度不能省略

D.数组名作参数,不能改变主调函数中的数据

11.如果x是整型变量,则合法的形式是( D )。

A.&(x+5) B.*x C.&*x D.*&x

12.在定义一个共用体变量时,系统为其分配存储空间的原则是(B)。

A.按所有成员需要的存储空间总和分配。B.按成员中占存储空间最大者分配。

C.按成员占存储空间最小者分配。 D.按第一个成员所需的存储空间分配。

13.下面(B)项是对构造函数和析构函数的正确定义。

A.void X::X(), void X::~X()

B.X::X(参数), X::~X() (析构括号没参数)

C.X::X(参数), X::~X(参数)

D.void X::X(参数), void X::~X(参数)

14.拷贝构造函数具有的下列特点中,( D )是错误的。

A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

B.拷贝构造函数只有一个参数,并且是该类对象的引用

C. 拷贝构造函数是一种成员函数

D.拷贝构造函数的名字不能用类名

15.类的析构函数的作用是(D )。

A.一般成员函数

B.类的初始化

C.对象初始化

D.删除对象

16.下列对派生类的描述中,( D )是错误的。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类成员

D.派生类中继承的基类成员的访问权限到派生类保持不变

17.继承具有( B ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

A规律性 B.传递性 C.重复性 D.多样性

18.C++类体系中,能被派生类继承的是( B )。

A.构造函数B.虚函数C.析构函数D.友元函数

19.下列关于动态联编的描述中,错误的是(D)。

A.动态联编是以虚函数为基础

B.动态联编是运行时确定所调用的函数代码的

C.动态联编调用函数操作是指向对象的指针或对象引用

D.动态联编是在编译时确定操作函数的(如果已经确定还谈什么动态)

20.关于纯虚函数和抽象类的描述中,错误的是(C)。

A.纯虚函数是一种特殊的虚函数,它没有具体的实现

B.抽象类是指具有纯虚函数的类

C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类(如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类)

D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

21.C++源文件的扩展名为(A )。

A.cpp B.c C.txt D.exe

22.在C++语言中,( A )的陈述是正确的。

A.能使用关键字并区分大小写B.能使用关键字并不区分大小写

C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写

23.运算符+、=、*、>=中,优先级最高的运算符是(C)。

A.+ B.= C.* D.>=

24.下列不合法的变量名为( A )。

A.int B.int1 C.name_1 D.name0

25.已知x=43,ch=…A?,y=0;则表达式(x>=y&&ch

A.0 B.语法错C.1 (!y=!0=1只有!0为1,其他都为0)D.“假”

26.以下不正确的是( C )。

A.语句for(i=0;;i++)表示无限循环B.for(;;)表示无限循环

C.for()也表示无限循环(B才对)D.while(1)表示无限循环

27.在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。

A.函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的

B.函数返回值的类型就是返回值表达式的类型(看ACD)

C.函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型

D.函数返回值类型决定了返回值表达式的类型

28.如果一个函数无返回值,定义时它的函数类型应是(C)。

A.任意B.int C.void D.无

29.在C++语言中,关于参数默认值的描述正确的是(B)。

A.只能在函数定义时设置参数默认值

B.设置参数默认值时,应当从右向左设置(如int a,b,c=1,d=33)

C.设置参数默认值时,应当全部设置

D.设置参数默认值后,调用函数不能再对参数赋值

30.若有以下定义,则说法错误的是( D )。

int a=100,*p=&a ;

A.声明变量p,其中*表示p是一个指针变量

B.变量p经初始化,获得变量a的地址

C.变量p只可以指向一个整形变量

D.变量p的值为100 (获得变量a的地址)

31.列关于结构体的说法错误的是(D)。

A.结构体是由用户自定义的一种数据类型

B.结构体中可设定若干个不同数据类型的成员

C.结构体中成员的数据类型可以是另一个已定义的结构体

D.在定义结构体时,可以为成员设置默认值

32.下列有关类的说法不正确的是( C )。

A.对象是类的一个实例

B.任何一个对象只能属于一个具体的类

C.一个类只能有一个对象

D.类与对象的关系和数据类型与变量的关系相似

33.( C )的功能是对象进行初始化。

A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数

34.关于友元的描述中,( A )是错误的。

A.友元函数是成员函数(不能),它被说明在类体内

B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用

D.友元类中的所有成员函数都是友元函数

35.了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A)。

A.public

B. protected

C.private

D. static

36.派生类的对象对它的( A )是可以访问的。

A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员

C. 公有继承的基类的私有成员

D. 保护继承的基类的公有成员

37.多继承派生类构造函数构造对象时,(B)被最先调用。

A.派生类自己的构造函数B.虚基类的构造函数

C.非虚基类的构造函数D.派生类中子对象类的构造函数

38.C++类体系中,不能被派生类继承的有( A )。

A.构造函数(构造函数和析构函数都不可被派生类继承)

B.虚函数

C.静态成员函数

D.赋值操作函数39.编译时的多态性可以通过使用( C )获得。

A.虚函数和指针B.重载函数和析构函数

C.虚函数和对象D.虚函数和引用

40.下列描述中,( D )是抽象类的特征。

A.可以说明虚函数B.可以进行构造函数重载

C.可以定义友元函数D.不能说明其对象

三、指出并改正下列程序段中的语法错误。(6×2,12 分)

题目答案

1.

1.float &refl=x;

float x=3.26f;

int &ref1=x;

2.

2.去掉const

int d1=3, d2=2;

int * const dp=&d1;

dp=&d2;

*dp=5;

3. //Nums为已定义的类

Nums *fp;

fp=new int[4];

3.int改为Nums

4.

void func(int first, int 2_secnd); 4.void func(int first ,int secnd); 数字不能在开头

5.

void Pixel::operator=(Pixel &p1, Pixel&p2);

5.Pixel &Pixel::operator=(Pixel &p1);

6.//Pixel有两个整型成员x和y

Pixel Pixel::operator+=(Pixle&p)const

{

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

return *this;

}

6.去掉const

2、指出并改正下列程序段中的语法错误。(6×2,12 分)

题目答案

1.

int x=13;

const int &ref=x;

ref=10;

1.去掉const

2.

double *fp;

fp=new int(3);

2.double改成int

3. void func( first, int secnd);

3.void func(int first,int secnd);

4. //Pixel有两个整型成员x和y,其拷//拷贝构造

函数定义如下:

void Pixel(const Pixle& p);

4Pixel(const Pixle &p);

5.

friend Pixel & operator=(Pixel &p1, Pixel&p2);

5.Pixel& operator=(Pixel &p1);

6. //Pixel有两个整型成员x和y Pixel Pixel::operator++(int)

{

x++;

y++;

return *this;

}(返回值不能确定是哪个)6. Pixel Pixel::operator++(int) {

Pixel temp;

temp.x=x++;

temp.y=y++;

return temp;

}

四、程序填空

1.编写函数将字符串按逆序存放。#include

#include//put()

#include

void main()

{ int i,n;

char s[100],temp;

cout<<"input string:"<

cin>>s; //(1)注意它的用法!

n= strlen(s); (2)

for(i=0;i

{ temp=s[i];s[i]=s[n-i-1]; s[n-i-1]=temp; } //前后调换

cout<<"Now,string:"<

puts(s); //输出新排列的字符串S

}

2.下列程序定义了类Pixel,请完成前置++和后置++的运算符函数的定义。(注意这道题!)class Pixel{

int x,y;

public:

Pixel(int xx=0,int yy=0){ x=xx; y=yy; }

Pixel operator ++();

Pixel operator ++(int);

void display();

};

Pixel Pixel::operator ++()

{

x++; y++;

return *this (3)

}

Pixel Pixel::operator ++(int)

{s

Pixel temp=*this ; (4 )

x++; y++;

return (5 )temp;

}

void Pixel::display()

{

cout<<"("<

}

3. 根据给定的程序执行结果,将下列程序补充完整。

#include

class Base{

public:

virtual ~Base(){cout<<”Delete Base”<

};

class Derived:public Base{

public:

~Derived(){cout<<”Delete Derived”<

};

void main()

{

Base *p1= new Derived;(8 )

delete p1;

// Derived先得出结果,故可能为析构函数。

//释放了P1就自动调用~Derived()析构函数。就不执行~Base(),故~Base()是虚函数。}

程序的执行结果如下:

Delete Derived

Delete Base

4.定义一个字符串类String,有两个私有数据成员:char* content和int len;要求1)在构造函数中提示用户输入字符串,;

2) 用户能提取和显示字符串;(分别由两个函数完成)

3)实现对字符串中所有小写字母变成大写,并显示。

注意内存的分配与释放。

类定义的部分代码如下,请补充代码使类的定义完整。

#include

#include

#include

class String{

char* content;

int len;

public:

String();

~String(){ delete[] content; ( 1 )}

void display();

void upper_str();

char* get_str() const{ return content; ( 2 )}

};

String::String(){

char ch[50];

cout<<"enter a string: \n";

cin>>ch;

len=strlen(ch);

content= new char[len+1]; ( 3 )

if(!content)

{

cout<<" Memory allocation eror!";

exit(1);

}

strcpy(content,ch);

}

void String::display(){ cout<

for (int i=0;i

if (content<=’z’&&content>=’a’) ( 4 )

content[i]=toupper(content[i]);( 5 )

}

5. 下列程序定义了类Point,请完成前置--和后置--的运算符函数的定义。

class Point{

float x,y;

public:

Point(float xx=0,float yy=0){ x=xx; y=yy; }

Point operator --();

Point operator --(int);

void display();

};

Point Point::operator --()

{

x--; y--;

return *this;( 6 )

}

Point Point::operator --(int)

{

Point temp=*this; (7 )

x--; y=y--;

return temp;(8 )

}

void Point::display()

{

cout<<"("<

}

6、程序填空,直接将答案写在空行上(6×2,12 分)

1.

#include_ //_1_ class A{ 2.

#include #include

int a;

public:

A(int i){a=i;}

void print(){cout<

class B{

A obj_a;

int b;

public:

__B(int j,int i):obj_a(j) //2_ { b=i; }

void print();

};

void B::print() //3_

{

obj_a.print(); cout<

int main( )

{ B obj_b(3,4);

obj_b.print(); return 0; }class Complex{

double real,image;

public:

Complex(double r=0,double i=0) { real=r; image=i; };

friend ostream &operator << (ostream &output ,Complex &obj);

};

ostream &operator <<(ostream &output,Complex &obj)

{

output << obj.real << obj.image;

return output; 6 ;

}

int main()

{

Complex c;

cout<

return 0;

}//重载<<

五、写出程序的运行结果

1. (3 分)

#include

int main(void){

char str[]="configuration";

char *p=str;

cout<

for(int i=0;i

cout<

cout<

for(i=0;i<4;i++)

cout<<*p+i<<' '; //如果是*(p+i)就是输出字符,否者输出ASCII码

cout<

return 0;

}

2. (4分)

# include class Node{

public:

int data;

Node *next;

Node(int d,Node * q=0) { data=d;next=q; } };

int main()

{

3. (3分)

#include

class ConstTest{

int m1,m2;

public:

ConstTest(int x,int y){ m1=x;m2=y;}

void print(){cout<

void print() const;

};

void ConstTest::print() const

{

第1题的运行结果如下:

configuration

cniuain

99 100 101 102

第2题程序运行结果:

输入2a

显示2->*

int n;

Node * p;

Node * q=0;

while (cin>>n){

p=new Node(n,q);

q=p;

}

for(;p;p=p->next)

cout<data<<"->";

cout<<"*\n";

return 0;

}//假定,输入如下3个数据:23 45 67↙

cout<<"const fun: "<

int main()

{

ConstTest a(6,9);

a.print();

const ConstTest b(2,5);

b.print();

return 0;

}

4. (8 分)

#include

class Plane{

protected:

int x,y;

public:

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

virtual void print()

{cout<<'('<

virtual void increase(int d);

};

class Solid:public Plane{

int z;

public:

Solid(int a,int b,int c):Plane(a,b){z=c;}

void print()

{cout<<'('<

};

void Plane::increase(int d){x+=d;y+=d;}

void Solid::increase(int d){x+=d;y+=d;z+=d;} //接右边的代码int main()

{

Plane d1(3,6);

Solid d2(2,7,9);

Plane *ptr;

ptr=&d1; ptr->print();

ptr=&d2; ptr->print();

ptr->increase(4);

ptr->print();

d2.print ();

}

第4题

运行结果:

Plane设为虚,则相同函数取不为虚的即solid。即两个都为(6,11,13)。但如果变量不同则虚函数不执行还是原来的如(3,6)

(2,7,9)

5.去掉上题(即第4小题)程序中的“ virtual”关键字,运行结果如何?(8 分)

第5题

运行结果:

如果没有虚函数则以第一个为基础,第二个不执行,即第二个的printf和increase不执行

(3,6)

(2,7)

(6,11)

(6,11,9)

(3,6)

(2,7,9)

(6,11,13)

(6,11,13)

第3题程序运行结果:

6,9

const fun 7

6. (3分)

#include

class Count{

static int count;

public:

Count(){count++;}

static int Getc(){return count;}

~Count(){count--;}

};

int Count::count=100;

int main(void)

{

Count c1,c2;

cout<

{ //执行完里面才执行析构函数

Count c[3];

cout<

} //执行虚构函数

cout<

return 0;

}

第6题的运行结果:

1. (3 分)

#include

void main(void ) //里面的void有没有一样{

char string[]="fortunate ";

char *p=string;

cout<

cout<<*p<<*(p+2)<<*(p+4)<<*(p+6)<

for(int i=1; i

cout<

} 2. (3 分)

#include

void main() {

int a;

cout<<"please input a number:";

cin>>a;

switch(a%2)

{

case 0: cout<<"a是偶数"<

default: cout<<"a是奇数"<

}

a=a/4;

cout<

}如果输入数为6,则输出结果是什么?

3. ( 3 分)

#include

class Count{

static int count;

public:

Count(){count++;}

static int Getc(){return count;}

~Count(){count--;}

};

int Count::count=10;

void main(void)

{ 4. ( 3 分)

#include

class Point

{

int x,y;

public:

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

void move(int xoffset,int yoffset) {x+=xoffset; y+=yoffset;}

int getx() {return x;}

int gety() {return y;}

};

102

105

102

fortunate frua

otnt a是偶数a是奇数1

Count c1,c2;

cout<

{

Count c3;

cout<

}

cout<

}

答案前面提到过类似题目!class Rectangle:public Point

{

int length,width;

public:

Rectangle(int x,int y,int l,int w):Point(x,y)

{ length=l;width=w;}

int getlength(){return length;}

int getwidth(){return width;}

};

void main()

{

Rectangle r(0,0,4,9);

r.move(33,66);

cout<

}

5. (6 分)

#include

class Base

{

public:

virtual void

show(){cout<<"Base::show()"<

};

class Derived1: public Base

{

public:

void show(){cout<<"Derived1::show()"<

class Derived2: public Derived1

{

public:

void show(){cout<<"Derived2::show()"<

{

Base b;

Derived1 d1;

Derived2 d2;

Base *ptr[3]={&b,&d1,&d2};

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

ptr[i]->show();

}

6.去掉上题(即第5小题)程序中的“ virtual”关键字,运行结果如何?(6分)

12

13

12

33,66,4,9

Base::show()

Derived1::show()

Derived2::show()

Base::show()

Base::show()

Base::show()

1. (3 分)

#include void main(void){ char str[]="safety"; char *p=str; cout<

#include void main(){ int a,b; int n=0; for(a=1,b=1;a<=100;a++) { if(b>=10) break; if(b%3==1) { b+=3; n++; continue; } } cout<

3. ( 3 分)

#include class Pixel{ int x, y; public: static int count; Pixel(){count++;} ~Pixel(){count--;} };

int Pixel::count =0; int main() { Pixel p[6]; Pixel p1=p[2]; cout<

4. (3 分)

#include class A{ int a1,a2; public:

A(int i,int j){a1=i;a2=j;}

void printA(){cout<

class B{ A a; int b1; public:

B(int i,int j,int k); void printB(); };

B::B(int i,int j,int k):a(k,j){ b1=i; } void B::printB(){ a.printA();

cout<

int main(void) {

B bbb(8,2,6); bbb.printB(); return 0;

}

6 10 6

safety

sft

aey

4

10 3

6,2 8

5. (4 分)

#include

class Pixel{

protected:

int x,y;

public: Pixel(int a,int b){x=a;y=b;} virtual void print() {cout<<"("<

class Pixel_3d:public Pixel{ int z; public: Pixel_3d(int a,int b,int c):Pixel(a,b){z=c;} void print() {cout<<"["<

void Pixel_3d::move(int d){x+=d;y+=d;z+=d;} void main() { Pixel d1(6,3);

Pixel_3d d2(2,7,9);

Pixel *ptr;

ptr=&d1; ptr->print();

ptr=&d2; ptr->print(); ptr->move(5); ptr=&d1; ptr->print(); ptr=&d2; ptr->print(); }

6.去掉上题(即第5小题)程序中的 “ virtual”关键字,运行结果如何? (4分)

1. (3 分)

#include void main(void)

{ char string[]="successful "; char *p=string;

cout<

2. (4 分)

#include int main( ) { int x,y; c out<<"Input x,y:"; cin>>x>>y;

cout<<"x="<

cout<<”x*y=”<

}//假定,输入如下两个数据:9 3↙ 第2题运行结果:

3. ( 4 分)

#include class Pixel{ int x, y; public: static int count; Pixel(){count++;} ~Pixel(){count--;} Pixel(const Pixel & obj) { x=obj.x; y=obj.y; count++; } 4. (7 分)

#include class A{ int a; protected: int protect; public:

A(int x){a=x;protect=x+5;cout<<"A"<

class B{ int b;

x=9,y=3 x-y=6

x*y=27

successful

sces ucsfl

(6,3) [2,7,9] (6,3) [7,12,14] (6,3)

(2,7)

(6,3)

(7,12)

};

int Pixel::count =0; int main(){

Pixel p[5];

cout<

Pixel p1=p[1];

Pixel p2=p[2];

cout<

{

Pixel p2[3];

cout<

}

cout<

}

//第3题运行结果:public:

B(int x){b=x;cout<<"B"<

int Getb(){return b;}

};

class C:public A{

int c;

B obj_b;

public:

C(int x,int y,int z);

void show();

};

C::C(int x,int y,int z):A(x),obj_b(y) { c=z; cout<<"C"<

void C::show(){

A::show();

cout<

void main(void){

C c1(1,2,5);

c1.show(); } //第4题运行结果:

5. (6 分)

#include

class B

{ public:

virtual void print(){cout<<"B::print()\n";} };

class D1: public B

{ public:

void print(){cout<<"D1::print()"<

class D2: public D1

{ public:

void print(){cout<<"D2::print()"<

{

B b0;

D1 d1;

D2 d2;

B *p[3]={&b0,&d1,&d2};

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

p[i]->print();

}

第5题的

运行结果:

6.去掉上题(即第5小题)程序中的“ virtual”关键字,运行结果如何?(6分)

第6题的

运行结果:

六.判断下面程序的主函数中语句①~⑩的对错。(10 分) B::print() D1::print() D2::print()

B::print() B::print() B::print()

5 7 10 7 A

B

C

1 6 2,5

#include

class Base{

int a1;

void seta1(int x){a1=x;} public:

int a2;

void seta2(int x){a2=x;}

};

class DerivedB: protected Base{ protected:

int b1, b2;

void setb1(int x){b1=x;} public:

void setb2(int x){b2=x;}

};

class DerivedC: protected DerivedB{ int c1;

void setc1(int x){c1=x;} public:

int c2;

void setc2(int y){c2=y;}

void seta2(int y){Base::seta2(y);}

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

}; int main(){

Base obja;

DerivedB objb;

DerivedC objc;

obja.seta1(9); // ①

objb.setb2 (4); // ②

objc.setc2 (8); // ③

obja.a2=objb.b2+objc.c2;// ④

objb.setb1(18); // ⑤

objb.setb2(objc.c2);// ⑥

objc.Base::seta2(48);//⑦

objc.seta2(34); //⑧

objc.DerivedB::setb2(22);//⑨

objc.setb2(22); // ⑩

return 0;

} //////////////答案如下:对√错×

题①②③④⑤⑥⑦⑧⑨⑩

×√√××√×√×√

五、程序设计(第一题7 分,第二题24分,共计31分)

1. 修改下面给出的程序,但不允许对main( ) 函数在作任何修改,使程序能够在屏幕上输出:(7分)

锄禾日当午,汗滴禾下土。

谁知盘中餐,粒粒皆辛苦。

原来的程序为:

#include

void main(void)

{

cout<<"汗滴禾下土。"<

}

答:修改后的程序如下:

#include

class Base

{

public:

Base()

{

cout<<"锄禾日当午,"<

}

~Base()

{cout<<"谁知盘中餐,"<

cout<<"粒粒皆辛苦。"<

};

Base ba; //不能改main就加个全局对象。

void main(void)

{

cout<<"汗滴禾下土。"<

}

2定义一个抽象类Shape,在此基础上派生出类Rectangel和Circle,二者都有计算对象面积的函数GetGetArea(),计算对象周长的函数GetPerim( ),在主函数中定义一个Shape指针数组分别指向Rectangel和Circle的对象,并通过Shape类的指针数组实现对这两个对象的成员函数的调用,输出圆和矩形的面积和周长。(24分)

#include

using namespace std;

class Shape

{

public:

Shape(float x,float y){X=x;Y=y;}

virtual float GetArea()=0;

virtual float GetPerim()=0;

protected:

float X,Y;

};

class Rectangel:public Shape

{

public:

Rectangel(float len,float wid):Shape(len,wid)

{

}

virtual float GetArea()

{cout<<"矩形面积是"<

return X*Y;

}

virtual float GetPerim()

{cout<<"矩形周长是"<

return 2*(X+Y);

}

};

class Circle:public Shape

{

public:

Circle(float r):Shape(r,r)

{

}

virtual float GetArea()

{cout<<"圆的面积是"<

return 3.14*X *Y;

}

virtual float GetPerim()

{cout<<"圆的周长是"<

return 3.14*2*X;

}

};

void show(Shape *s)

{

cout<GetArea()<

cout<GetPerim()<

}

int main()

{

Rectangel a(1,2);

Circle b(3);

Shape *q[2]={&a,&b};

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

{

show(q[i]);

}

return 0;

}

3. 定义一个字符串类String,有两个私有数据成员:char* content和int len;要求:

1)在构造函数中提示用户输入字符串;

2) 用户能提取和显示字符串;(分别由两个函数完成)

3)实现对字符串中所有小写字母变成大写,并显示。

4)在主函数中定义String类象,并对的对所有成员函数进行测试。

注意内存的分配与释放。(15分)

#include

#include

#include

class String{

char* content;

int len;

public:

String();

~String(){ delete[] content;}

void display();

void upper_str();

char* get_str() const{ return content;}

};

String::String(){

char ch[50];

cout<<"enter a string: \n";

cin>>ch;

len=strlen(ch);

content=new char[len+1];

if(!content)

{

cout<<" Memory allocation eror!";

exit(1);

}

strcpy(content,ch);

}

void String::display(){

cout<

void String::upper_str(){

for (int i=0;i

if(content[i]>='a'&&content[i]<='z')

content[i]=content[i]-'a'+'A';

}

int main(void)

{

String s1;

c语言期末复习试题(附答案)

试卷编号:11201 所属语言:C语言 试卷方案:C语言期末考试 试卷总分:100分 共有题型:4种 一、单项选择共30题(共计60分) 第1题(2.0分) 设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( A ). A:k++ B:k+=1 C:++k D:k+1 第2题(2.0分) 已知int i=5,执行语句i+=++i后, i的值是( C). A:10 B:11 C:12 D:A、B、C都不对 第3题(2.0分) 以下程序的功能是:给r输入数据后,计算半径为r的圆面积s.程序在编译时出错. #include void main( ) /* Beginning */ { int r; float s; scanf("%d",&r); s=p*r*r; printf("s=%f\n",s); 出错的原因是(D ). A:注释语句书写位置错误 B:存放圆半径的变量r不应该定义为整型

C:输出语句中格式描述符非法 D:计算圆面积的赋值语句中使用了非法变量 第4题(2.0分) "\\\″ABC\″\\″的长度是( B ). A:11 B:7 C:5 D:3 第5题(2.0分) 已知int j,i=1;,执行语句j=–i++;后,j的值是( C ). A:1 B:2 C:-1 D:-2 第6题(2.0分) 有以下程序: #include void main( ) { int s=0, a=1, n; scanf("%d", &n); do{ s+=1; a=a–2; }while(a!=n); printf("%d\n", s); } 若要使程序的输出值为2,则应该从键盘输入给n的值是( B ). A:-1 B:-3

江苏大学大一c语言期末复习题汇总

选择题1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D. 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=; B.double b=1+; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

c期末考试试题及答案完整版

c期末考试试题及答案 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

AutoCAD 试卷 一、 单项选择 1、AutoCAD 默认扩展名是 A 、dwt B 、dwg C 、bak D 、dxf 答案:B 2、在CAD 中,以下哪个命令可用来绘制横 平竖直的直线 A 、栅格 B 、捕捉 C 、正交 D 、对象捕捉答案:C 3、按哪个键可切换文本窗口和绘图窗口 A 、F2 B 、F8 C 、F3 D 、F5答案:A 4、默认情况下,命令提示行显示为几行 A 、3 B 、5 C 、2 D 、8答案:A 5、在CAD 中为一条直线制作平行线用什么命令 A 、移动 B 、镜像 C 、偏移 D 、旋转答案:C 6、在图层特性管理器中不可以设定哪项 A 、颜色 B 、页面设置 C 、线 宽 D 、是否打印答案:B 7、绘制建筑图步骤为 A 、墙线、轴线、门窗 B 、墙线、 门窗、轴线 C 、轴线、门窗、墙线 D 、轴线、 墙线、门窗答案:D 8、哪个命令可用于绘制直线与圆弧的复合 体 A 、圆弧 B 、构造线 C 、多段线 D 、样条曲线答案:C 9、如何在图中输入“直径”符号 A 、%%P B 、%%C C 、%%D D 、%%U 答案:B

10、如果要在一个圆的圆心写一个“A”字,应使用以下哪种对正方式 A、中间 B、对齐 C、中心 D、调整答案:A 11、在哪个层创建的块可在插入时与当前层特性一致 A、0层 B、在所有自动产生的层 C、所有图层 D、新建的图层答案:A 12、一个完整的尺寸由几部分组成 A、尺寸线、文本、箭头 B、尺寸线、尺寸界线、文本、标记 C、基线、尺寸界线、文本、箭头 D、尺寸线、尺寸界线、文本、箭头 答案:D 13、要将图形中的所有尺寸都为原有尺寸的2倍,应设定以下哪项A、文字高度 B、使用全局比例 C、测量单位比例 D、换算单位 答案:B 14、三维模型中哪种模型可以进行布尔运算 A、线框模型 B、实心体模型 C、表面体模型答案:B 15、渲染三维模型时,哪种类型可以渲染出物体的所有效果 A、一般渲染 B、普通渲染 C、照片级真实感渲染 D、照片级光线跟踪渲染答案:D 16、样板文件的括展名是 A、BAK B、SVS C、DWT D、DWG 答案:C 17、以下哪种相对坐标的输入方法是画8个单位的线长 A.8, 0 B.@0,8 C.@0<8

数据结构c语言版期末考试复习试题

《数据结构与算法》复习题 一、选择题。 1在数据结构中,从逻辑上可以把数据结构分为 C 。 A ?动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2?数据结构在计算机内存中的表示是指_A_。 A .数据的存储结构B.数据结构 C .数据的逻辑结构 D .数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的A结构。 A .逻辑 B .存储C.逻辑和存储 D .物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储_C A .数据的处理方法 B .数据元素的类型 C.数据元素之间的关系 D .数据的存储方法 5.在决定选取何种存储结构时,一般不考虑A A .各结点的值如何C.对数据有哪些运算 B .结点个数的多少 D .所用的编程语言实现这种结构是否方 6.以下说法正确的是D A .数据项是数据的基本单位 B .数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D .一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1) A .找出数据结构的合理性B.研究算法中的输入和输出的关系 C .分析算法的效率以求改进C.分析算法的易读性和文档性 (2) A .空间复杂度和时间复杂度B.正确性和简明性 &下面程序段的时间复杂度是0( n2) s =0; for( I =0; i

c语言期中考试试题及答案

《C语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】 A) 函数 B) 语句 C) 字符 D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】 A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】 A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】 A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、双精度型、布尔型 D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】 A) 固定的 B) 由用户自己定义的 C) 任意的 D) 与机器字长有关

C期末考试题及答案

C期末考试题及答案 Revised at 2 pm on December 25, 2020.

一、填空题(每空0.5分,共30分) 1、世界坐标系简称__WCS_用户自定义坐标系简称__UCS_。 2、工作空间的切换:“工具”/“工作空间”或“工作空间”工具栏。 3、工具栏包括30种,系统默认的显示工具栏包括:“标准”、“属性”、“绘图”和“修改”等工具栏。 4、多线的对正方式有_上(T)_、_无(Z)_和_下(B)_。 5、文字标注包括标注单行文字和标注多行文字。 6、渲染环境是指在渲染对象时进行的雾化和深度设置。 7、漫游和飞行用户可以通过键盘和鼠标来控制视图显示,并创建导航动画。 8、编辑实体的边的种类:压印边、复制边、着色边。 9、动态块是通过自定义夹点或自定义特性定义的块。在图形中使用动态块,用户可以随时对组成块的对象进行修改。 10、三维实体是具有体积、质量、重心、回转半径、惯性距等特征的三维对象。 11、在AutoCAD 2007中,用户可以创建的光源有电光源、聚光灯光源和平行光光源。 12、相切、相切、半径法是指:通过指定圆的两个切点和半径来绘制圆。 13、绘制圆环的步骤中,先输入圆环的内径和外径,后确定圆环的中心点。 14、计算机辅助设计是:工程技术人员在CAD系统的辅助下,根据产品的设计程序进行设计的一项新技术。 15、菜单栏包括11种,每一种菜单中都含有四种显示情况:命令后跟右三角 、后跟省略号、后跟快捷键或功能键或命令呈灰色。 16、要对图形对象进行编辑就必须选中图形对象,在AutoCAD 2007中,选择对象的方法很多,常用的有_直接拾取_、矩形框选择_、_不规则区域选择_和快速选择。 17、在设置显示精度时,如果设置的精度越高,即分辨率就越高,计算机计算的时间 也越长,显示图形的速度也就越慢。 18、三维基本实体的种类包括:多段体、长方体、楔体、圆柱体、圆锥体、球体、圆环体、棱锥面。 19、布尔运算中只留重复的一部分的运算是交集运算。从一个图形中去掉与另一个图形重复部分的运算是差集运算。

C期末考试复习题理工

一、单项选择题 ( 本大题共 10 小题,每小题 2 分,共 20 分) 1. 在C++中,函数原型不能标识(D ) A. 函数的返回类型 B.函数参数的个数 C.函数参数类型 D.函数的功能 2. 在C++程序中,对象之间的相互通信通过(B ) A. 继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现 3. 对于任意一个类,析构函数的个数最多为 (B ) 5. 友元关系不能 (A ) A. 继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系 D.提高程序的运行效率 6.语句ofstream f ’,ios::a pp | ios::b in ary) ?的功能是建立流对象f,试图打开文件 并 与 之连接,并且 (A ) 将文件写指针定位于文件尾;若文件不存在,建立一个新文件 7.下面说法正确的是 (B ) A. 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C. 类的内联函数必须在类体内定义 D. 类的内联函数必须在类体外通过加关键字 inline 定义 以用 的形式访问派生类对象P 的基类成员a ,其中a 是(D ) A.私有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.公有继承的公有成 公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 ( C) A. 派生类的对象可以赋给基类的对象 B. 派生类的对象可以初始化基类的引用 的指针 A.若文件存在, B. 若文件存在, 将其置为空文件;若文件不存在,打开失败 C. 若文件存在, 将文件写指针定位于文件首;若文件不存在,建立一个新文件 D. 若文件存在, 打开失败;若文件不存在,建立一个新文件 C. 派生类的对象可以直接访问基类中的成员 D. 派生类的对象的地址可以赋给指向基类

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了____15_________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; ___i<100____________; i++) if (___i/3_=__=0__i_______) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是_________7 ______ 5. 以下是使用指针,进行字符串复制的程序,请填空。 main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= _______________; p1++, p2++) _______________=_______________; *p2= ______________; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); } 6. 下面程序用冒泡法对数组a进行降序排序,请填空。 main() { int a[5]={4,7,2,5,1}; int i,j,m; for(i=0;i<4;i++) for(j=0;j<_______________;j++) if( _______________< _______________ ) { m=a[ j]; a[ j]=a[ j+1]; a[ j+1]= m; } for(i=0;i<5;i++) printf("%d ",a[i]); } 7. 函数fun的功能是:使一个字符串按逆序存放,请填空。 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<_______________;i++,j--)

C期末考试题及答案

一、选择填空题(共20小题,每小题2分,共40分)。 1. 关于C++与C语言关系的描述中,(D)是错误的。 语言是C++语言的一个子集 语言与C++语言是兼容的 ++语言对C语言进行了一些改进 ++语言和C语言都是面向对象的 2.按照标识符的要求,(A)符号不能组成标识符。 a.连接符 b.下划线 c.大小写字母 d.数字字符 3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与(C)组成配对关系。 a.缩排位置相同的if b.在其之前未配对的if c.在其之前未配对的最近的if d.同一行上的if 4. 在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(C)。 5. 设"char **s;",以下正确的表达式是(B)。 ="computer"; b.*s="computer"; c.**s="computer"; d.*s='c'; 6. 对于"int *pa[5];"的描述中,(D)是正确的。 是一个指向数组的指针,所指向的数组是5个int型元素 是一个指向某数组中第5个元素的指针,该元素是int型变量

[5]表示某个元素的第5个元素的值 是一个具有5个元素的指针数组,每个元素是一个int型指针 7. 在下列表示引用的方法中,(A)是正确的。 已知:int m=10; &x=m; &y=10; &z; &t=&m; 8. 下列for循环的次数为(B)。 for(i=0, x=0; !x&&i<=5; i++) d.无限 9. 对于C/C++语言的函数,下列叙述中正确的是(A)。 a.函数的定义不能嵌套,但函数调用可以嵌套 b.函数的定义可以嵌套,但函数调用不能嵌套 c.函数的定义和调用都不能嵌套 d.函数的定义和调用都可以嵌套 10. 在一个被调用函数中,关于return语句使用的描述,(D)是错误的。 a.被调用函数中可以不用return语句 b.被调用函数中可以使用多个return语句 c.被调用函数中,如果有返回值,就一定要有return语句 d.被调用函数中,一个return语句可以返回多个值给调用函数 11. 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A)。 a.内联函数 b.重载函数

大学C语言期末考试练习题(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

大一C语言期末考试试题

6.以下程序的输出结果为(D)。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case ‘a’:printf("%c,",c);break; case ‘b’:case ‘e’:printf("ok,"); default: printf("end"); } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 9.以下程序的输出结果为(B)。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf("x=%d\n",x); } A x=93 B x=37 C x=60 D x=90 三写出下列程序的运行结果(10分,每小题2分) 1.main( ) { char c1=‘A’,c2=‘\144’,c3=‘\x44’,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3); printf(“%d,%d\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\n”,c|x); a=c^x<<2;

printf(“a=%d\n”,a); } 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\t”,x); printf(“z=%d\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; while(s[++i]!=‘\0’) t[i]=s[i]; t[i]=0; printf(“string s:%s\n”,s); printf(“string t:%s\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\n”,i);

C期末考试试卷及答案

C++期末考试试卷及答案1 一、单项选择题(每题2分,共40分) 1. ______不是属于面向对象程序设计的特性 A. 抽象性 B. 数据相关性 C. 多态性 D. 继承性 2. 将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的______ A. 类 B. 虚函数 C. 运算符重载 D. 模板 3. C++与C语言最根本的不同之处在于_______ A. 使用了类 B. 能够实现变量自动初始化 C. 支持软件重用 D. 支持接口重用 4. 动态内存分配的主要目的是_______ A. 使程序按动态联编方式运行 B. 正确合理的使用内存 C. 提高程序的运行速度 D. 提高程序的可维护性 5. 在C++函数的形参前加const关键字,是为了提高函数的_______ A. 数据封装性 B. 可理解性 C. 可维护性 D. 可重用性 6. 函数重载的目的是________ A. 实现共享 B. 使用方便,提高可读性 C. 提高速度 D. 减少空间 7. 从程序片断:char name[] = "C++"; course(name);可判断函数course的调用采用的是_______ A. 传值调用 B. 带缺省参数值的函数调用 C. 引用调用 D. 传址调用 8. 用来说明类中公有成员的关键字是________

9. 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为 A. void print() const; B. const void print(); C. void const print(); D. void print(const); 10. 下列关于构造函数的论述中,不正确的是_______ A. 构造函数的函数名与类名相同 B. 构造函数可以设置默认参数 C. 构造函数的返回类型缺省为int型 D. 构造函数可以重载 11. 在程序代码:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的类型是______ A. int B. int * C. A D. A * 12. 内存泄漏是指_______ A. 内存中的数据出现丢失 B.试图释放一个已经释放了的动态分配的堆内存 C. 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用 A. 私有成员数据 B. 私有成员函数 C. 公有成员数据 D. 公有成员函数 14. 友元函数_______ A. 可以被声明为const B. 没有this指针 C. 可以用类名或对象名来调用 D. 只能用对象名来调用 15. 若一个类的成员函数前用static关键字修饰,则该成员函数________ A. 可以被声明为const B. 没有this指针 C. 可以访问该类的所有成员 D. 只能用对象名来调用 16. C++是用_______实现接口重用的

C期末考试复习题理工

一、单项选择题(本大题共10 小题,每小题2 分,共20 分) 1.在C++中,函数原型不能标识(D ) A.函数的返回类型 B.函数参数的个数 C.函数参数类型 D.函数的功能 2.在C++程序中,对象之间的相互通信通过(B ) A.继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现 3.对于任意一个类,析构函数的个数最多为(B ) A.0 B.1 C.2 D.3 5.友元关系不能(A ) A.继承 B.是类与类的关系 C.是一个类的成员函数与另一个类的关系 D.提高程序的运行效率 6.语句ofstream f(″SALARY.DAT″,ios::app|ios::binary)?的功能是建立流对象f,试图打开文件SALARY.DAT 并与之连接,并且(A ) A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B.若文件存在,将其置为空文件;若文件不存在,打开失败 C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 D.若文件存在,打开失败;若文件不存在,建立一个新文件 7.下面说法正确的是(B ) A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义 D.类的内联函数必须在类体外通过加关键字inline 定义 //当程序使用内敛函数时,编译器将每个函数调用都用函数内的语句代替,这样就省去了函数调用地开销 8.可以用p.a 的形式访问派生类对象p 的基类成员a,其中a 是(D ) A.私有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.公有继承的公有成员

精选-C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是( ) A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中( ) A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是( ) A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是( ) A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:float a=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不. 相符的是( ) A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是( ) A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是( ) A) x!=0 B) x==1 C) x!=1 D) x==0 8、有以下程序: #include void main(){ int i=1,j=1,k=2; if( (j++||k++)&&i++ ) printf(“%d,%d,%d\n ”,i,j,k);} 执行后的输出结果是( ) A )1,1,2 B )2,2,1 C )2,2,2 D )2,2,3 9、有以下程序: #include void main(){ int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n ”,s);} 程序执行后的输出结果是( ) A )自然数1~9的累加和 B )自然数1~10的累加和

江苏大学大一c语言期末复习题汇总

选择题 1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D.A.dat 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=1-.le-1; B.double b=1+5e2.5; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s) 14.已知x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。 A.0 B.语法错 C.1 D.“假”

大一c语言期末考试题

大一c语言期末考试题 C语言期末考试试题附答案 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c;

大学C期末考试试卷(含答案)

一、单项选择题(每题2分,共40分)1-5. BDABC 6-10. BDAAC 11-15. CADBB 16-20. CADDA B 1. ______不是属于面向对象程序设计的特性 A. 抽象性 B. 数据相关性 C. 多态性 D. 继承性 D 2. 将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的______ A. 类 B. 虚函数 C. 运算符重载 D. 模板 A 3. C++与C语言最根本的不同之处在于_______ A. 使用了类 B. 能够实现变量自动初始化 C. 支持软件重用 D. 支持接口重用 B 4. 动态内存分配的主要目的是_______ A. 使程序按动态联编方式运行 B. 正确合理的使用内存 C. 提高程序的运行速度 D. 提高程序的可维护性 C 5. 在C++函数的形参前加const关键字,是为了提高函数的_______ A. 数据封装性 B. 可理解性 C. 可维护性 D. 可重用性 B 6. 函数重载的目的是________ A. 实现共享 B. 使用方便,提高可读性 C. 提高速度 D. 减少空间 D 7. 从程序片断:char name[] = "C++"; course(name);可判断函数course的调用采用的是_______ A. 传值调用 B. 带缺省参数值的函数调用 C. 引用调用 D. 传址调用 A 8. 用来说明类中公有成员的关键字是________ A. public B. private C. protected D. friend A 9. 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为 A. void print() const; B. const void print(); C. void const print(); D. void print(const); C 10. 下列关于构造函数的论述中,不正确的是_______ A. 构造函数的函数名与类名相同 B. 构造函数可以设置默认参数 C. 构造函数的返回类型缺省为int型 D. 构造函数可以重载 C 11. 在程序代码:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的类型是______ A. int B. int * C. A D. A * A 12. 内存泄漏是指_______ A. 内存中的数据出现丢失 B.试图释放一个已经释放了的动态分配的堆内存 C. 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用 D 13. 从程序片断:student zhangsan("张三","M",22); zhangsan.id("2005131000");可判断id 是一个________ A. 私有成员数据 B. 私有成员函数 C. 公有成员数据 D. 公有成员函数

C语言期末考试复习题及答案

C语言期末考试复习题及答案 一、选择题:下列各题A)、B)、C)、D)四个选项中只有一个是正 确的,请将正确的选项涂写在答案纸上。答在试卷上不得分。 (1)C语言规定:在一个源程序中,main函数的位置 D 。 A)必须在最后B)必须在系统调用的库函数的后面。 C)必须在最开始。。D)可以任意 (2) C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A 。 A)必须为字母或下划线。。B)必须为下划线。 C)必须为字母D)可以是字母、数字和下划线中的任一种字符。 (3)下面四个选项中,均是正确的八进制数或十六进制数的选项是 B 。 A)-10 0x8f -011 B) 010 -0x11 0xf1 C) 0abc -017 0xc D) 0a12 -0x123 -0xa (4) C语言中int型数据在内存中占两个字节,则unsegned int取值范围是 A 。 A)0 ~ 65535 B)0 ~ 32767 C)-32767 ~ 32768 D)-32768 ~ 327687 (5) 若有定义:int a = 7; floa x = , y = ; 则表达式x + a % 3 * (int) (x + y) % 2/4 的值是 D 。 A) B) 0.00000 C) D) (6)已知ch是字符型变量,下面不正确的赋值语句是 B 。 A)ch = 5 + 9 ; B) ch= ' a + b '; C) ch = ' \ 0 '; D) ch= '7' + '6' ; (7) 设x , y和z是int型变量,且x = 3, y = 4 , z = 5 则下面表达式中值为0的

大一上学期C语言期末复习总结和模拟试题带答案

易错点 C语言中易犯的错误 对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考. ******************************** ******************************** ************************ 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息. C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量 名用大写,变量名用小写表示,以增加可读性. ******************************** ******************************** ************************ 2.忽略了变量的类型,进行了不合法的运算. main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算. ******************************** ******************************** ************************ 3.将字符常量与字符串常量混淆. char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单 引号括起来的单个字符,字符串常量是一对双引号括起来的字符序 列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所 以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一 个字符变量是不行的. ******************************** ******************************** ************************ 4.忽略了"="与"=="的区别. 在许多高级语言中,用"="符号作为关系运算符"等于". 如在BASIC程序中可以写 if (a=3) then … 但C语言中,"="是赋值运算符,"=="是关系运算符.如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后

C语言期末考试_试题及答案_201

C语言期末考试试题及答案最新2012年 一、单项选择题 1. ()是合法的用户自定义标识符。 A、b-b B、float C、 D、_isw 2. 若变量已正确定义并赋值,表达式()不符合C 语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. ()是不正确的字符常量。 A、“ n“、B“ 1“、C“ a“、D“ 101 “ 4. 在C 程序中,用()表示逻辑值“真”。 A、1 B、非0的数 C、非1的数 D、大于0的数 5. ()把x、y 定义成float 类型变量,并赋同一初值3.14。 A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14; 6. 若变量已正确定义,表达式()的值不是2。 A、2&3 B、1?1G a==2D 1八3 7?若变量已正确定义,语句“if(a>b)k=0;else k=1和()等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 8?设变量定义为“int a, b;,执行下列语句时,输入(),则a和b的值都是10。 scanf(“ a=%d, b=%d“ ,&;a, &b) A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10

9. 下列程序的输出结果是()。fun(int a, int b, int c) { c =a*b; } void main () { int c; fun(2,3,c); printf(” %dn” ,c); } A、0 B、1 C 6 D、无法确定 10. 在C 程序中,若对函数类型未加说明,则函数的隐含类型为()。 A、int B、double C、void D、char 11. 表达式strlen(” he的0值是)()。 A、4 B、5 C、6 D、7 12. 设变量定义为“ int a[4];,则表达式()不符合C语言语法。 A、*a B、a[0] C、a D、a++ 13. 设变量定义为“int x, *p=&x;,则&*p相当于()。 A、p B、*p C、x D、*&x 14. 若变量已正确定义,()不能使指针p成为空指针。 A、p=EOF B、p=0 C、p=''、pD=NULL 15. 对于以下的变量定义,表达式()不符合C语言语法。struct node {

相关文档
最新文档