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

C++习题

C++习题
C++习题

第7章类的基本概念

课后习题注解

一、选择题

1、以下不属于类存取权限是___________。

A) public B) static

C) protected D) private

【解答】答案:B,ACD均为类访问修饰符,B是普通的修饰符。

2、类的析构函数是___________时调用的。

A) 类创建B) 创建对象

C) 引用对象D) 释放对象

【解答】答案:D,析构函数功能是释放对象,收回资源。

3、有关构造函数的说法,不正确的是___________。

A) 对象是类的一个实例B) 任何一个对象只能属于一个具体的类

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

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

【解答】答案:C ,一个类可以创建多个对象。

4、通常拷贝构造函数的参数是___________。

A) 某个对象名B) 某个对象的成员名

C) 某个对象的引用名D) 某个对象的指针名

【解答】答案: C ,构造函数的参数是类本身的引用。

5、假定A是一个类,那么执行语句“A a, b(3), *p;”调用了___________次构造函数。

A) 2 B) 3

C) 4 D) 5

【解答】答案:A,其中*p并没有调用构造函数,只有使用new以后,才创建对象。

二、填空题

1、假定DD是一个类,则执行“DD a[10], b(2)”语句时,系统自动调用该类构造函数的次数为___________

【解答】答案:11次

2、对于任意一个类,析构函数的个数最多为___________个。

【解答】答案:1

3、一个类的___________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

【解答】答案:析构函数

4、C++程序的内存格局通常分为四个区:(1)___________,该区用来存放全局变量、静态数据、常量。(2)___________,该区用来存放类成员函数、其他函数代码。(3)___________该区用来存放局部变量、函数参数、返回数据和返回地址。(4)___________。该区是自由存储区。

【解答】答案:全局数据区(data area) 代码区(code area) 栈区(stack area) 堆区(heap area)

三、简答题与程序设计题

1、简述3种访问修饰符对类成员的访问限制。

【解答】答案:C++语言通过访问限定符public、private和protected将类成员分成三类:公有成员、私有成员和保护成员。

●公有成员(public修饰)可以被该类的成员函数访问,也可以在程序的任意地方

被任意访问。

●私有成员(private修饰)只能被该类的成员函数或者该类的友元函数访问。友元

是为了增加程序的灵活性而引入的概念,允许程序中的某些函数访问类中的私有

成员。

●保护成员(protected)对于派生类来说,就像是公有成员,可以被访问,对于程

序的其他部分来说,就像是私有成员,不允许被访问。

2、定义一个学生类,输入学生的姓名、语文成绩、数学成绩和英语成绩,计算并输出每位学生的各门功课的成绩、总成绩和平均成绩。

【解答】思路:设计一个类,类的数据成员包括姓名、语文成绩、数学成绩和英语成绩。类的成员函数包括算总成绩、算平均成绩和输出各门功能的成绩。

3、简述拷贝构造函数的必要性。

【解答】答案:当用一个对象值初始化一个新对象的时候,或者利用一个对象构造另一个对象的时候,要涉及到对象的拷贝,比如执行语句“person p1 = p2”或者“person

p1(p2)”。这个时候p1和p2指向堆的同一内存空间,当p1调用析构函数释放堆空间以后,这个时候p2指向的地址变空了,如果p2再调用析构函数释放内存空间,将会出错。如图7-1所示。

图7-1 使用对象赋值

补充习题注解

一、选择题

1、在C++中可以把具有相同内部存储结构和相同操作的对看成属于同一类。在指定一个类后,往往把属于这个类的对象称为类的___________

A)实例B)实物

C)特征D)对象

【解答】答案:A,使用类创建出来的数据类型,称之为类的实例。

2、有关类的说法不正确的是___________.

A)类是一个用户自定义的数据类型

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

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

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

【解答】答案:D ,如果不特别说明,所有成员均为私有类型。

4、有关类和对象的说法下列不正确的有___________

A) 对象是类的一个实例B)任何一个对象只能属于一个具体的类

C)一个类只能有一个对象D)类与对象和关系和数据类型和变量的关系相似

【解答】答案:C,一个类可以创建多个对象。

5、有关构造函数的说法不正确的是___________

A) 构造函数名字和类的名字一样B)构造函数在说明类变量时自动执行

C)构造函数无任何函数类型D)构造函数有且只有一个

【解答】答案:D ,构造函数可以重载,可以有多个。

6、有关析构函数的说法不正确的是___________

A)析构函数有且只有一个B)析构函数无任何函数类型

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

D)析构函数的作用是在对象被撤消时收回先前分配的内存空间

【解答】答案:C ,析构函数没有形参。

7、在类的定义体外定义成员函数时,需要在函数名前加上___________

A)类标记B)类域标记

C)类对象D)域运算符

【解答】答案:B,需要加上类域运算符“::”。

8、在类的定义形式中,数据成员、成员函数和___________组成了类。

A)成员的访问控制信息B)公有信息

C)私有信息D)保护信息

【解答】答案:A,类的成员控制信息,也就是访问修饰符。

9、___________功能是对对象进行初始化

A)析构函数B)数据成员

C)构造函数D)静态成员函数

【解答】答案:C,构造函数的功能是初始化。

第8章静态成员与友元

课后习题注解

一、选择题

1、关于静态数据成员,下面说法错误的是___________。

A) 使用静态数据成员,实际上是为了消除全局变量。

B) 可以使用“对象名.静态成员”或者“类名::静态成员”来访问静态数据成员。

C) 静态数据成员只能在静态成员函数中引用。

