文档库 最新最全的文档下载
当前位置:文档库 › C++习题

C++习题

C++习题
C++习题

第1章面向对象程序设计概述

一、选择题

1、C++是(C)。

A 面向对象的程序设计语言

B 结构化程序设计语言

C 既是面向对象的程序设计语言又是结构化的程序设计语言

D 非结构化的程序设计语言

2、C++语言属于(D)。

A 机器语言

B 低级语言

C 中级语言

D 高级语言

3、下面关于对象概念的描述中,错误的是(A)。

A 对象就是C语言中的结构变量

B 对象代表着正在创建的系统中的一个实体

C 对象是一个属性和操作(或方法)的封装体

D 对象之间的信息传递是通过消息进行的

4、下面关于类概念的描述中,错误的是(D)。

A 类是抽象数据类型的实现

B 类是具有共同行为的若干对象的统一描述体

C 类是创建对象的样板

D 类就是C语言中的结构体类型

5、下列关于C++类的描述中错误的是(C)。

A 类与类之间可以通过一些手段进行通信和联络

B 类用于描述事物的属性和对事物的操作

C 类与类之间必须是平等的关系,而不能组成层次关系

D 类与类之间可以通过封装而具有明确的独立性

6、面向对象程序设计思想的主要特征中不包括(D)。

A 封装性

B 多态性

C 继承性

D 功能分解,逐步求精

二、填空题

1、构成对象的两个主要因素是属性和行为,其中属性用于描述对象的静态特征,行为用于描述对象的动态特征。

2、类和对象的关系可表述为:类是对象的抽象,而对象则是类的实例。

3、封装包含两方面含义,一是用对象把属性和操作这些属性的操作包装起来,二将对象中某些部分对外隐藏。

4、继承是指特殊类自动地拥有或隐含地复制其一般类的全部属性与操作。

5、面向对象的软件工程包括的五个阶段为:面向对象分析,面向对象设计,

面向对象编程,面向对象测试,面向对象维护。

第2章C++基础知识

一、选择题

1、下列关于C++语言的发展说法错误的是(C)。

A C++语言起源于C语言

B C++语言最初被称为“带类的C”

C 在1980年C++被命名

D 在1983年C++被命名

2、C++语言是以语言为基础逐渐发展而演变而成的一种程序设计语言。( B )

A Pascal

B

C C Basic

D Simula67

3、下列关于C++与C语言关系的描述中错误的是(C)。

A C++是C语言的超集

B C++是C语言进行了扩充

C C++和C语言都是面向对象的程序设计语言

D C++包含C语言的全部语法特征

4、下列C++标点符号中表示行注释开始的是(C)。

A #

B ;

C //

D }

5、每个C++程序都必须有且仅有一个(B)。

A 预处理命令

B 主函数

C 函数

D 语句

6、C++对C语言做了很多改进,下列描述中哪一项使得C语言发生了质变,即从面向过程变成面向对象(D)。

A 增加了一些新的运算符

B 允许函数重载,并允许设置默认参数

C 规定函数说明必须用原型

D 引进类和对象的概念

7、对定义重载函数的下列要求中,错误的是(D)。

A 要求参数的个数不同

B 要求参数中至少有一个类型不同

C 要求参数个数相同时,参数类型不同

D 要求函数的返回值不同

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

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

B 函数返回值的类型就是返回值表达式的类型

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

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

9、下列不正确的选项是(D)。

A C++语言是一种既支持面向过程程序设计,又支持面向对象程序设计的混合型语言

B 关键字是在程序中起分割内容和界定范围作用的一类单词

C iostream是一个标准的头文件,定义了一些输入输出流对象

D 类与类之间不可以进行通信和联络

10、下列表示引用的方法中,正确的是(A)。

已知:int k=1000;

A int &x=k;

B char &y;

C int &z=1000;

D float &t=&k;

二、填空题

1、C++既可以用来进行面向对象程序设计,又可以进行面向过程程序设计。

2、常量分成两种,一种是直接常量,另一种是符号常量。

3、引用就是某一变量的别名,对其操作与对变量直接操作完全一样。

4、按函数在语句中的地位分类,可以有以下3种函数调用方式:函数语句,

函数表达式,函数参数。

5、函数与引用联合使用主要有两种方式:一是函数的参数是引用;二是函数的返回值是引用。

6、头文件由三部分内容组成:头文件开头处的文件头注释,预处理块,函数和类结构声明。

三、程序阅读题

1、分析下面的执行结果

#include

using namespace std;

int main()

{

int a,b,sum; // 定义a,b,sum三个整型变量

a=43; // 把整数常量赋给变量a

b=37;

sum=a+b; // a与b相加的和赋给变量sum

cout<<"The sum is"<

cout<

return 0;

}

2、分析以下程序的执行结果

#include

using namespace std;

int main()

{

int a;

int &b=a; //变量引用

b=10;

cout<<"a="<

return 0;

}

3、下列程序的执行结果为

#include

using namespace std;

void mian()

{

int n=10;

int* pn=&n;

int* &rn=pn;

(*pn)++;

cout<<"n="<

(*rn)++;

cout<<”n=”<

}

4、下面程序的运行结果是

#include

using namespace std;

void fun(int &a,int &b)

{ int p;

p=a; a=b; b=p;

}

void exchange(int &a,int &b,int &c)