D) 所有对象的静态数据成员占用同一内存单元。

【解答】答案:C,静态成员函数只能引用静态数据成员,但是静态数据成员可以在任意地方使用。

2、下面的函数中,静态成员函数不能访问的是___________

A) 静态数据成员B) 静态成员函数

C) 类以外的函数和数据D) 非静态数据成员

【解答】答案:D,静态成员函数不能访问非静态数据成员。

3、在类的定义中,引入友元的原因是___________

A) 提高效率B) 深化使用类的封装性

C) 提高程序的可读性D) 提高程序的可读性

【解答】答案:A ,友元的目的之一是提高编写效率。

4、友元类的声明方法是:___________

A) friend class <类名>; B) youyuan class <类名>;

C) class friend <类名>; D) friends class <类名>

【解答】答案:A,只有A是合法的友元定义方式。

二、填空题

1、数据定义为全局变量,破坏了数据的___________;较好的解决办法是将所要共享的数据定义为类的___________。

【解答】答案:封装性静态成员

2、静态数据成员和静态成员函数可由___________函数访问

【解答】答案:任意访问权限许可的

3、___________和___________统称为友元

【解答】答案:友元函数友元类

4、友元的正确使用能提高程序___________,但破坏了类的封装性和数据的隐蔽性

【解答】答案:的运行效率

三、简答题和程序设计题

1、简述静态数据成员和普通数据成员的区别和联系。静态成员函数与普通成员函数的区别和联系。

【解答】答案:静态数据成员不从属于任何一个具体对象,所以必须对它初始化,且对它的初始化不能在构造函数中进行,类中用关键字static修饰的数据成员叫做静态数据成员。

静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员,因为非静态数据成员只有对象存在时才有意义。但静态数据成员和静态成员函数可由任意访问权限许可的函数访问。

2、简述C++语言引入友元的原因。

【解答】答案:有时候,普通函数需要直接访问一个类的保护或私有数据成员。普通函数需要直接访问类的保护或者私有数据成员的原因主要是为提高效率。在类里声明一个普通函数,加上关键字friend,就成了该类的友元,可以访问该类的一切成员。

3、改写程序proj8_04.cpp,不用友元实现程序功能。

【解答】答案:需要将友元部分分别放到类中。

4、改写程序proj8_05.cpp,使用友元函数实现该程序的功能。

【解答】答案:将公用的部分拿到一个类中,然后定义成另一个类的友元。

补充习题注解

一、选择题

1、___________只能访问静态成员变量,静态成员函数和类以外的函数和数据不能访问类中的非静态成员变量

A)静态函数B)虚函数

C)构造函数D)析构函数

【解答】答案:A,静态成员函数只能访问静态成员变量。

2、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形是,可以用___________提供对全局变量的访问。

A)域运算符B)类运算符

C)重载D)引用

【解答】答案:A,使用域运算符可以限制访问类内部的成员。

3、在下列关键字中,用以说明类中公有成员的是___________

A)public B)private

C)protected D)friend

【解答】答案:A,public修饰的成员是公有的。

4、下列的各类函数中,___________不是类的成员函数.

A)构造函数B)析构函数

C)友元函数D)拷贝初始化构造函数

【解答】答案:C,其中ABD均是成员函数,C不是。

5、___________不是构造函数的特征

A) 构造函数的函数名与类名相同B)构造函数可以重载

C)构造函数可以设置默认参数D)构造函数必须指定类型说明

【解答】答案:D,构造函数没有类型说明。

6、___________是析构函数的特征

A)一个类中只能定义一个析构函数B)析构函数名与类名不同

C)析构函数的定义只能在类体内D)析构函数可以有一个或多个参数

【解答】答案:A,析构函数只能有1个。

7、通常拷贝初始化构造函数的参数是___________

A)某个对象名B)某个对象的成员名

C)某个对象的引用名D)某个对象的指针名

【解答】答案:C,拷贝构造函数的参数是当前类的引用。

8、关于成员函数特征的下述中,___________是错误的。

A)成员函数一定是内联函数B)成员函数可以重载

C)成员函数可以设置参数的默认值D)成员函数可以是静态的

【解答】答案:A ,成员不一定是内联函数。

9、下述静态数据成员的特征中,___________是错误的。

A)说明静态数据成员时前边要加修饰符static

B)静态数据成员要在类体外进行初始化

C)引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符

D)静态数据成员不是所有对象所共用的

【解答】答案:D,静态数据成员是所有对象共有的。

10、从语言角度来说,类是一种数据类型,而___________是具有这种类型的变量

A)实例B)实物

C)特征D)对象

【解答】答案:B,实例是类创建的,变量是数据类型创建的。

11、若Queue是类,aQueue 是它的一个对象,p1是类对象aQueue的一个指针,那么类对象aQueue的指针p1可以通过___________来访问类的成员。

A):: B).

C); D)->

【解答】答案:D,使用p1->访问类的成员。

二、填空题

1、类中的数据和成员函数默认类型为___________.

【解答】答案:私有

2、结构中的数据和成员函数默认类型为___________

【解答】答案:公有

3、在类内部定义的___________数据不能被不属于该类的函数来存取,定义为

___________的数据,函数则可以在类外部进行存取

【解答】答案:private public

4、___________是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象和其他内部管理操作.

【解答】答案:构造函数

5、一个类有___________个析构函数

【解答】答案:1

6、静态数据成员在定义或说明时前面要加上关键字___________.

【解答】答案:static

7、___________成员函数的实现中不能直接引用类中说明的非静态成员.

【解答】答案:静态

8、定义在类内部的函数为类默认状态___________,在类外部每次调用该函数时,定义的函数代码会在调用函数位置展开。

【解答】答案:内联函数

第9章运算符重载

课后习题注解

一、选择题

1、下列运算符中,不能重载的是___________。

A) :: B) +

C) << D) &&

【解答】答案:A ,其他都可以被重载。

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

A) 不能改变运算符的优先级B) 能够改变操作数的数目

C) 所有运算符都可以重载D) 通过重载“()”能够改变运算符的结合性

【解答】答案:A ,其中,不能改变操作数的数目,不能通过重载括号改变结合性。

3、执行语句“person p1= p2”将调用p1的___________。

A) 构造函数B) 拷贝构造函数

C) 析构函数D) 赋值运算符重载函数

【解答】答案:B ,和person p1(p2)一样都是调用拷贝构造函数,如果person p1; p1=p2则调用重载赋值运算符函数。

4、基本类型到用户定义类型的转换通过___________实现。

A) 强制转换B) 用户自定义类型的构造函数

C) 基本类型的转换函数D) 无法实现

【解答】答案:B。只有用户自定义类型的构造函数可以实现题目中的转换。

二、填空题

1、使用重载运算符号有两个优点:1、___________。

2、___________。

【解答】答案:使C++代码更直观,更容易读。简单运算符组成的表达式常常比函数调用更简洁,易懂运算符的重载可以改进程序的可读性

【解答】答案:构造函数拷贝构造函数重载赋值运算符函数析构函数

3、表达式“converter d1 = 10;”,“10”是一个整型的数,“d1”是一个用户自定义对象。实现这种赋值关系,通过用___________实现。

【解答】答案:户定义类型的构造函数

4、当对象进行赋值的时候,“person p1 = p2;”和“person p1; p1 = p2;”是不同的。“person p1 = p2;”在声明的就用另一个对象对其赋值,等价于“___________”,为了给p1分配一块新的堆空间,系统将调用___________。语句“person p1; p1 = p2”是不同的,将调用___________。

【解答】答案:person p1(p2) 拷贝构造函数重载赋值运算符函数

三、简答题与程序设计题

1、利用运算符的重载,定义复数类的加法与减法,使之能够执行下列运算。

Complex a(2, 5) , b(7, 8), c(0 , 0)

c = a + b;

c = 4.1 + a;

【解答】答案:参考书上二元操作符重载的方法,重新定义加号运算。

2、利用运算符的重载,编写一个时间类,实现时间的加、减、读和输出。

【解答】答案:主要考虑加和减的操作是60进制,其他部分和重载普通加号运算符一致。

补充习题注解

一、选择题

1、下列运算符中,___________运算符在C++中不能重载

A) ? B) +

C) - D) <=

【解答】答案:A,其中,BCD均可以重载。

2、下列运算符中,___________运算符在C++中不能重载

A) && B) []

C) :: D) NEW

【解答】答案:C,域限定符“::”不能重载。

3、在C++中,通常将重载运算符的成员函数称为___________

A)运算符函数B)重载函数

C)函数重载运算符D)以上都不对

【解答】答案:A,称之为运算符函数。

4、对定义重载函数的下列要求中,___________是错误的

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

C)要求参数个数相同时,参数类型不同D)要求函数的返回值不同

【解答】答案:D,函数重载跟函数的返回值没有关系。

5、下列函数中,___________不能重载.

A) 成员函数B)非成员函数

C)析构函数D)构造函数

【解答】答案:C ,析构函数不能重载。

6、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是___________。

A)参数个数B)参数类型

C)函数名称D)函数类型

【解答】答案:D,函数重载跟函数的返回值,也就是函数类型无关。

7、下列对重载函数的描述中,___________是错误的。

A)重载函数中不允许使用默认参数

B)重载函数中编译是根据参数表进行选择的

C)不要使用重载函数来描述毫无相干的函数

D)构造函数重载将会给初始化带来多种方式

【解答】答案:A ,重载函数中可以使用默认参数。

8、下列关于运算符重载的描述中,___________是正确的。

A) 运算符重载可以改变运算数的个数B) 运算符重载可以改变优先级

C) 运算符重载可以改变结合性D)运算符重载不可以改变语法结构

【解答】答案:D ,运算符重载不可以改变结构。

9、运算符重载函数是___________。

A)成员函数B)友员函数

C)内联函数D)带默认参数的函数

【解答】答案:C,运算符重载函数系统处理为内联函数。

第10章继承

课后习题注解

一、选择题

1、在C++类体系中,不能被派生类继承的是___________。

A) 构造函数B) 虚函数

C) 静态成员函数D) 赋值操作函数

【解答】答案:A ,构造函数是每个类特有的,不能被继承。

2、下列对基类和派生类关系的描述中,错误的是___________。

A) 派生类是基类的具体化B) 派生类是基类的子集

C) 派生类是基类定义的延续D) 派生类是基类的组合

【解答】答案:B,派生类是基类的扩展,基类是派生类的子集。

3、设置虚基类的目的是___________。

A) 简化程序B) 消除二义性

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

【解答】答案:B ,目的是消除二义性。

4、可以访问类对象的私有数据成员的是___________。

A) 该类的对象B) 该类友元类派生的成员函数

C) 类中的友元函数D) 公有派生类的成员函数

【解答】答案:C,友友不受类的修饰符限制。

5、下面对继承关系描述中,正确的是___________。

A) 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。