{

if(a

if(a

if(b

}

int main()

{

int a,b,c;

a=12;

b=639;

c=78;

exchange(a,b,c);

cout<<"a="<

return 0;

}

5、下面的程序输出结果为

#include

using namespace std;

int main()

{

int *ir;

int i;

ir=&i;

i=17;

cout<<"int i="<

cout<<"int ir="<<*ir<

}

6、下面程序的输出结果为

#include

using namespace std;

int fun(char *s);

int main()

{

cout<

return 0;

}

int fun(char *s)

{ char *t=s;

while(*t!='\0')

t++;

return(t-s);

}

第3章类和对象

一、选择题

1、有关类的说法不正确的是( D )。

A 类是一种用户自定义的数据类型.

B 只有类中的成员函数才能存取类中的私有成员.

C 在类中,如果不做特别说明,所指的数据均为私有类型.

D 在类中,如果不做特别说明,所指的成员函数均为公有类型。

2、下面说法正确的是(B)。

A 类定义只能说明成员函数头,不能定义函数体

B 类中的函数成员可以在类体中定义,也可以在类体之外定义

C 类的函数成员在类体之外定义时必须要与类声明在同一文件中

D 在类体之外定义的函数成员不能操作该类的私有数据成员

3、已知类X中的一个成员函数说明如下:

void Set(x &a);

其中,X &a的含义是(C)。

A 指向类X的指针为a

B 将a的地址赋给变量Set

C a是类X的对象引用,用来做为Set()的形参

D 变量X是a按位相与作为函数Set()的参数

4、有关类和对象的说法不正确的是(B)。

A 对象是类的一个实例

B 一个类只能有一个对象

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

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

5、关于常数据成员的说法不正确的是(D)。

A 常数据成员的定义形式与一般常量的定义形式相同,只不过常数据成员的定义必须出现在类体中.

B 常数据成员必须进行初始化,并且不能被更新

C 常数据成员通过构造函数的成员初始化列表进行初始化

D 常数据成员可以在定义时直接初始化

6、下列关于成员访问权限的描述中,不正确的是(B)。

A 公有数据成员和公有成员函数都可以被类对象直接处理

B 类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问

C 保护成员在派生类中可以被访问,而私有成员不可以

D 只有类或派生类的成员函数和友元类或友元函数可以访问保护成员

7、类定义的内容允许被其他对象无限制地存取是(C)。

A private 部分

B protected 部分

C public 部分D以上都不对

8、下列不是构造函数的特征的是(D)。

A 构造函数的函数名与类名相同

B 构造函数可以重载

C 构造函数可以设置默认参数

D 构造函数必须指定类型说明

9、有关析构函数的说法不正确的是(B)。

A 析构函数有且仅有一个

B 析构函数和构造函数一样可以有形参

C 析构函数的功能是在系统释放对象之前作一些内存清理工作

D 析构函数无任何函数类型

10、下列的各类函数中,不是类的成员函数的是(C)。

A 构造函数

B 析构函数

C 友元函数

D 拷贝构造函数

11、关于对象成员的构造函数的调用顺序,说法正确的是( C )。

A与它们在成员初始化列表中给出的顺序相同

B与析构函数的调用顺序相同

C与它们在类中说明顺序相同

D以上说法都不对

12、下面说法中正确的是(B)

A 一个类只能定义一个构造函数,但可以定义多个析构函数

B 一个类只能定义一个析构函数,但可以定义多个构造函数

C 构造函数与析构函数同名,只要名字前加了一个求反符号(~)

D 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以

二、填空题

1、类的私有成员只能被该类的成员函数或友元函数访问。

2、类的数据成员不能在定义时初始化,而应该通过类的构造函数初始化。

3、类的成员的可访问性可分为三类:public、private、protected。

4、类成员默认的访问方式是private 。

5、类的公用成员可以被类作用域内的任何对象访问。

6、声明完类之后,就可以使用类来定义对象了,这个过程称为实例化。

7、类中有两类成员,一类是数据成员,用来描述对象的静态属性;另一类则是成员函数,用来描述对象的动态行为。

8、通过指针访问公有成员是使用“->”运算符,通过对象访问公有成员是使用“.”运算符。

9、假定AB是一个类,则语句AB(const AB &)是该类拷贝构造函数的原形说明。

10、析构函数在对象的生命周期结束时被自动调用,全局对象和静态对象的析构函数在main函数执行完毕或调用exit函数结束时调用。

三、程序分析题

1、写出程序的运行结果

#include

using namespace std;

Class MyClass{

public:

int number;

void set(int i);

};

int number=3;

void MyClass::set(int i)

{

number=i;

}

void main()

{

MyClass my1;

int number=10;

my1.set(5);

cout<

my1.set(number);

cout<

my1.set(::number);

cout<

}

2、分析以下程序的执行结果

#include

class Sample

{

int x;

public:

Sample(){};

Sample(int a){x=a;}

Sample(Sample &a){x=a.x+1;}

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

};

void main()

{

Sample s1(2),s2(s1);

s2.disp();

}

3、分析以下程序的执行结果

#include

class Sample

{

int x,y;

public:

Sample(){x=y=0;}

Sample(int i,int j){x=i;y=j;}

void copy(Sample &s);

void setxy(int i,int j){x=i;y=j;}

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

void Sample::copy(Sample &s)

{

x=s.x;y=s.y;

}

void func(Sample s1,Sample &s2)

{

s1.setxy(10,20);

s2.setxy(30,40);

}

void main()

{

Sample p(1,2),q;

q.copy(p);

func(p,q);

p.print();

q.print();

}

4、分析以下程序的执行结果

#include

class Sample

{

public:

int x;

int y;

void disp()

{

cout<<"x="<

}

};

void main()

{

int Sample::*pc;

Sample s;

pc=&Sample::x;

s.*pc=10;

pc=&Sample::y;

s.*pc=20;

s.disp();

}

5、写出下面程序的执行结果

#include

class Sample

{

int A;

static int B;

public:

Sample(int a){A=a,B+=a;}

static void func(Sample s);

};

void Sample::func(Sample s)

{

cout<<"A="<

}

int Sample::B=0;

void main()

{

Sample s1(2),s2(5);

Sample::func(s1);

Sample::func(s2);

}

第4章继承与组合

一、选择题

1、下面对派生类的描述中,错误的是(D)。

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

B派生类至少有一个基类

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

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

2、在多继承中,公用继承和私有继承对于基类成员在派生类中的可访问性与单继承的规则是(A)。

A完全相同B完全不同

C部分相同,部分不同D以上都不对

3、下面叙述不正确的是(D)。

A派生类一般都是公用派生

B对基类成员的访问必须是无二义性的

C赋值兼容规则也适用于多重继承的场合

D基类的公用成员在派生类中仍然是公用的

4、下面叙述不正确的是(A)。

A基类的保护成员在派生类中仍然是保护的

B基类的保护成员在公用派生类中仍然是保护的

C基类的保护成员在私有派生类中仍然是私有的

D对基类成员的访问必须是无二义性的

5、当保护继承时,基类的( B )在派生类中成为保护成员,不能通过派生类的对象来直接访问。

A任何成员B公用成员和保护成员

C公用成员和私有成员D私有成员

6、若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的

(D)。

A任何成员B公用成员

C保护成员D私有成员

7、设置虚基类的目的是(B)。

A简化程序B消除二义性

C提高运行效率D减少目标代码

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

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

9、在公用继承情况下,有关派生类对象和基类对象的关系,不正确的叙述是(C)。

A派生类的对象可以赋给基类的对象

B派生类的对象可以初始化基类的引用

C派生类的对象可以直接访问基类中的成员

D派生类的对象的地址可以赋给指向基类的指针

10、有如下类定义:

class MyBASE

{public:

void set(int n) { k=n ;}

int get()const{ return k ;}

protected:

int k;

} ;

class MyDERIVDE: protected MyBASE{

public:

void set(int m. int n) { MyBASE::set(m); j=n;}

int get()const{ return MyBASE::get()+j;}

protected:

int j ;

};

则类MyDERIVDE中保护的数据成员和成员函数的个数是( C )。

A 4 B 3 C2D 1

11、有如下程序:

#include

using namespace std;

class A {

pubilc:

A( ) { cout << “A” ; }

};

class B {

public :

B( ) { cout << “B” ; }

};

class C : public A {

public :

C( ) { cout << “C ”; }

private:

B b ;

};

int main ( ) {

C obj ;

return 0 ;

}

执行后的输出结果是(D)。

ACBA BBAC CACBDABC

12、有如下程序:

#include

using namespace std;

class BASE{

public:

~BASE( ) { cout<<”BASE” ;}

};

class DERIVED : public BASE {

public :

~ DERIVED( ) { cout<<” DERIVED” ; }

};

int main ( ) {

DERIVED X;

return 0 ;

}

执行后的输出结果是( C )。

ABASE BDERIVED CBASE DERIVEDDDERIVEDBASE 13、有如下程序:

#includ

using namespace std;

class Base {

public:

void fun ( ){ cont<<”Base::fun”<

};

class Derived : public Base {

public:

void fun( )

{

cout<<”Derivde::fun”<

void main ( ) {

Deriver d ;

d.fun ( ) ;

}

已知其执行后的输出结果为:

Base::fun

Derived::fun

则程序中下划线处应添入的语句是(B)。

ABase.fun(); BBase::fun(); CBase->fun()Dfun();

二、填空题

1、在C++中,三种继承方式的说明符号为public、private 、protected ,如果不加说明,则默认的继承方式为private。

2、当公用继承时,基类的公用成员成为派生类的公用成员;保护成员成为派生类的保护成员;私有成员成为派生类的不可访问成员。

3、当保护继承时,基类的公用成员成为派生类的保护成员;保护成员成为派生类的保护成员;私有成员成为派生类的不可访问成员。

4、当私有继承时,基类的公用成员成为派生类的私有成员;保护成员成为派生类的私有成员;私有成员成为派生类的不可访问成员。

5、多继承时,多个基类中同名成员在派生类中由于标识符不唯一而出现二义性。

第5章多态性与虚函数

一、选择题

1、向不同的对象发送统一消息可导致完全不同的行为的现象称为(A)。

A 多态性

B 抽象

C 继承

D 封装

2、多态调用是指(C)。

A 以任何方式调用一个虚函数

B 以任何方式调用一个纯虚函数

C 借助于指向对象的基类指针或引用调用一个虚函数

D 借助于指向对象的基类指针或引用调用一个纯虚函数

3、下面关于抽象类说法不正确的是(C)。

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

B 一个声明有纯虚函数的基类一定是抽象类

C 可以用抽象类定义对象

D 抽象类中可以进行构造函数的重载

4、在C++中,用于实现运行时多态性的是(D)。

A 内联函数

B 重载函数

C 模板函数

D 虚函数

5、关于纯虚函数,下列表述正确的是(B)。

A 纯虚函数是未给出实现版本(即无函数体定义)的虚函数

B 纯虚函数的声明总是以“=0”结束

C 派生类必须实现基类的纯虚函数

D 含有纯虚函数的类一定是派生类

6、关于虚函数,下列表述正确的是(B)。

A 如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数

B 虚函数不得声明为静态函数

C 虚函数不得声明为另一个类的友元函数

D 派生类必须重新定义基类的虚函数

7、关于纯虚函数和抽象类的描述中,错误的是(A)。

A 纯虚函数是一种特殊的虚函数,它没有具体的定义

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

C 抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出

D 一个基类中说明有纯虚函数,该基类的派生类只有实现了基类的所有纯虚函数,才可以用派生类来定义对象。

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

A 可以说明虚函数

B 可以进行构造函数的重载

C 可以定义友元函数

D 不能定义其对象

9、抽象类应该有(D)。

A 至少一个虚函数

B 至多一个虚函数

C 至多一个纯虚函数

D 至少一个纯虚函数

10、关于虚函数的说法正确的是(C)。

A 基类的虚函数可为派生类继承,继承下来仍为虚函数

B 虚函数重定义时必须保证其返回值和参数个数及类型与基类中的一致

C 虚函数必须是一个类的成员函数,不能是友元,也不能是静态函数,但可以作为其他类的友元

D 析构函数和构造函数都可是虚函数,都可被继承

二、填空题

1、C++中的多态性可以分为4类:参数多态、包含多态、重载多态和强制多态。前面两种统称为通用多态,而后面两种统称为专用多态。

2、向上类型转换是指把一个派生类的对象作为一个基类的对象来使用。

3、多态性从实现的角度来讲可以划分为两类:静态多态行和动态多态行。

4、虚函数的声明方法是在函数原型前加上关键字virtual。

5、如果一个类包含一个或多个纯虚函数,则该类为抽象类。

第6章面向对象的妥协

一、选择题

1、下面关于友元的描述中,错误的是(D)。

A 友元函数可以访问该类的私有数据成员。

B 一个类的友元类中的成员函数都是这个类的友元函数。

C 友元可以提高程序的运行效率。

D 类与类之间的友元关系可以继承。

2、友元访问类的对象的成员时使用(D)

A 类的成员名

B this指针指向成员名

C “类名::成员名”的形式

D “对象名.成员名”的形式

3、已知类A是类B的友元,类B是类C的友元,则(D)。

A 类A一定是类C的友元

B 类C一定是类A的友元

C 类C的成员函数可以访问类B的对象的任何成员

D 类A的成员函数可以访问类B的对象的任何成员

4、下面对静态数据成员的描述中,正确的是(A)。

A 静态数据成员是类的所有对象共享的数据

B 类的每个对象都有自己的静态数据成员

C 类的不同对象有不同的静态数据成员值

D 静态数据成员不能通过类的对象调用

二、填空题

1、友元可以访问与其有好友关系的类中的任何成员。友元包括友元函数和友元类。

2、声明友元的关键字是friend。

3、类的静态成员包括静态数据成员和静态成员函数。

4、静态数据成员是在程序编译时被分配空间的,到程序结束时才释放空间。

第7章运算符重载

一、选择题

1、下列运算符中,下列哪个运算符在C++中不能重载(C)。

A &&

B []

C ::

D new

2、下列关于运算符重载的描述中,正确的是(D)。

A 运算符重载可以改变操作数的个数

B 运算符重载可以改变优先级

C 运算符重载可以改变结合性

D 运算符重载不可以改变语法结构

3、在表达式x+y*z中,+是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。下列叙述中正确的是(C)。

A operator+有两个参数,operator*有两个参数

B operator+有两个参数,operator*有一个参数

Coperator+有一个参数,operator*有两个参数

D operator+有一个参数,operator*有一个参数

4、在下列成对的表达式中,运算符“+”的意义不相同的一对是(C)。

A 5.0+2.0和5.0+2

B 5.0+2.0和5+2.0

C 5.0+2.0和5+2

D 5+2.0和5.0+2

5、下列关于运算符的重载叙述正确的是(C)。

A 通过运算符重载,可以定义新的运算符

B 有的运算符只能作为成员函数重载

C 若重载运算符+ ,则相应的运算符函数名是+

D 重载一个二元运算符时,必须声明两个形参

6、如果表达式++i*k中的“++”和“*”都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为(B )。

A operator*(i.operator++(),k)

B operator*(operator++(i),k)

C i.operator++().operator*(k)

D k.operator*(operator++(i))

7、已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下面关于这个函数叙述错误的是(B)。

A 这是运算符-的重载运算符函数

B 这个函数所重载的运算符是一个一元运算符

C 这是一个成员函数

D 这个函数不改变类的任何数据成员的值

8、下列关于运算符的重载说法不正确的是(D)。

A 它可以是成员函数B它可以是友元函数

C它既不是成员函数也不是友元函数 D 它只能是成员函数

二、填空题

1、运算符的重载是对c++已用的的运算符赋予多重含义,导致不同行为,定义重载运算符函数的关键字是operator。

2、要在类的对象上使用运算符,除了运算符=和&外,都须被重载。

3、C++中不能被重载的运算符有.、.*、:: 、?:、sizeof 。

4、重载不改变运算符的操作数的个数、结合性、优先级。

5、对双目运算符,被重载为成员函数时,有 1 参数,被重载为友元函数时,

有2参数。

第8章模板

一、选择题

1、关于模板函数与函数模板的说法正确的是(C)。

A 其实质是一样的,只是说法不同

B 两者的形参类型是一样的

C 模板函数是模板的实例化

D 函数模板是模板函数的实例化

2、模板的使用实际上是将类模板实例化成一个(C)。

A 函数

B 对象

C 类

D 抽象类

3、类模板的模板参数(D)。

A 只可作为数据成员的类型

B 只可作为成员函数的返回类型

C 只可作为成员函数的参数类型

D 以上三者均可

4、模板的参数(A)。

A 可以有多个B不能是基本数据类型

C 可以是0个D参数不能给初值

5、template

class apple{…};

定义模板类apple的成员函数的正确格式为( C )。

A T apple::Push(T object)

B T apple::Push(T object)

C template

T apple::Push(T object)

D template

T apple::Push(T object)

6、下列说法正确的是(D )。

A函数模板的友元函数必须是模板

B模板函数可以被同名的另一个模板函数重载

C 形式参数的名字只能在模板函数的形式参数表中出现一次

D 关键字class定义函数模板类型参数,实际上表示任何用户自定义类型

二、填空题

1、函数模板使设计与具体数据类型无关的通用算法的良好机制,

它可以用一种抽象数据类型设计通用算法。

2、通过关键字template可以声明模板,通过关键字class 或typename指定函数模板的类型参数,有几个类型参数就有几个关键字,它实际表示任何标准数据类型或用户自定义数据类型。

3、模板形参表表示将被替换的模板参数,模板参数之间用逗号分隔,它有待于实例化。

4、将函数模板中的参数实例化后,函数模板变成模板函数。

5、对函数模板的实例化可以有两种显示方式:显示方式、隐式方式,其中的隐式方式是编译程序根据实参的类型自动实例化模板。

6、模板定义的形式参数可用来指定传递给函数的参数类型、函数返回类型、声明函数中的变量。

第9章输入/输出流

一、选择题

1、在程序中要进行文件的输出,除了包含iostream头文件外,还要包含头文件(B)。

A ifsteam

B fstream

C ostream

D cstdio

2、执行下列语句:

char *str;

cin>>str;

cout<

若输入abcd 1234↙则输出(A)。

A abcd

B abcd 1234

C 1234

D 输出乱码或出错

3、执行下列语句:

char a[200];

cin.getline(a,200, ' ');

cout<

若输入abcd 1234↙则输出(A)。

A abcd

B abcd 1234

C 1234

D 输出乱码或出错

4、定义char*p="abcd",能输出p的值("abcd"的地址)的为(B)。

A cout<<&p;

B cout<

C cout(char*)p;

D cout<(p)

5、定义int a;int *pa=&a;下列输出式中,结果不是pa的值(a的地址)的为( C )。

A cout<

B cout<< (char*)pa;

C cout<< (void*)pa;

D cout<< (int*)pa;

6、下列输出字符方式错误的是(A)。

A cout<

B cout<<'A';

C cout.put('A');

D char C='A';cout<

7、当使用ofstream定义一个文件流对象,并将一个打开文件的文件与之连接,文件默认的打开方式为(B)。

A ios::in

B ios::out

C ios::in|ios::binary

D ios::out|ios::binary

8、当使用ifstream定义一个文件流,并将一个打开文件的文件与之连接,文件默认的打开方式为(A)。

A ios::in

B ios::out

C ios::in|ios::binary

D ios::out|ios::binary

9、对于函数put()的说法不正确的是(C)。

A 其参数可以是字符常量

B 其参数可以是字符变量

C 它的功能是输出字符并换行

D 将字符送入输出流

10、关于函数write()说法错误的是(D)。

A 它可以把字符串送到输出流

B 它有两个参数,一个是字符串常量或字符串变量,一个是标示要输出的字符的个数的整型变量

C 它的两个参数的顺序不可颠倒

D 它不能输出二进制流

二、填空题

1、标准输入流对象为cin,与>>连用,用于输入;cout为标准输出流对象,与<<连用,用于输出。

2、头文件iostream中定义了4个标准流对象cin,cout,cerr,clog。

3、ostream类定义了3个输出流对象,即cout,cerr,clog。

4、成员函数put()提供了一种将单个字符送进输出流的方法。其使用格式为:

cout.put(字符常量或字符变量或字符ASCII值或整型表达式)。

5、文件输入是指从文件向内存读入数据;文件输出是指从内存向文件输出数据。第10章异常处理

一、选择题

1、下列关于异常的说法错误的是(A )。

A 编译错属于异常,可以抛出

B 运行错属于异常

C 硬件故障也可以当异常抛出

D 只要编程者认为是异常的都可以当异常抛出

2、下面描述错误的是(C)。

A throw语句须书写在try语句块中

B throw语句必须在try语句块中直接运行或通过调用函数运行

C 一个程序中可以有try语句没有throw语句

D throw语句抛出的异常可以不被逮捕

3、关于函数声明float fun(int a,int b)thow(),下列叙述正确的是(C )。

A 表明函数抛出float类型异常

B 表明函数抛出任何类型异常

C 表明函数不抛出任何类型异常

D 表明函数实际抛出的异常

4、下列叙述错误的是(C)。

A catch(…)语句可以捕获所有类型的异常

B 一个try语句可以有多个catch语句

C catch(…)语句可以放在catch语句组的中间

D 程序中try语句与catch语句是一个整体,缺一不可

5、用来抛弃异常的语句块是(C)。

A catch语句块

B try语句块

C throw语句块

D abort语句块

6、程序当中没有与被抛弃的数据类型相匹配的catch语句块时,则系统调用的函数是(B)。

A throw

B abort

C try

D catch

二、填空题

1、程序中有两种错误:语法错误和运行错误,后者又分为逻辑错误和

运行异常。

2、异常处理机制是指对程序运行时出现的差错以及其他例外情况的一系列处理。

3、C++处理异常的机制是由3个部分组成的,即检查(try) 、抛出(throw)和捕捉(catch)。

4、由异常类建立的对象称为异常对象。

5、异常处理的目的是在异常发生时,尽可能地减少破坏,妥善处理,而不去影响其他部分程序的运行。

c练习题(带答案)

一、选择题 1.C++语言属于( C )。 A)自然语言B)机器语言C)面向对象语言D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。 A)继承性B)多态性C)相似性D)封装性 3.可用作C++语言用户标识符的一组标识符是( B )。 A)void define +WORD B)a3_b3 _123 YN C)for -abc Case D)2a DO sizeof 4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为 (A)。 A)0 B)4 C)8 D)6 5.下列情况中,哪一种情况不会调用拷贝构造函数( B ) A)用派生类的对象去初始化基类对象时 B)将类的一个对象赋值给该类的另一个对象时 C)函数的形参是类的对象,调用函数进行形参和实参结合时 D)函数的返回值是类的对象,函数执行返回调用者时 6.以下哪一关键字可用于重载函数的区分(C) A)extern B)static C)const D)virtual 7.下列有关数组的叙述中,正确的是( B ) A)C++中数组的存储方式为列优先存储 B)数组名可以作为实参赋值给指针类型的形参 C)数组下标索引从1开始,至数组长度n结束 D)数组指针的语法形式为:类型名*数组名[下标表达式]; 8.下列有关继承和派生的叙述中,正确的是( C) A)派生类不能访问通过私有继承的基类的保护成员 B)多继承的虚基类不能够实例化 C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数 D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 9.实现运行时多态的机制是( A ) A)虚函数B)重载函数C)静态函数D)模版函数 10.若有下面的函数调用:

C经典习题答案

1.在类作用域中能够通过直接使用该类的()成员名进行访问。 A. 私有 B. 公用 C. 保护 D. 任何 答案:D 2.小数类型和浮点类型都可以表示小数,正确说法:( ) A. 两者没有任何区别 B. 小数类型比浮点类型取值范围大 C.小数类型比浮点类型精度高 D. 小数类型比浮点类型精度低 答案:C 3.能作为C#程序的基本单位是( )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 答案:B 4. 可用作C#程序用户标识符的一组标识符是( )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 答案:B 5.引用类型主要有4种:类类型、数组类型、接口类型和()。 A.对象类型 B.字符串类型 C.委托类型 D.整数类型 答案:C 6.使用Dirctory类的下列方法,可以获取指定文件夹中的文件的是(). A.Exists() B.GetFiles() C.GetDirectories() D.CreateDirectory() 答案:B 7.加载窗体时触发的事件是( )。 A. Click B.Load C.GotFoucs D.DoubleClick

答案:B 8.改变窗体的标题,需修改的窗体属性是( )。 A. Text B. Name C.Title D. Index 答案:A 9.在接口的成员中,不能包含( ). A.属性 B.方法 C.事件 D.常量 答案:D 10.在C#中定义接口时,使用的关键字是( )。 A.interface B.: C.class D.overrides 答案:A 1.当在程序中执行到语句时,将结束所在循环语句中循环体的一次执行。 答案:continue 2.元素类型为double的2行5列的二维数组共占用字节的存储空间。 答案:80 3.C#数组类型是一种引用类型,所有的数组都是从System命名空间的类继承而来的引用对象。 答案:object 4.枚举是从System. 类继承而来的类型。 答案:Enum 5.一般将类的构造方法声明为访问权限。如果声明为private,就不能创建该类的对象。 答案:public或公有 6.类中声明的属性往往具有get()和两个函数。 答案:set() 7.对于方法,参数传递分为值传递和两种。