B) 在公有继承中,基类中只有公有成员对派生类的对象是可见的。

C) 在私有继承中,基类只有公有成员对派生类对象是可见的。

D) 在私有继承中,基类中的保护成员对派生类的对象是可见的。

【解答】答案:B,其中,私有成员不被继承。私有继承中,没有成员在派生类中是可见的。

二、填空题

1、派生类的成员函数可以直接访问基类的___________成员,不能直接访问基类的___________成员。

【解答】答案:1、公有和保护私有

2、在一个或若干个类的基础上构造一个新类,被称为___________。

【解答】答案:2、继承(派生)

3、类B从类A私有派生,类C从类B派生,不管类C如何继承类B,类C的成员函数不能访问A类的___________成员。

【解答】答案:3、所有

4、如果创建类时未给定访问说明符,则默认其为___________。

【解答】答案:4、私有类型

5、继承可以称为“___________”关系。例如:管理者是一个雇员,或秘书也是一个雇员等等,这些都可以用继承来实现。如果是成员关系,可以称为“___________”关系。

【解答】答案:5、是一个有一个

三、简答题与程序设计题

1、简述继承的必要性。

【解答】答案:“继承”是类之间的一种特殊联系。基类(Person类),是指能够派生出新类的类,也称为父类;被基类派生出的新类称为派生类,也称为子类(Student类)。不仅简化了代码,而且重用了部分代码

2、编写程序实现图10-1所示的继承关系。

图10-1 继承关系

【解答】答案:

3、简述protected关键字的用法以及约束关系。

【解答】答案:

成员的访问规则如表10-1所示。

表10-1 成员的访问规则

从表中可以看出,如果不考虑继承关系的话,可以认为protected和private修饰府的限定关系相同。

4、简述公有继承、私有继承和保护继承对基类成员的约束关系。

【解答】答案:参考上面的表10-1。

补充习题注解

一、选择题

1、C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过___________,派生出新的类。

A) 复用B)继承

C)单继承D)多继承

【解答】答案:B,通过继承派生出新的类。

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

A)规律性B)传递性

C)重复性D)多样性

【解答】答案:B,继承具有传递性。

3、在派生类中定义的析构函数与它所属的基类___________.

A) 一定有关B)一定无关

C)以上都不对D)

【解答】答案:A ,因为派生类的析构函数需要释放基类的资源。

4、下列对派生类的描述中,___________是错误的。

A)一个派生类可以作另一个派生类的基类B)派生类至少有一个基类

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

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

【解答】答案:D,受到继承方式的影响,比如私有继承,基类成员的访问权限将改变。

5、派生类的对象对它的基类成员中___________是可以访问的。

A)公有继承的公有成员B)公有继承的私有成员

C)公有继承的保护成员D)私有继承的公有成员

【解答】答案:A,只有公有继承的地公有成员才可以访问。

第11章多重继承和多态性

课后习题注解

一、选择题

1、虚函数使用关键字___________。

A) virtual B) static

C) public D) private

【解答】答案:A,虚函数使用vitual 定义。

2、下列选项中,描述了抽象类特性的是___________。

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

C) 可以定义友元函数D) 不能定义其对象

【解答】答案:D,抽象类不能直接创建对象,其他的都是类的一般特征。

3、实现运行时的多态性,要使用___________。

A) 重载函数B) 构造函数

C) 虚函数D) 析构函数

【解答】答案:C,运行时多多态是通过虚函数来实现的。

4、如果一个类中,至少有一个纯虚函数,那么称该类为___________。

A) 抽象类B) 虚基类

C) 派生类D) 以上都不对

【解答】答案:A,此为书上抽象类的定义。

5、虚基类的作用是

A) 为了解决同一基类被多次继承产生的二义性。

B) 实现多态

C) 为了能够定义虚析构函数

D) 为了能够定义抽象类

【解答】答案:A ,其中选项B错误因为虚函数是实现多态的方式。消除二义性是虚基类引入的目的。

6、引入虚析构函数的作用是___________。

A) 为了实现析构函数的重载B) 为了实现类的多态性

C) 防止造成内存泄漏D) 提高程序执行效率

【解答】答案:C,虚析构函数的引入是为了防止内存泄漏。

二、填空题

1、可以为一个派生类指定多个基类,这样的继承结构称为___________。

【解答】答案:多继承

2、二义性有两种情况:1、___________;2、___________。

【解答】答案:同名成员被继承产生二义性同一基类被多次继承产生的二义性

3、为了解决同一基类被多次继承产生的二义性,在C++语言中,引入了___________机制。

【解答】答案:虚拟继承

4、C++支持两种类型的多态性:1、___________ 2、___________

【解答】答案:编译时多态运行时多态

5、包含___________的类,叫做抽象类。纯虚函数就是___________的虚函数。

【解答】答案:纯虚函数函数体为空

6、如果析构函数不声明为虚拟的,则在程序执行的时候,可能造成___________。

【解答】答案:内存的泄漏

三、简答题和程序设计题

1、简述为什么多继承会出现二义性。

【解答】答案:一般说来,在派生类中对基类成员的访问应该是惟一的。但是,由于多继承情况下,可能造成对基类中某个成员的访问出现了不惟一的情况,则称为对基类成员访问的二义性问题。二义性有两种情况:1、同名成员被继承产生二义性;2、同一基类被多次继承产生的二义性。

2、简述运行时多态和编译时多态的实现机制。

【解答】答案:多态性的定义是:“同一操作作用于不同类的实例,不同类将进行不同的解释,最后产生不同的执行结果”。C++支持两种类型的多态性。