C语言期末考试题库(第一章 c语言基

一、单项选择 1.算术运算符,赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为(). A、关系运算,赋值运算,算术运算 B、算术运算,关系运算,赋值运算 C、算术运算,赋值运算,关系运算 D、关系运算,算术运算,赋值运算 答案:B 2.下述正确的C语言常量是:(). A、E2 B、3e-3 C、1.5E2.5 D、5.0E 答案:B 3.使用共用体变量,不可以(). A、进行动态管理 B、节省存储空间 C、同时访问所有成员 D、简化程序设计 答案:C 4.为表示关系x>=y>=z,应使用C语言表达式为:()

A、(x>=y)&(y>=z) B、(x>=y>=z) C、(x>=y)&&(y>=z) D、(x>=y)AND(y>=z) 答案:C 5.以下程序的输出结果是(). main() {char str[]="ABCD",*p=str;printf("%s\n",p);} A、68 B、ABCD C、不确定的值 D、字符D的地址 答案:B 6.char a[10];不能将字符串"abc"存储在数组中的是(). A、a="abc"; B、a[0]=0;strcat(a,"abc"); C、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; D、strcpy(a,"abc"); 答案:A 7.fscanf函数的正确调用形式是(). A、fscanf(文件指针,格式字符串,输入表列);

B、fscanf(格式字符串,文件指针,输出表列); C、fscanf(fp,格式字符串,输出表列); D、fscanf(格式字符串,输出表列,fp); 答案:A 8.下列数组说明中正确的是(). A、int array[][]={1,2,3,4,5,6,7,8,9,10}; B、int array[][][5]={1,2,3,4,5,6,7,8,9,10}; C、int array[][4]={1,2,3,4,5,6,7,8,9,10}; D、int array[3][]={1,2,3,4,5,6,7,8,9,10}; 答案:C 9.以下选项中,与k=n++完全等价的表达式是(). A、n=n+1,k=n B、k+=n+1 C、k=++n D、k=n,n=n+1 答案:D 10.针对下列程序段回答问题(). for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0)continue;