●编译时多态性:编译时多态是通过重载来实现的。对于非虚的成员来说,系统在

编译时,根据传递的参数、返回的类型等信息决定实现何种操作。

●运行时多态性:运行时多态性是直到系统运行时,才根据实际情况决定实现何种

操作。C++中,运行时的多态性通过虚方法实现。

编译时的多态性提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。

3、简述虚析构函数的必要性。

【解答】答案:析构函数一般用来释放申请的内存空间。如果析构函数不声明为虚拟的,则在程序执行的时候,可能造成内存的泄漏。

4、在基类shape中定义虚函数getArea(),然后定义派生类,分别实现圆、梯形以及正方形面积函数getArea()。

【解答】答案:参考proj11_08.cpp,定义一个基类,3个派生类分别是圆、梯形和正方形。

补充习题注解

一、选择题

1、关于动态联编的下列描述中,___________是错误的。

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

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

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

D)动态联编是在编译时确定操作函数的

【解答】答案:D ,动态联编实现多态,是在运行的时候确定操作函数的。

2、关于虚函数的描述中,___________是正确的。

A)虚函数是一个statiC类型的成员函数

B)虚函数是一个非成员函数

C)基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数

D)派生类的虚函数与基类的虚函数具有不同的参数个数和类型

【解答】答案:C ,派生类中可以不说明为虚函数。

3、关于存虚函数和抽象类的描述中,___________是错误的。

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

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

C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

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

【解答】答案:C,不一定不再是抽象类,如果没有对纯虚函数进行重定义,依然是抽象类。

4、下列描述中,___________是抽象类的特征

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

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

【解答】答案:D,抽象类不能直接定义对象。

5、___________是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。

A)虚析构函数B)虚构造函数

C)纯虚函数D)静态成员函数

【解答】答案:C

6、如果一个类至少有一个纯虚函数,那么就称该类为___________。

A)抽象类B)虚基类

C)派生类D)以下都不是

【解答】答案:A ,抽象类的定义。

7、在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则___________。

A) 完全相同B)完全不同

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

【解答】答案:A ,多继承与单继承的规则是一致的。

8、在多继承的构造函数定义中,几个基类的构造函数之间用___________分隔。

A): B);

C), D)::

【解答】答案:C,多重继承德基类构造函数使用逗号分隔。

9、关于多继承二义性的描述中,___________是错误的.

A)类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性

B)解决二义性的最常用的方法是对成员名的限定法

C)基类和派生类中同时出现的同名函数,也存在二义性问题

D)一个派生类是从两个基类派生而来,而这两个基类又有共同的基类,对该基类成员进行访问时,也可能出现二义性

【解答】答案:C ,基类&派生类同时出现同名函数,可能构成重载或者重写,不存在二义性。

10、设置虚基类的目的是___________.

A)简化程序B)消除二义性

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

【解答】答案:B,目的是消除二义性。

11、带虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数。这样将对虚基类的子对象初始化___________。

A)与虚基类下面的派生类个数有关B)多次

C)二次D)一次

【解答】答案:D,只被初始化1次。

第12章程序结构与C++的输入输出

课后习题注解

一、选择题

1、I/O类库的根基类是___________。

A) istream B) ostream

C) ios D) fstream

【解答】答案:C ,其他的都是ios的派生类。

2、I/O类库中的类不包含在___________。

A) iostream.h B) fstream.h

C) stream.h D) istream.h

【解答】答案:C,没有stream.h文件。

3、不能用于用户进行标准I/O操作的类对象是___________。

A) cin B) cout

C) clog D) cstr

【解答】答案:D,其中cin、cout和clog都是I/O操作对象。

4、从键盘的输入中读入一个值,并赋值给x的语句是___________。

A) cin >> x B) cin << x

C) cout >> x D) cout << x

【解答】答案:A ,其中C和D是输入操作。B的箭头错误。

5、从键盘上输入数据的时候,只有在输入完数据并按下___________后,系统才把该行数据存入缓冲区。

A) 空格B) 回车

C) Tab D) 空格或回车

【解答】答案:D,默认情况下空格和回车都是数据存入缓冲区的标志。

二、填空题

1、所有的I/O流类都是___________的派生类。

【解答】答案:ios

2、一个程序经常由多个源文件组成,每个源文件是一个可编译的程序单位。一个源文件一般包含___________和___________。

【解答】答案:头文件(“.h”)实现文件(“.cpp”)

KeilC的运算符

Keil C的运算符 一、算术运算符:执行算术运算功能的操作符号。 表1:算术运算符 符号功能范例说明 + 加A=x+y 将x与y的变量的值相加,其和存入A变量 - 减B=x-y 将x变量的值减去y变量的值,其差存入B变量 * 乘C=x*y 将x与y的变量的值相乘,其积存入C变量 / 除D=x/y 将x变量的值除以y变量的值,其商数存入D变量 % 取余数E=x%y 将x变量的值除以y变量的值,其余数存入E变量 二、关系运算符:处理两个变量的大小关系 表2:关系运算符 符号功能范例说明 == 相等X==y 比较x与y变量的值是否相等,相等则其结果为1,否则为0 != 不相等X!=y 比较x与y变量的值是否相等,不相等则其结果为1,否则为0 > 大于X>y 若x变量的值大于y变量的值,其结果为1,否则为0 < 小于X= 大于等于X>=y 若x变量的值大于或等于y变量的值,其结果为1,否则为0 <= 小于等于X<=y 若x变量的值小于或等于y变量的值,其结果为1,否则为0 三、逻辑运算符 表3:逻辑运算符 符号功能范例说明 & 与运算(x>y)&&(y>z)若x变量的值大于y变量的值,且y变量的值大于z变量的 值,其结果为1,否则为0 || 或运算(x>y)||(y>z)若x变量的值大于y变量的值,或y变量的值大于z变量的 值,其结果为1,否则为0 ! 非(反向)运算!(x>y)若x变量的值大于y变量的值,其结果为0,否则为 1 四、布尔运算符 表4:布尔运算符 符号功能范例说明 & 按位与运算A=x&y 将x与y变量的每个位进行AND运算,其结果存入A变量 | 按位或运算B=x|y 将x与y变量的每个位进行OR运算,其结果存入B变量 ^ 异或运算C=x^y 将x与y变量的每个位进行XOR运算,其结果存入C变量 ~ 取反运算D=x~y 将x变量的值进行NOT运算,其结果存入D变量 << 左移E=x<> 右移F=x>>n 将x变量的值右移n位,其结果存入F变量 五、赋值运算符 表5:赋值运算符 符号功能范例说明 = 赋值A=x 将x变量的值存入 A += 加法赋值B+=x 将B变量的值与x变量的值相加运算,其和存入B,等同于B=B+x -= 减法赋值C-=x 将C变量的值减去x变量的值运算,差值存入C,等同于C=C-x *= 乘法赋值D*=x 将D变量的值与x变量的值相乘运算,积存入D,等同于D=D*x

C语言习题集(基础篇)

《C语言程序设计》习题篇 第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5.下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed C.integer D.Char 8.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 9.一个C程序是由()。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 11.下列说法中,错误的是()。 A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用

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.C语言的基本构成单位是:。 A. 函数 B. 函数和过程 C. 超文本过程 D. 子程序 2.一个C语言程序总是从开始执行。 A. 主过程 B. 主函数 C. 子程序 D.主程序 3.C语言的程序一行写不下时,可以。 A. 用逗号换行 B. 用分号换行 C. 在任意一空格处换行 D. 用回车符换行 4.以下叙述不正确的是:。 A. 在C程序中,语句之间必须要用分号";"分隔 B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数 C. 在C程序中,无论是整数还是实数都能正确无误地表示 D. 在C程序中,%是只能用于整数运算的运算符 5.以下不正确的C语言标识符是。 A. ABC B. abc C. a_bc D. 6.下列字符串是标识符的是:。 A. _HJ B. 9_student C. long D. LINE 1 7.以下说法中正确的是:。 A. C语言程序总是从第一个定义的函数开始执行 B. 在C语言程序中,要调用的函数必须放在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 8.不合法的常量是:。 A. ‘\2’ B. " " C. ‘3’ D. ‘\483’ 9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。 int k,a,b; unsigned long w=5; double x=; A. x%(-3) B. w+=-2 C. k=(a=2,b=3,a+b) D. a+=a=+(b=4)*(a=3) 10.在C语言中,字符型数据在内存中以形式存放。 A. 原码 B. BCD码 C. 反码 D. ASCII码 11.若有定义:int a=7; float x=; y=;

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.编写程序,在屏幕上输出以下两行文本(用一个printf()产生) Uppercase i is ‘I’ Lowercase I is ‘i’ 2.编写程序,给2个整型变量a和b分别赋值8进制的225和16进制的12e,并用printf() 输出变量a所对应的10进制、8进制、16进制数值。 (输出8进制整数的格式符为%o输出16进制整数的格式符为%x) 3.定义2个长整型变量a和b,并分别赋值1345678和1,编写程序求a与b的和、差、积、商并 输出。 (输出长整型数据的格式符为%ld) 4.定义圆半径为一个双精度型变量r,并赋值 5.25, 编写程序求该圆的周长和面积(∏取3.14)并输 出。 (输出实数的格式符为%f) 5.假定一个字符变量C1的值为小写的‘c’,编写程序,将其转换成大写的’C’,并输出大写的’C’的 ASCⅡ码值。 6.编写程序,将一个三位数387的个位、十位、百位分离后输出,输出结果为: a=3,b=8,c=7 7.编程计算出-48%9、48%-9及-48%-9的结果 页脚内容1

8.假设每次运算时i的初值均为16,求i+++i和--i-i的值 9.编写程序,将”China”译成密码,密码规律:用原来的字母后面第4个字母代替原来的字母,例如:字母“A”后面第4个字母是”E”,用”E”代替“A”,因此,“China”应译为“Glmre”并输出。 10.编写程序,输出双引号”和反斜杠\,并以3位8进制数和2位16进制的转义字符形式输出大写的字母A。 11.已知x=3.6,y=4.2.编写程序,求表达式x+y及(int)x%(int)y的值 12.设b=35.425,c=52.954,编写程序,求b*c并将其值整数化后赋给a1;再将c除以b的值赋给a2 13.已知a=7, b=3, x=2.5, y=4.7, 编写程序,求表达式(float)(a+b)/2+a%3*(int)(x+y)%2的值 14.用getchar()和putchar()编写从键盘接收一个字符并输出的程序。 15.已知a=123,b=12345678,编写程序,输出a和b所对应的十进制数、十六进制数。 16.已知a=654.12345,编写程序输出以下结果 :654.123450: : 654.12: :654.12 : :6.54e+02: 17.已知字符数组s[]=”welcome to hengyang”, 编写程序输出以下结果: : welcome to hengyang: : welcome to hengyang : 页脚内容2

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