C练习题&答案

一、填空共17题(共计60分) 第1题(2.0分) 运行以下程序时,输出结果是【1】 long fit(int n) {if(n>2) return(fit(n-1)+fit(n-2)); else return(3);} main() {printf("%ld\n",fit(4));} 答案: =======(答案1)======= 9 第2题(2.0分) 以下程序运行后的输出结果是【1】. #include void main() { char ch[]="abc",x[3][4];int i; for(i=0;i<3;i++)strcpy(x[i],ch); for(i=0;i<3;i++)printf("%s",&x[i][i]); printf("\n"); } 答案: =======(答案1)=======

abcbcc 第3题(2.0分) 下列程序的输出结果是【1】 #include main( ) { char b[30]; strcpy(&b[0],"CH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s \n",b); } 答案: =======(答案1)======= CDABC 第4题(2.0分) 运行以下程序时,输出结果是【1】#include int b; int fun (int a) { static int c=2; return((++a)+(++b)+(++c)); }

void main( ) { int i, a=1; for(i=0;i<2;i++) printf("%5d",fun(a)); } 答案: =======(答案1)======= 6 8 第5题(2.0分) 在函数内部声明局部变量时缺省了存储类型,则该变量存储类型是【1】. 答案: =======(答案1)======= auto =========或========= 自动型 第6题(2.0分) 有以下定义和语句 struct date { int day; int month;

C语言经典例题和答案

一、求一个任意边长的矩形面积。 #include void main() {int w,h,sum; scanf("%d%d",&w,&h); sum=w*h; printf("area=%d\n",sum); } 二、求一个任意半径的圆的面积及周长。 #define PI 3.14159 #include void main() {float r,area,c; scanf("%f",&r); area=PI*r*r; c=2*PI*r; printf("area=%f\ncircle=%f\n",area,c); } 三、已知:w=5, y=4, z=2, 求表达式:w*y/z的值,并输出。 ##include void main() { int w,y,z,r; w=5; y=4; z=2; r=w*y/z; printf("%5d",r); } 一、从键盘上输入三个数,求出其中的最大值,并输出。 #include void main() {int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a; if(max

#include #define PI 3.14159 #include void main() {float a,b,sum; a=30*PI/180; b=60*PI/180; sum=sin(a)+sin(b)+cos(a)+cos(60); printf("total=%f\n",sum); } 三、比较两个数的大小。如果x大于y,则输出:x>y,否则输出:x void main() {int x,y; scanf("%d,%d",&x,&y); if(x>y) printf("x>y\n"); else printf("x void main() {int a,b,c,t; scanf("%d%d%d",&a,&b,&c); if(a>b) { t=b; b=a; a=t; } if(a>c) {t=a; a=c; c=t; } if(b>c) {t=b;b=c;c=t;} printf("%3d%3d%3d\n",a,b,c); }. 二、求自然数1~10之和。。 #include void main()

C语言期末考试试题

C语言试题1 一填空题(15分) 1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为()。 2.设int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是()。 3.下面程序段的输出结果是()。 int a=1234; a=a&0377; printf(“%d %o\n”,a,a); 4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是()。 char a[3]; 5.设有以下宏定义,则执行赋值语句a=PP*20;(a为int型变量)后,a的值是()。 #define PR 80 #define PP PR+403 6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:()、()和()。7.在C文件中,数据存在的两种代码形式是()和()。 8.C语言中调用()函数打开文件,调用()函数关闭文件,调用()函数可实现文件的随机读写。 9.若有int a[3]={10,12,30};则a+1是()的地址,*(a+2)=()。 二判断对错(5分,对的划“√”,错的划“×” 1.在Turbo C中,整型数据在内存中占2个字节。() 2.表达式1/4+2.75的值是3。() 3.结构体类型只有一种。() 4.函数若无返回值,则它一定无形参。() 5.C语言只能处理文本文件和二进制文件。() 三选择题(20分) 1.设int a=12; 表达式a+=a-=a*=a的值是()。 A 12 B 144 C 0 D 132 2.以下程序的输出结果是()。 main( ) { int a=011; printf(“%d\n”,++a); } A 12 B 11 C 10 D 9 3.以下程序的输出结果是()。 #define ADD(x) (x)+(x) main() { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(“d=%d”,d); } A d=70 B d=140 C d=280 D d=80 4.下面的选项中正确的赋值语句是(char a[5],*p=a;)()。 A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”; 5.若k为整形,则while循环执行()次。 k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”); A 10 B 9 C 0 D 1

大学c习题答案习题13答案

习题13答案 一、简答题 1.什么是运算符重载?实现运算符重载有几种方法?如何实现? 答案:C++提供的运算符重载机制能够实现将已有运算符应用到新的数据类型变量上,赋予运算符新的含义。C++对运算符重载有一些限制,见 有两种方法可以实现运算符重载,它们是:类的成员函数方式和有友元函数方式。 定义友元的目的是在友元函数中直接访问类的私有成员。实际上,可以通过类的公有函数接口访问类的私有成员,所以实现运算符重载,可以使用非成员、非友元实现运算符的重载。但是这种实现方法增加了访问私有数据成员的公有函数的调用时间,不值得提倡。见2.如何实现本类对象与其它类对象之间的相互类型转换? 答案:可以使用“类型转换函数”将本类对象转换成其他类对象。而“类型转换函数”本质上就是运算符的重载。另外,可以使用“构造函数”将其他类对象转换成本类对象。 3.什么是虚函数?什么是纯虚函数?它们的作用是什么? 答案: 多态性是面向对象程序设计的重要特性,它与前面讲的封装性和继承性构成面向对象程序设计的三大特性。这三大特性是互相关联的,封装性是基础,继承性是关键,而多态性是补充。 多态分为静态多态和动态多态。函数重载和运算符重载属于静态多态。动态多态是运行时的多态,如某些函数的调用关系在运行阶段才能确定。为了实现函数调用关系的动态多态,可以将函数定义成虚函数。将一个成员函数定义成虚函数的方法是,在函数定义的返回值类型前加virtual。 在抽象类中,有时无法实现某一功能(即无法决定某一函数的具体实现),只能将函数定义成纯虚函数。 虚函数具有函数实现的函数体,而纯虚函数没有函数体,即没有函数实现。对纯虚函数,只能在其派生类中实现该函数的功能。 4.试比较虚函数与虚基类的概念及作用。 答案:虚函数用于实现动态多态。而虚基类用于实现在多重继承情况下,基类数据成员在派生类中保留一个副本,见12.6节。 二、选择题 答案: 1. C 2. D 3. A 4. D 5. B 6. C 7. D 8. C 三、运行结果、完善程序 1. 运行结果: n=4 n=3 2, 3 2. 答案: 先看虚线框中的程序,运行结果为:D::show( ) called. 8 若将A行的virtual去掉,则结果为:B::show( ) called. 5 对本题,若将虚线框中的fun( )和main( )函数同时修改成右侧实线框中的对应函数,则若A

c和c++经典笔试题及答案

C++/C经典笔试题及答案 C++/C试题 本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 ) if ( n != 0 ) 请写出BOOL flag 与“零值”比较的if 语句: 请写出float x 与“零值”比较的if 语句: 请写出char *p 与“零值”比较的if 语句: char str[] = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) =void Func ( char str[100]) { 请计算 sizeof( str ) = } void *p = malloc( 100 );请计算 sizeof ( p ) = 1、头文件中的 ifndef/define/endif 干什么用? 2、#include 和#include “filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加extern “C”声明? 5 // 第一个 for (i=0; i

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、设有定义:floata=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!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=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 voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