怎么样在KEIL_C软件中调试程序

首先建立工程。选[Project\New Project],选择工程保存的路径,及为工程命名。例如将其存放在D:\新建文件夹(2),命名为123。输入完工程名后会打开一个如下图所示的对话框,在这里我们选择CPU的型号,根据我们选用的CPU芯片的不同,这里的设置不同。在这里我们选用 Atmel\AT89C51。 接下来弹出一个如下图的对话框。该对话框提示你是否要把标准8051的启动代码添加到工程中去。如用C语言写程序,一般选“否”,但是,如果用到了某些增强功能需要初始化配置时,则可选“是”。在这里,我们选“否”,即不添加启动代码。 新建文件。在[File\New]建一个文件,将程序写入。这里以一个00-99秒计时器程序为例。程序如下 #include unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90}; //共阳数码管段0-9 unsigned char Second; delay10ms() //延时10毫秒 { unsigned int i,j; for(i=0;i<10;i++) for(j=0;j<120;j++); } leds() //显示子函数 { P0_0=0; //选通P0_0数码管 P2=table[Second/10]; //送段值 delay10ms(); //延时 P2=0xff; //消影 P0_0=1; //消除P0_0选通状态 P0_1=0; //选通P0_0数码管 P2=table[Second%10]; //送段值 delay10ms(); //延时 P2=0xff; //消影 P0_1=1; //消除P0_0选通状态 } void delay1s(void) //延时1秒 { unsigned char j; for(j=50;j>0;j--) leds(); } void main(void) { Second=0; //显示置0 while(1) //主循环 { delay1s();// 延时 Second++; //自加 if(Second==60) //判断是否到60

c习题集与答案

目录 一、单选题 (1) 二、判断题 (12) 三、填空题 (13) 四、程序填充 (18) 五、读程序写出运行结果 (31) 六、指出以下程序或函数的功能 (43) 七、程序改错 (45) 八、程序设计 (51) 《面向对象程序设计》答案 (60) 一、单选题 1. C++源程序文件的缺省扩展名为( A )。 A. cpp B. exe C. obj D. lik 2. 由C++源程序文件编译而成的目标文件的缺省扩展名为( C )。 A. cpp B. exe C. obj D. lik 3. 由C++目标文件连接而成的可执行文件的缺省扩展名为( B )。 A. cpp B. exe C. obj D. lik 4. 编写C++程序一般需经过的几个步骤依次是( B )。 A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试 C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接 6. 能作为C++程序的基本单位是( C )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 8. C++程序的基本模块为( D )。 A. 表达式 B. 标识符 C. 语句 D. 函数 10. 存储以下数据,占用存储字节最多的是( D )。 A. 0 B. ‘0’ C. “0” D. 0.0 38. 以下说法中正确的是( B )。 A. C++程序总是从第一个定义的函数开始执行 B. C++程序总是从main函数开始执行 C. C++函数必须有返回值,否则不能使用函数 D. C++程序中有调用关系的所有函数必须放在同一个程序文件中

40. 函数重载是指( A )。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是( C )。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列( C )的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值 43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择 ( A )。 A. 联函数 B.重载函数 C.递归函数 D.函数模板 55. 以下正确的描述是( C )。 A. 不允许设置参数的默认值 B. 设置参数的默认值只能在定义函数时设置 C. 设置参数的默认值时,应该设置右边的参数 D. 设置参数的默认值时,应该全部参数都设置 56. 采用重载函数的目的是( D )。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 59. 下面的标识符中,( C )是文件级作用域。 A. 函数形参 B.语句标号 C.外部静态类标识符 D.自动类标识符 60. 以下叙述不正确的是( D )。 A. 宏替换不占用运行时间 B. 宏名无类型 C. 宏替换只是字符替换 D. 宏名必须用大写字母表示 61. C++语言的编译系统对宏命令的处理是( D )。 A. 在程序运行时进行 B. 在程序连接时进行 C. 和C++程序的其它语句同时进行编译 D. 在对源程序中其它成分正式编译之前进行 62. 当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是( B )。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录 C. 仅仅搜索源程序所在目录 D. 搜索当前逻辑盘上的所有目录 63. 当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是( A )。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录 C. 仅仅搜索源程序所在目录 D. 搜索当前逻辑盘上的所有目录 67. 文件包含命令中被包含的文件的扩展名( C )。 A. 必须是.h B. 不能是.h C. 可以是.h或.cpp D. 必须是.cpp

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为关键

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 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

最新版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)

keilC编程用法

51单片机C语言学习 学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有的单片机选择真是件让人头脑的事。在众多单片机中51架构的芯片风行很久,学习资料也相对很学的较好的选择之一。51的编程语言常用的有二种,一种是汇编语言,一种是C语言。汇编语言码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来效性的代码编写问题。对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编综合以上C语言的优点,我在学习时选择了C语言。以后的教程也只是我在学习过程中的一些学习笔,在这里加以整理和修改,希望和大家一起分享,一起交流,一起学习,一起进步。 *注:可以肯定的说这个教程只是为初学或入门者准备的,笔者本人也只是菜鸟一只,有望各手指点错误提出建议。 第一课建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS 芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软可以满足一般的个人学习和小型应用的开发。(安装的方法和普通软件相当这里就不做介绍了)安装好后,你是不是迫不及待的想建立自己的第一个C程序项目呢?下面就让我们一起来建立序项目吧。或许你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KE

C语言习题集及答案