c练习题带答案

c练习题带答案集团标准化工作小组 #Q8QGGQT-GX8G08Q8-

一、选择题 1.C++语言属于( C )。 A)自然语言 B)机器语言 C)面向对象语言 D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。 A)继承性 B)多态性 C)相似性 D)封装性 3.可用作C++语言用户标识符的一组标识符是( B )。 A) void define +WORD B) a3_b3 _123 YN C) for -abc Case D) 2a DO sizeof 4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素 a[2][1]的值为(A)。 A) 0 B) 4 C) 8 D) 6 5.下列情况中,哪一种情况不会调用拷贝构造函数( B ) A)用派生类的对象去初始化基类对象时 B)将类的一个对象赋值给该类的另一个对象时 C)函数的形参是类的对象,调用函数进行形参和实参结合时 D)函数的返回值是类的对象,函数执行返回调用者时 6.以下哪一关键字可用于重载函数的区分(C) A)extern B)static C)const D)virtual 7.下列有关数组的叙述中,正确的是( B ) A)C++中数组的存储方式为列优先存储 B)数组名可以作为实参赋值给指针类型的形参 C)数组下标索引从1开始,至数组长度n结束 D)数组指针的语法形式为:类型名 *数组名[下标表达式]; 8.下列有关继承和派生的叙述中,正确的是( C ) A)派生类不能访问通过私有继承的基类的保护成员 B)多继承的虚基类不能够实例化 C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数 D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 9.实现运行时多态的机制是( A ) A)虚函数B)重载函数C)静态函数D)模版函数 10.若有下面的函数调用: fun(a+b, 3, max(n-1, b)); 其中实参的个数是( A) A)3 B)4 C)5 D)6 11.下列关于this指针的说法正确的是( B)

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 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为关键

2019年C语言期末考试题与答案

1、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。 最大值第三行i<=n五行k+1 2、编写程序求无理数e的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他)6、求出N×M整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 1 5 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n位自然数的各位数字的积。(n 是小于10的自然数) 8、计算n门课程的平均值,计算结果作为函数值返回。例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。

10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun 用比较法对主程序中用户输入的具有10 个数据的数组a 按由大到小排序,并在主程序中输出 排序结果。 13、编写main 程序调用函数fact 求解从m 个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m 不能小于n ,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a 和b 分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。 19、对任意输入的 x ,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10

C 练习题分析

1[简答题]学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 试题程序:

参考解析: 【参考答案】 【考点分析】 本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。 【解题思路】

该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。 【解题宝典】’ 对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。如何对结构体数组进行类似操作呢? 掌握以下语句: 2[单选题] 下列定义数组的语句中,正确的是( )。 参考答案:A 参考解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。B选项中N是变量,不能用变量定义数组长度。c选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。

3[单选题] 若有以下程序段 则以下选项中值为6的表达式是 A.P->n B.(*p).n C.p->n++ D.++(P->n) 参考答案:D 参考解析:本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中P->n为5,++(P->11)为6,所以D选项正确。 4[单选题] 有以下程序 程序运行后的输出结果是 A.4 B.8 C.9 D.6 参考答案:B