目录 第一单元程序设计和C语言 (1) 第二单元顺序程序设计 (3) 第三单元分支程序设计 (7) 第四单元循环程序设计 (14) 第五单元数组 (23) 第六单元函数 (34) 第七单元指针 (42) 第八单元结构体和共用体 (61) 第九单元文件 (78) 附加题 (82) 模拟试卷一................................................................................. 错误!未定义书签。模拟试卷二................................................................................. 错误!未定义书签。模拟试卷三................................................................................. 错误!未定义书签。

第一单元程序设计和C语言 一、选择题 1.C语言的基本构成单位是:。 A. 函数 B. 函数和过程 C. 超文本过程 D. 子程序 2.一个C语言程序总是从开始执行。 A. 主过程 B. 主函数 C. 子程序 D.主程序 3.C语言的程序一行写不下时,可以。 A. 用逗号换行 B. 用分号换行 C. 在任意一空格处换行 D. 用回车符换行 4.以下叙述不正确的是:。 A. 在C程序中,语句之间必须要用分号";"分隔 B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数 C. 在C程序中,无论是整数还是实数都能正确无误地表示 D. 在C程序中,%是只能用于整数运算的运算符 5.以下不正确的C语言标识符是。 A. ABC B. abc C. a_bc D. ab.c 6.下列字符串是标识符的是:。 A. _HJ B. 9_student C. long D. LINE 1 7.以下说法中正确的是:。 A. C语言程序总是从第一个定义的函数开始执行 B. 在C语言程序中,要调用的函数必须放在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 8.不合法的常量是:。 A. ...\2? B. "" C. ...3? D. (483) 9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。 int k,a,b; unsigned long w=5; double x=1.422; A. x%(-3) B. w+=-2 C. k=(a=2,b=3,a+b) D. a+=a=+(b=4)*(a=3) 10.在C语言中,字符型数据在内存中以形式存放。 A. 原码 B. BCD码 C. 反码 D. ASCII码

数据结构(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.插入、删除操作更简单

Keil C 简介

Getting Started with μVision2 The Keil Software 8051 development tools listed below are programs you use to compile your C code, assemble your assembly source files, link and locate object modules and libraries, create HEX files, and debug your target program. μVision2 for Windows? is an Integrated Development Environment that combines project management, source code editing, and program debugging in one single, powerful environment.? The C51 ANSI Optimizing C Cross Compiler creates relocatable object modules from your C source code.? The A51 Macro Assembler creates relocatable object modules from your 8051 assembly source code.? The BL51 Linker/Locator combines relocatable object modules created by the C51 Compiler and the A51 Assembler into absolute object modules.? The LIB51 Library Manager combines object modules into libraries that may be used by the linker.? The OH51 Object-HEX Converter creates Intel HEX files from absolute object modules.? The RTX-51 Real-time Operating System simplifies the design of complex, time-critical software projects.? Software Development Cycle When you use the Keil Software tools, the project development cycle is roughly the same as it is for any other software development project. 1. Create a project, select the target chip from the device database, and configure the tool settings. 2. Create source files in C or assembly. 3. Build your application with the project manager. 4. Correct errors in source files. 5. Test the linked application. μVision2 IDE The μVision2 IDE combines project management, a rich-featured editor with interactive error correction, option setup, make facility, and on-line help. Use μVision2 to create your source files and organize them into a project that defines your target application. μVision2 automatically compiles, assembles, and links your embedded application and provides a single focal point for your development efforts. LIB51 Library Manager The LIB51 library manager allows you to create object library from the object files created by the compiler and assembler. Libraries are specially formatted, ordered program collections of object modules that may be used by the linker at a later time. When the linker processes a library, only those object modules in the library that are necessary to create the program are used. BL51 Linker/Locator

C语言习题册答案集

第1章绪论 一、选择题 1~5 CABCD 6~10 BDCBC 11~15 AADCC 二、程序填空题 1、一个C语言程序是由函数组成的。 2、C源程序的后缀名为 3、在C程序中,main()函数最多有 1 个。 4、一个C语言程序总是从主函数/main( ) 开始执行。 5、在C语言里输入是由 scanf 函数实现,输出是由 printf 函 数实现。 6、C语言中,当复合语句多于一条时,要求有一对 { } 括号。 7、一个C源程序必须经过_ 编译__和_链接__生成exe文件才能运行 8、在一个C程序中注释部分两侧的分界符分别为_/*_____和_*/___ 9、编写计算机所程序所使用的语言称为__程序设计语言______。 10、程序设计语言的发展经历了三个阶段__机器语言__、_汇编语言_ 和__高级语言__

第2章基本数据类型及顺序结构程序设计 一、选择题 01~05 ACDDA 06~10 ACAAC 11~15 BDBBC 16~20 DABAA 21~25 DBDAA 26~30 ADDCB 31~35 BDCAB 二、程序填空题 1、__基本数据类型、_构造类型___ 和___其它类型_______。 2、 4 、 4 、 8 、 1 。 3、 double 4、 x<-5||x>5或 abs(x)>5 5、 y%2==1 或y%2!=0 6、 x%3==0&&x%7==0或x%21==0 , 7、 10 , 10 。 8、printf(“****a=%d, b=%d****”,a,b) 。 9、a:b ; c:t1 ; 10、 x%10 , x/10%10 ; 三、程序阅读题 1、 G 。 2、 2, 1 。 3、 0 。 4、 16 。 5、2,50 。 6、 b 。 7、 3 。 8、10,20,0 。 9、 2, 。 10、67, e 。

相关文档