最新版c语言经典习题100例(最全面)

C 语言习题100 例(最新整理版) 习题目录:(按住Ctrl 点击可以快速跳转到对应页面) 【程序1】 (5) 题目:有1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? (5) 【程序2】 (6) 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元 时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? (6) 【程序3】 (7) 题目:一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数,请问该数是多少? (7) 【程序4】 (7) 题目:输入某年某月某日,判断这一天是这一年的第几天? (7) 【程序5】 (8) 题目输入三个整数x,y,z请把这三个数由小到大输出。 (8) 【程序6】 (9) 题目用*号输出字母C的图案。 (9) 【程序7】 (9) 题目:输出特殊图案,请在C环境中运行,看一看,VeryBeautifuI! (9) 【程序8】 (9) 题目:输出9*9 口诀。 (9) 【程序9】 (10) 题目:要求输出国际象棋棋盘。 (10) 【程序10】 (10) 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 (10) 【程序11】 (11) 题目:古典问题:有一对兔子,从出生后第3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? (11) 【程序12】 (11) 题目:判断101-200 之间有多少个素数,并输出所有素数。 (11) 【程序13】 (12) 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1 的三次方+5的三次方+3的三次方。 (12) 【程序14】 (12) 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 。 (12) 【程序15】 (13) 题目利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用 C 表示。 (13) 【程序16】 (13) 题目:输入两个正整数m和n ,求其最大公约数和最小公倍数。 (13) 【程序17】 (14) 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。14【程序18】 (14)

数据结构(C语言)【经典题库】含参考答案

《数据结构与算法》复习题 选择题 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构 B.数据结构 C 3 A 。 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是 O(n2) 。 s =0;

for( I =0; inext ==NULL C.head->next ==head D head!=NULL

15.带头结点的单链表head为空的判定条件是 B 。 A.head == NULL B head->next ==NULL C.head->next ==head D head!=NULL 16.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用 D 存储方式最节省运算时间。 A.单链表 B.给出表头指针的单循环链表 C.双链表 D.带头结点的双循环链表17.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。 20 21 B 。 22 A.删除单链表中的第一个元素 B.删除单链表中的最后一个元素 C.在单链表第一个元素前插入一个新元素 D.在单链表最后一个元素后插入一个新元素 23.与单链表相比,双链表的优点之一是 D 。 A.插入、删除操作更简单

大学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试题及答案(一)

C++程序设计模拟试卷(一) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。 1.编写C++程序大凡需经过的几个步骤依次是() A.编辑、调试、编译、连接 B.编辑、编译、连接、运行 C.编译、调试、编辑、连接 D.编译、编辑、连接、运行 答案:B 解析:经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保 存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为 obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行 程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。 2.决定C++语言中函数的返回值类型的是() A.return语句中的表达式类型 B.调用该函数时系统随机产生的类型 C.调用该函数时的主调用函数类型 D.在定义该函数时所指定的数据类型 答案:D

解析:函数的返回值类型由定义函数时的指定的数据类型决定的。A项的表达式的值要转换 成函数的定义时的返回类型。 3.下面叙述不正确的是() A.派生类大凡都用公有派生 B.对基类成员的访问必须是无二义性的 C.赋值兼容规则也适用于多重继承的组合 D.基类的公有成员在派生类中仍然是公有的 答案:D 解析:继承方式有三种:公有、私有和保护。多继承中,多个基类具有同名成员,在它们 的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指 派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中的 公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。 4.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是() A.类 B.对象 C.函数体

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了_______________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; _______________; i++) if (_______________) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________ 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语言经典例题目解析

1、猴子吃桃子:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子 #include main() {int s=1,i; for(i=9;i>=1;i--) s=(s+1)*2; printf("s=%d\n",s); } 2、鸡兔同笼:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔? #include main() {int a,b; for(a=1;a<=40;a++)/* 120只脚如果全是鸡的话60只,但是总头是40,所以循环到40 */ for (b=1;b<=30;b++) /* 同理如果全是兔的话最多120/4=30 所以循环到30 */ {if((a==40-b)&&(a==60-2*b)) /* 同时满足总头数40总脚数120 */ printf("There are %d chichens \nThere are %d rabbits",a,b);} } 3、百钱买百鸡:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? #include main( ) {int cocks,hens,chicks; cocks=0; while(cocks<=19) {hens=0; while(hens<=33) {chicks=100-cocks-hens; if(5*cocks+3*hens+chicks/3==100&&chicks%3==0) printf("%d,%d,%d\n",cocks,hens,chicks); hens=hens+1;} cocks=cocks+1;}} #include main() {int x,y,z; for(x=0;x<=20;x++) for(y=0;y<=33;y++) {z=100-x-y; if(15*x+9*y+z==300) printf("x=%d y=%d z=%d\n",x,y,z); } }

相关文档