当前位置:文档之家› 数据结构和C++程序设计_题库

数据结构和C++程序设计_题库

数据结构和C++程序设计_题库
数据结构和C++程序设计_题库

《数据结构》

Part1

一.选择

1. 组成数据的基本单位是()

A)数据项B)数据类型C)数据元素D)数据变量

2.算法分析的目的是()

A)找出数据结构的合理性B)研究算法的输入/输出关系

C)分析算法的效率以求改进D)分析算法的易读性

3.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()A)O(1) B)0(n) C)O(n^2) D)O(nlog2n)

4.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是()

A)112 B)144 C)148 D)412

5.下面关于线性表的叙述中,错误的是()

A)顺序表使用一维数组实现的线性表B)顺序表必须占用一片连续的存储单元.

C)顺序表的空间利用率高于链表D)在单链表中,每个结点只有一个链域. 6.在需要经常查找结点的前驱与后继的情况下,使用()比较合适

A)单链表B)双链表C)顺序表D)循环链表

7.队列通常采用的两种存储结构是()

A)顺序存储结构和链式存储结构B)散列方式和索引方式

C)链表存储结构和线性存储结构D)线性存储结构和非线性存储结构

8.在一个单链表中,若删除p所指结点的后继结点,则执行()

A)p->next=p->next->next;B)p=p->next;p->nex=p->next->next;

C)p->next=p->next;D)p=p->next->next;

9.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间

A)单链表B)仅有头指针的单循环链表C)双链表D)仅有尾指针的单循环链表

10.按二叉树的定义,具有三个结点的二元树共有()种形态。

A)3 B)4 C)5 D)6

11.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序()A)发生改变B)不发生改变C)不能确定D)以上都不对12.深度为5的二叉树至多有()个结点

A)16 B)32 C)31 D)10

13.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,那么度为0的结点数为()个。

A)4 B)5 C)6 D)7

14.对于一个具有n个顶点的无向图,若采用邻接表表示,则存放表头结点的数组(顶点表)的大小为()

A)n B)n+1 C)n-1 D)n/2

15.静态查找表和动态查找表二者的根本差别在于()

A)它们的逻辑结构不同B)施加在其上的操作不同

C)所包含的数据元素的类型不一样D)存储实现不一样

二.填空

1.某程序的时间复杂性为(3n+nlog2n+n2+8),其数量级表示为________。

2.线性表L=(a1,a2,…,an)采用顺序结构存储,假定在不同的位置上插入的概率相同,则插入一个新元素平均需要移动的元素个数是_________。

3.对于一株具有n个结点的树,该树中所有结点的度数之和为______。

4. 在一个图中,所有顶点的度数之和等于所有边数的______________倍。

5. 一棵二叉树有67个结点,这些结点的度要么是0,要么是2。这棵二元树中度数为2的结点有______________个。

6.在一个无向图的邻接表中,若表结点的个数是m,则图中边的条数是_____。

7.采用堆排序、快速排序、冒泡排序,对初态有序的表,最省时间的是______ 。

8.设二叉树结点的先根序列为ABDECFGH,中根序列为DEBAFCHG,则二元树中叶结点是_________.

9.一个哈夫曼(Huffman)树有19个结点,则其叶结点的个数是______。

10.栈S和队列Q的初始状态皆为空,元素a1,a2,a3,a4,a5和a6依次通过S栈,一个元素出栈后即进入队列Q,若6个元素出队列的顺序是a3,a5,a4,a6,a2,a1,则栈S至少应该容纳_______个元素。

三.判断

1.线性表的链式存储结构优于顺序行储结构。()

2.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。()

3.对于n个记录的集合进行归并排序,存最坏的情况下所需要的时间是O(n^2)。()4.表中的每一个元素都有一个前驱和后继元素。()

5.进栈操作push(x,s)作用于链接栈时,无须判满。()

6.只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。()

7.在索引顺序表查找方法中,对索引顺序表可以使用顺序表查找方法,也可以使用二分查找方法。()

8.数据元素是数据的最小单位。()

9.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。()

10.按中序遍历一棵二叉排序树所得到的中序遍历序列是一个递增序列。()

四.简答

1. 对于下图所示的树:

(1) 写出先序遍历得到的结点序列;(2) 画出转换后得到的二叉树。

2.请画出与下列二元树对应的森林。

五.算法设计

1.已知一个int类型的数组arra,其长度为n,要求用冒泡排序算法对其从小到大排序,请实现该算法,(要求后面开始循环,大的数值下沉)。

2.利用一个栈实现以下递归函数的非递归计算:

P

n (x)=

?

?

?

?

?

>

=

=

-

-

-

-

1

1

)

(

)1

(2

)

(

2

2

1

2

1

n

n

n

x

P

n

x

xP

x

n

n

Part2

一、单项选择

1、在数据结构的讨论中把数据结构从逻辑上分为()

A)内部结构与外部结构B)静态结构与动态结构

C)线性结构与非线性结构D)紧凑结构与非紧凑结构。

2、算法分析的目的是()

A)找出数据结构的合理性B)研究算法中输入和输出的关系

C)分析算法的效率以求改进D)分析算法的易懂性和文档性

3、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()

A)s→link = p→link; p→link = s; B)p→link = s; s→link = q;

C)p→link = s→link; s→link = p; D)q→link = s; s→link = p;

4、如果想在4092个数据中只需要选择其中最小的5个,采用()方法最好。

A)起泡排序B)堆排序C)锦标赛排序D)快速排序

5、设有两个串t和p,求p在t中首次出现的位置的运算叫做()。

A)求子串B)模式匹配C)串替换D)串连接

6、将一个递归算法改为对应的非递归算法时,通常需要使用()。

A)栈B)队列C)循环队列D)优先队列

7、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。

A)( front - rear + 1) % m B)( rear - front + 1) % m

C)( front - rear + m) % m D)( rear - front + m) % m

8、下面程序段的时间复杂度为()

for (int i=0;i

for (int j=0;j

a[i][j]=i*j;

A)O(m2) B)O(n2) C)O(m*n) D)O(m+n)

9、在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行( )。

A)s->link=p;p->link=s; B)s->link=p->link;p->link=s;

C)s->link=p->link;p=s; D)p->link=s;s->link=p;

10、当利用大小为n 的数组顺序存储一个队列时,该队列的最大长度为()

A)n-2 B)n-1 C)n D)n+1

11、某二叉树的前序和后序序列正好相反,则该二叉树一定是()的二叉树。

A)空或只有一个结点B)高度等于其结点数

C)任一结点无左孩子D)任一结点无右孩子

12、对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点为n2,则( )

A)n0= n2+1 B)n2= n0+1 C)n0= 2n2+1 D)n2=2n0+1

13、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()

A)24 B)73 C)48 D)53

14、对线性表进行折半搜索时,要求线性表必须()

A)以链接方式存储且结点按关键码有序排列B)以数组方式存储

C)以数组方式存储且结点按关键码有序排列D)以链接方式存储

15、顺序搜索算法适合于存储结构为()的线性表。

A)散列存储B)顺序存储或链接存储

C)压缩存储D)索引存储

二、填空

1、数据的存储结构被分为、、、四种。

2、一种抽象数据类型包括和两个部分。

3、栈、队列逻辑上都是结构。

4、栈中存取数据的原则,队列中存取数据的原则。

5、设目标串T=”abccdcdccbaa”,模式P=”cdcc”则第次匹配成功。

三、判断

1、数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要建立的。( )

2、线性表的逻辑顺序与物理顺序总是一致的。()

3、每种数据结构都应具备三种基本运算:插入、删除、搜索。()

4、深度为h的非空二叉树的第h层最多有2h-1个结点。()

5、完全二叉树就是满二叉树。()

6、最优二叉搜索树一定是平衡的二叉搜索树。()

7、线性表中所有结点的类型必须相同。()

8、连通分量是无向图中的极小连通子图。()

9、空串与由空格组成的串没有区别。()

10、带权连通图的最小生成树的权值之和一定小于它的其它生成树的权值之和。()

四、简答

1、在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?

2、将下面的森林变换成二叉树。

3、有图如下,请画出其邻接多重表。

五.算法设计

1、编写算法实现链表的创建、遍历、销毁。

2、编写算法,实现快速排序。

Part3

一.选择

1、在数据结构的讨论中把数据结构从逻辑上分为()

A)内部结构与外部结构 B)静态结构与动态结构

C)线性结构与非线性结构 D)紧凑结构与非紧凑结构。

2、下面程序段的时间复杂度为()

for (int i=0;i

for (int j=0;j

a[i][j]=i*j;

A)O(m2) B)O(n2) C)O(m*n) D)O(m+n)

3、采用线性链表表示一个向量时,要求占用的存储空间地址()

A)必须是连续的 B)部分地址必须是连续的

C)一定是不连续的 D)可连续可不连续

4、已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为da1,则第I 个结点的地址为()。

A)da1+(I-1)*m B)da1+I*m C)da1-I*m D)da1+(I+1)*m

5.下面关于线性表的叙述中,错误的是()

A)顺序表使用一维数组实现的线性表B)顺序表必须占用一片连续的存储单元C)顺序表的空间利用率高于链表D)在单链表中,每个结点只有一个链域6、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()

A)s→link = p→link; p→link = s; B)p→link = s; s→link = q;

C)p→link = s→link; s→link = p; D)q→link = s; s→link = p;

7、设循环队列的结构如下:

const int Maxsize=100;

typedef int Data Type;

typedef struct {

Data Type data[Maxsize];

Int front, rear;

} Queue;

若有一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句()

A)Q.front = = Q.rear; B)Q.front - Q.rear= = Maxsize;

C)Q.front + Q.rear = = Maxsize; D)Q.front= = (Q.rear+1)% Maxsize;

8、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。

A)( front - rear + 1) % m B)( rear - front + 1) % m

C)( front - rear + m) % m D)( rear - front + m) % m

9、将一个递归算法改为对应的非递归算法时,通常需要使用()。

A)栈 B)队列 C)循环队列 D)优先队列

10、下列广义表是线性表的有()

A)E(a,(b,c))B)E(a,E) C)E(a,b) D)E(a,L( ) )

11、设有两个串t和p,求p在t中首次出现的位置的运算叫做()。

A)求子串 B)模式匹配 C)串替换 D)串连接

12、对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点为n2.,则( )

A)n0= n2+1 B)n2= n0+1 C)n0= 2n2+1 D)n2=2n0+1

13、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()

A)24 B)73 C)48 D)53

14、对线性表进行折半搜索时,要求线性表必须()

A)以链接方式存储且结点按关键码有序排列 B)以数组方式存储

C)以数组方式存储且结点按关键码有序排列 D)以链接方式存储

15.静态查找表和动态查找表二者的根本差别在于()

A)它们的逻辑结构不同B)施加在其上的操作不同

C)所包含的数据元素的类型不一样D)存储实现不一样

二.判断

1、数据元素是数据的最小单位()。

2、数据结构是指相互之间存在一种或多种关系的数据元素的全体()。

3、线性表的逻辑顺序与物理顺序总是一致的()

4、每种数据结构都应具备三种基本运算:插入、删除、搜索()。

5、空串与由空格组成的串没有区别。()

6、深度为h的非空二叉树的第h层最多有2h-1个结点()

7、完全二叉树就是满二叉树。()

8、最优二叉搜索树一定是平衡的二叉搜索树。()

9、快速排序是对起泡排序的一种改进。( )

10、B-树是一种动态索引结构,它既适用于随机搜索,也适用于顺序搜索。()

三.简答

1、已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是EBCDAFHIGJ。

(1)试画出这棵二叉树;

(2)给出这棵二叉树的后序遍历序列。

2、已知一颗树如下图所示,请用孩子兄弟存储表示法表示该树。

四.算法设计

已知一个int类型的数组arra,其长度为n,要求用冒泡排序算法对其从小到大排序,请实现该算法,(要求后面开始循环,大的数值下沉)。

Part4

一、单项选择

2、在数据结构的讨论中把数据结构从逻辑上分为()

A)内部结构与外部结构 B)静态结构与动态结构

C)线性结构与非线性结构 D)紧凑结构与非紧凑结构。

2、下面程序段的时间复杂度为()

int f(unsigned int n)

{

if(n= =0 || n= =1) return 1;

else return n*f(n-1);

}

A)O(1) B)O(n) C)O(n2) D)O(n!)

3、一个数组元素a[i]与()的表示等价。

A) *(a+i)B) a+i C) *a+i D) &a+i

4、若需要利用形参直接访问实参,则应把形参变量说明为()参数。

A) 指针B) 引用 C) 值 D) 变量

5、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j

从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是()。

A) 80 B) 100 C) 240 D) 270

6、在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n)时,需要从前向后依次前移( )个元素。

A) 1 - i B) n - i + 1C) n –j - 1 D) i

7、设单链表中结点结构为(data,link).已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作()

A) s->link=p->link; p->link=s; B) q->link=s; s->link=p

C) p->link=s->link; s->link=p; D) p->link=s; s->link=q;

8、设单循环链表中结点的结构为(data,link),且first为指向链表表头的指针,current 为链表当前指针,在循环链表中检测current是否达到链表表尾的语句是( )。

A) current->link =null B) first->link=current

C) first=current D) current->link=first

9、一个栈的入栈序列为a,b,c,则出栈序列不可能的是( )。

A) c,b,a B) b,a,c C) c,a,b D) a,c,b

10、设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。若想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,则应执行下列()操作。

A) x=top->data; top=top->link; B) top=top->link; x=top->data;

C) x=top; top=top->link; D) x=top->data;

11、假定一个顺序存储的循环队列的队头和队尾指针分别为f和r ,则判断队空的条件为( )。

A) f+1= =r B) r+1= =f C) f= =0 D) f= =r

12、当利用大小为n 的数组顺序存储一个队列时,该队列的最大长度为()

A) n-2 B) n-1 C) n D) n+1

13、某二叉树的前序和后序序列正好相反,则该二叉树一定是()的二叉树。

A) 空或只有一个结点B) 高度等于其结点数

C) 任一结点无左孩子 D) 任一结点无右孩子

14、顺序搜索算法适合于存储结构为()的线性表。

A) 散列存储 B) 顺序存储或链接存储

C) 压缩存储 D) 索引存储

15、判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用()。

A) 求关键路径的方法 B) 求最短路径的Dijkstra方法

C) 深度优先遍历算法 D) 广度优先遍历算法

二、判断

1、从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构()。

2、每种数据结构都应具备三种基本运算:插入、删除、搜索()。

3、非空线性表中任意一个数据元素都有且仅有一个直接前驱元素。()

4、将T在S中首次出现的位置作为T在S中的位置的操作称为串的模式匹配。()

5、已知一棵二叉树的前序序列和中序序列可以唯一地构造出该二叉树。()

6、线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻。()

7、用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关()。

8、邻接表只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。()

9、连通分量是无向图中的极小连通子图。()

10、快速排序是对起泡排序的一种改进。( )

三、)

1、某子系统在通信联络中只可能出现8种字符,其出现的概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11试设计赫夫曼编码。

2、将下面的森林变换成二叉树。

四.算法设计

已知一个int类型的数组arra,其长度为n,要求用选择排序算法对其从小到大排序,请实现该算法。

《面向对象程序设计C++》

Part1

一、单项选择

1.下面对于指针的描述不正确的是( )。

A.指针是地址变量

B.指针不能用除0以外的常量赋值

C.两个指针变量的加减法无意义

D.指针指向不同基类型的变量长度不同

2.下面对于析构函数的描述中不正确的是( )。

A.析构函数是内置函数

B.析构函数与类名相同

C.析构函数不能有参数

D.析函数在对象撤销时自动执行

3.下列指针用法中错误的是( )。

A. int i; int *ptr = &i;

B. int i; int *ptr; i= *ptr;

C. int *ptr; ptr=0;

D. int i=5;int *ptr;*ptr=i;

4.派生类的对象对它的基类成员中什么是可访问的( )?

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的公有成员

5.在( )情况下适宜采用inline定义内联函数。

A.函数体含有循环语句

B.函数体含有递归语句

C.需要加快程序的执行速度

D.函数代码多、不常调用

6.在类中说明的成员可以使用关键字( )进行修饰。

A. public

B. extern

C. cpu

D. register

7.如果类A被说明成类B的友元,则( )。

A.类A的成员即类B的成员

B.类B的成员即类A的成员

C.类A的成员函数不得访问类B的成员

D.类B不一定是类A的友元

8.定义析构函数时,应该注意( )。

A.其名与类名完全相同

B.返回类型是void类型

C.无形参,也不可重载

D.函数体中必须有delete语句

9.在类中声明一般函数时不能指定( )。

A.参数

B.访问权限

C.操作

D.标识符

10.在派生类中重新定义虚函数时必须在( )方面与基类保持一致。

A.参数类型

B.参数名字

C.操作内容

D.返回值类型

11.设int a=3,b=4,c=5;表达式(a+b)>c&&b= =c的值是( )。

A. 2

B. -1

C. 0

D. 1

12.下列标识符中,不合法的用户标识符为( )。

A. a#b

B. _int

C. a_10

D. PAd

13.while(!x)中的(!x)与下面条件( )等价。

A. x==1

B. x!=1

C. x!=0

D. x==0

14.每个类( )构造函数。

A.只能有一个

B.只可有公有的

C.可以有多个

D.只可有缺省的

15.静态成员函数不能说明为( ) 。

A. 整型函数

B. 浮点函数

C. 虚函数

D. 字符型函数

16.重载赋值操作符时,应声明为( )函数。

A.友元

B.虚

C.成员

D.多态

17. 下面描述中,表达错误的是()

A.公有继承时基类中的public成员在派生类中仍是public的

B.公有继承时基类中的private成员在派生类中仍是private的

C.公有继承时基类中的protected成员在派生类中仍是protected的

D.私有继承时基类中的public成员在派生类中是private的

18.通过( )调用虚函数时,采用动态指定。

A.对象指针

B.对象名

C.成员名限定

D.派生类名

19.在用class定义一个类时,数据成员和成员函数的默认访问权限是( )

A. private

B. public

C. protected

D. virtual

20.C++语言的跳转语句中,对于break和continue说法正确的是()

A. break语句只应用与循环体中

B. continue语句只应用与循环体中

C. break是无条件跳转语句,continue不是

D. break和continue的跳转范围不够明确,容易产生问题

二、完成程序

1.在下面程序的底画线处填上适当的字句,使该程序执行结果为60。

# include

class CBase

{

int X;

public:

void Init (int initX){X = initX; }

int GetNum() {return X+7; }

}

void main()

{

_______

_______

cout<

}

2.在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。# include

calss line;

class box

{

private∶

int color;

int upx,upy;

int lowx,lowy;

public∶

_______ int same_color(line a,box b);

void SetColor(int iCl){color = iCl;}

void define_box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;lowx=x2;lowy=y2;}

};

class line

{

private∶

int color;

int startx,starty;

int len;

public∶

friend int same_color(line a,box b);

void setlen(int iL){len=iL;}

_______

void define_line(int x,int y){startx=x ;straty=y;}

};

int same_color(line a,box b)

{

if ( a.color = =b.color) return 1;

return 0;

}

void main()

{

line l;

box bb;

bb.SetColor(1);

l.SetColor(1);

if (same_color(l,bb)==1) cout<<"The Same Color!"<

}

3. 已知int DBL(int n){return n + n;} 和long DBL(long n){return n+n;}是一个函数模板的两个实例,则该函数模板的定义是

4.在下列程序的空格处填上适当的字句,使输出为:0,8,5。

# include

# include

class Magic

{

double x;

public∶

Magic(double d=0.00)∶x(fabs(d)){}

_______{return Magic(sqrt(x*x+c.x*c.x));}

friend ostream& operator<<(ostream & os,Magic c){return os<

};

void main()

{

Magic ma;

cout<

}

三、综合应用

1.分析下列程序可能的输出结果。

# includ e “iostream.h”

class test

{

private:

int num;

float fl;

public:

test( );

int getint( ){return num;}

float getfloat( ){return fl;}

~test( );

};

test::test( )

{

cout<<"lnitalizing default"<

num=0;fl=0.0;

}

test::~test( )

{

cout<<"Desdtructor is active"<

}

int main( )

{

test array[2];

cout<

}

2.下列shape类是一个表示形状的抽象类,length()为求图形周长的函数,total()则是一个通用的用以求不同形状的图形周长总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求周长函数。给出shape,total的定义如下所示。

class shape

{

public:

virtual float length( )=0

};

float total(shape *s[],int n)

{

float sum=0.0;

for(int i=0;i

sum+=s[i]->length( );

return sum;

}

Part2

一、选择

1、面向对象的程序设计思想中,首先在问题域中识别出若干个()

A.函数

B.类

C.文件

D.过程

2、定义类模板用关键字()

A.const

B.new

C.delete

D.template

3、运算结果类型相同的()

A. 9.0/2.0 9.0/2

B. 9/2.0 9/2

C. 9.0/2 9/2

D. 9/2 9.0/2.0

4、已知f1 f2同一类两个成员函数,但f1不能调用f2,说明()

A.f1 f2都是静态函数

B.f1是静态函数,f2不是

C.f1不是,f2是静态函数

D.f1 f2都不是静态函数

5、调用一成员函数时,使用动态联编的情况是()

A.通过对象调用一虚函数

B.通过指针或引用调用一虚函数

C.通过对象调用静态函数

D.通过指针或引用调用一静态函数

6、假定一个类构造函数为:“A(int aa=1,int bb=0){a=aa;b=bb;}则执行"A x(4)"后,x.a和x.b 值分别是:()

A.1,0

B.1,4

C.4,0

D.4,1

7、在派生类中能直接访问基类的()

A.公有成员,私有成员

B.保护成员,私有成员

C.不可访问成员,私有成员

D.公有成员,保护成员

8、不具访问权限属性的是:( )

A.非类成员

B.类成员

C.数据成员

D.函数成员

9、类定义中private,protected,public 出现次数为()

A.任意多次

B.至多一次

C.public 至少一次

D.至少一次

10、C++鼓励程序员将()

A.数据操作分别封装

B.不同类型数据封装

C.数据操作封装在一起

D.不同作用操作封装在一起

二、填空

1、C++中,最好用()代替malloc

2、函数模板中template之后尖括号的类型参数冠以保留字()

3、在IOS类中定义的用于格式控制的枚举变量中十、八、十六进制是dec,oct,( )

4、如果重载了运算符+,则相应运算函数名是()

5、由static修饰的数据成员为该类的所有对象()

6、为了实现多态性,派生类需要重新定义基类中的()

7、编译时多态性通过()虚函数实现。

8、派生类中实现基类成员初始化,需由派生类的构造函数调用()来完成。

9、C++中访问指令所指对象的静态成员函数使用运算符()

10、重载函数在参数类型或参数个数上不同但()相同。

三、改错

1、类定义有错,正确结果为5+8i

#include

#include

class complex

{

double real;

double imag;

public:

complex(double r=0.0,double i=0.0):real(r),imag(i){};

void show()

{

cout<=0?'+':'-')<

}

friend complex&operator +=(complex c1,complex c2)

{

c1.real+=c2.real;

c1.imag+=c2.imag;

return c1;

}

};

void main()

{

complex c(3,5);

c+=complex(2,3);

c.show();

}

2、改一处错

#include

class shape{

public:

int area(){return 0;}

};

class rectangle:public shape{

public:

int a,b;

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

int area(){return a*b;}};

void main()

{

rectangle r;

r.setlength(3,5);

shape *s = r;

cout <

cout <

}

3、指出下面类中的错误,并改正:

class A

{

int a,b;

public:

A(int aa=0,int bb)

{

a=aa;b=bb;

}

};

4、指出下面类中的错误,并改正

class Location

{

int x,y;

protected:

int SetZero(int zeroX,int XeroY);

private:

int length,height;

public:

void Location (int initX,int initY);

int getx();

int gety();

}

四、程序填空

1、在空白处填上正确的内容,使输出结果为:5 4 3 2 1

0 5.5 4.4 3.3 2.2 1.1

#include

template void f( , ) {

T t;

for (int i=0;i

{

t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;

}

}

void main()

{

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

double d[6]={1.1,2.2,3.3,4.4,5.5}

f(a,5);

f(d,6);

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

cout <

cout <

for ( )

cout<

cout <

}

2、在空白处填上正确的内容,使类定义完整

class line;

class box{

private:

int color;

int upx,upy;

int lowx,lowy;

public:

int same_color( , box b);

void set_color(int c){color =c;}

void define_box(int x1,int y1,int x2,int y2)

{upx=x1;upy=y1;lowx=x2;lowy=y2;}

};

class line{

private:

int color;

int startx,starty;

int endx,endy;

public:

friend int same_color(line l,box b);

void define_line(int x1,int y1,int x2,int y2)

{startx=x1;starty=y1;endx=x2;endy=y2;}

};

int same_color(line l,box b){

if (l.color==b.color) return l;

return 0;

}

3、A为抽象类,在空白处填上正确的内容,输出为:this is class B printing

this is class C printing

#include

class A{

public :

};

class B:public A{

public:

void printMe(){cout<<"this is class B printing"<

class C:public B{

void printMe(){cout<<"this is class C printing"<

void print( )

{

a.printMe();

}

void main()

{

B b;

C c;

print(b);

print(c);

}

4、在空白处填上正确的内容,使类完整

class A{

int * a;

int n;

public:

A():a(0),n(0){}

A(int nn)

{

//用nn初始化n

//用A指向长度为N的动态数组空间}

};

5、在空白处填上正确的内容,使类完整

class base{

protected:

int a;

public:

base(){a=0;}

base(int i){a=i}

base(base&b){a=b.a}};

class derived:public base{

private:

int d;

public:

derived(){d=0;}

derived(int i,int j): {d=j;}

derived(derived&b): {d=b.d;}

};

五、构建一个Employee类,该类中有字符数组,表示姓名、住址、邮政编码、电话号码、email。把表示构造函数、ChangeInfo()、DisplayInfo()的函数原型放在类的定义中,构造函数初始化每个成员、ChangeInfo()表示修改成员内容,DisplayInfo()打印输出所有对象成员数据。其中数据成员是保护的,函数是公共的。(可以使用MFC中的CString类)

C程序设计题库

填空题 20*2 ■对于51系列单片机,现有4种语言支持程序设计,它们是(汇编语言)、PL/M、(C语言)、BASIC。 ■单片机程序设计时需要在主程序中设计死循环来防止程序跑飞。在C语言中采用(while(1))或for(;;)语句实现死循环。 ■单片机程序设计中经常用到中断,在C语言程序设计中外部中断1的中断入口序号(2),而汇编语言程序设计中外部中断1的入口地址是(0013H)。 ■编写串口中断程序时要在函数说明部分后写interrupt 4 。 ■编写定时器0中断程序时要在函数说明部分后写interrupt 1 。 ■C语言程序设计中有一个无符号形字符变量temp和一个位变量Flag,现在分别对它们取反。相应的语句为temp=__~___temp; Flag=_!___Flag;。 ■I2C总线在传送数据过程中共有三种类型控制信号,它们分别是:_(起始信号)____、应答信号、_(停止信号)_____。 ■I2C的地址由(协议规定)与(硬件设置)两部分组成。 ■I2C器件的两条信号线分别为串行时钟线SCL 与串行数据线 SDA 。 ■MCS-51单片机操作I2C器件时,单片机必须做为主机,I\O编程。 ■在Cx51所有的数据类型中,只有bit 与unsigned char 直接支持机器指令。 ■编译器性能比较有如下几个方面:算数支持、生产代码大小、开打速度、支持浮点和long 。 ■在KEIL开发套件中,BL51链接器/定位器用于创建一个绝对目标横快。 ■Cx51中函数分为两大类:标准库函数和用户自定义函数。 ■在函数名前如果不指定函数类型,则该函数的类型为整型。 ■具有一定格式的数字或数值叫做数据,数据的不同格式叫做数据类型, 数据按一定的数据类型进行的排列、组合及架构称为数据结构。 ■数据类型的转换有自动转换与强制转换两种。 ■直接出现在程序中的数值(如TMOD=0x21)称为常数。在程序运行的过程中,其值不能改变且被定义为符号的(如#define CONST 60)称为常量。 ■软件对常量与变量的命名规范是:常量名用大写字母,变量名用小写字母。 ■MCS-51单片机串口用于中断通讯时,在进行初始化时必须设置的特殊功能寄存器有:

《C程序设计语言》样卷

韩山师范学院2011年专升本插班生考试样卷 计算机科学与技术专业高级语言程序设计试卷(A卷) 一、填空题(每空1分,共10分) 1.C程序的基本单位是________。 2.C语言源程序文件的后缀是________。 3.C语言中的标识符由________、________和字母组成。 4.设y为float型变量,执行表达式y=6/5之后,y的值是________。 5.在C语言中,要求运算量必须是整型的运算符是___________。 6.如果函数值的类型与返回值的类型不一致时,应该以___________为准。7.已知int a=8,*p=&a;,则*p的值是___________。 8.把一些不同类型的数据作为一个整体来处理时,常用___________。9.若x=2,y=3,则x|y<<2的结果是___________。 二、单项选择题(每小题1.5分,共30分) A.顺序结构、选择结构、循环结构B.递归结构、循环结构、转移结构C.嵌套结构、递归结构、顺序结构D.循环结构、转移结构、顺序结构2.在一个C语言的源程序中,以下叙述正确的是()。

A.必须有除主函数外其他函数B.可以有多个主函数 C.必须有一个主函数D.可以没有主函数 3.以下叙述正确的选项是()。 A.C语言的源程序不必通过编译就可直接执行 B.C语言中的每条语句最终都将被转换成二进制的机器指令 C.C语言程序经编译形成的二进制代码可以直接执行 D.C语言中的函数不可以单独进行编译 4.算法是指为解决某个特定问题而采取的正确且有限的步骤,下面不属于算法的5个特性的是( )。 A.有零个输入或多个输入B.高效性C.有穷性D.确定性5.以下能正确定义且赋初值的语句是( )。 A.int n1=n2=10; B.char c=32; C.float f=f+1.1; D.double x=12.3E2.5 6.有以下程序: main() { char a='a',b; printf("%c",++a); printf("%c\n",b=a++); } 程序运行后的输出结果是( )。 A.bb B.bc C.ab D.ac 7.以下程序段的输出结果是( )。 int a=1234; printf("%2d ",a); A.12 B.34 C.1234 D.提示出错 8.有以下程序:

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

程序设计基础C-题库-1

程序设计基础C-题库 1、计算机语言按照高低级别可分为机器语言、 、 三大类。 答案: 汇编语言 ; 高级语言 ; 2、C语言中源文件的后缀名为 。 答案: *.c;.c ; 解析: 3、在程序中,如果使用printf()函数,应该包含 头文件。 答案: stdio.h ; 解析: 4、在main()函数中,用于返回函数执行结果的是 语句。 答案: return ; 5、C语言程序在Windows平台下经过编译、连接后生成的可执行文件后缀是 。答案: .exe ;

6、C语言并不属于高级语言。 答案:错误 7、计算机语言(Computer Language)是人与计算机之间通信的语言。 答案:正确 8、C语言并不能实现汇编语言的大部分功能。 答案:错误 9、Eclipse工具和Visual Studio工具都可以开发C语言。 答案:正确 10、C语言是UNIX和其衍生版本的主要开发语言。 答案:正确 11、请简述printf()函数的作用。 答案: printf()printf()“Hello, world\n”“\n” 12、请简述C语言中main()函数的作用。 答案: main函数是C程序的入口函数,即程序的执行是从main函数开始 解析: 13、使用DEV-C++开发工具编写一个控制台程序,要求在控制台上输出一句话:“我喜欢C语言”。 答案输入: #include int main() { printf("C");

return 0; } 答案输出: C 14、C语言属于下列哪类计算机语言? A、汇编语言 B、高级语言 C、机器语言 D、以上均不是 答案:B 15、下列关于主函数说法错误的是( ) A、一个C程序中只能包含一个主函数 B、主函数是C程序的入口 C、C程序中可以包含多个主函数 D、主函数只能包含输出语句 答案:CD 16、下列选项中,不属于C语言优点的是 A、不依赖计算机硬件 B、简洁、高效 C、可移植 D、面向对象 答案:D 17、下列选项中,哪一个是多行注释? A、// B、/**/ C、\\ D、以上均不属于 答案:B 18、C语言是一种()的编程语言 A、面向对象 B、面向过程 C、可视化 D、组件导向 答案:B

C程序设计语言 (第二版) 课后答案第一章

Chapter 1 Exercise 1-1 Run the “hello world” program on your system. Experiment with leaving out parts of the program, to see what error message you get. #include int main() { printf("hello, "); printf("world"); printf("\n"); return 0; } Exercise 1-2 Experiment to find out what happens when printf’s argument string contains \c, where c is some character not list above. Exercise 1-3 Modify the temperature conversion program to print a heading above the table. #include int main() { float fahr, celsius; float lower, upper, step; lower = 0; upper = 300; step = 20; fahr = lower; printf("Fahrenheit temperatures and their centigrade or Celsius equivalents\n"); while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } return 0; }

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

《C程序设计》试题

《C程序设计》试题 一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() 3. 不是C语言实型常量的是:() .字符串“xyzw”在内存中占用的字节数是:() 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2-`a`,c2-c1);则输出结果为:() (a的ASCII码值为97) ,2 ,3 ,2 ,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是: =,b=3 = b=3 3 表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>yx:mc4)后,s,t的值为:() ,2 ,1 ,1 ,0 12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf 最多可执行次数为:() 13. 对于for(s=2;;s++)可以理解为:() A. for(s=2;0 ;s++) B. for(s=2;1 ;s++) C. for(s=2;s<2 ;s++) D. for(s=2;s>2;s++)

(完整版)C程序设计语言复习题(试题及答案版)

一.填空题 26.C#源程序的后缀名为______.cs________。 26.C#中每个int 类型的变量占用____4___个字节的内存。 26.C#的每行语句以________分号_______结尾。 26.布尔型的变量可以赋值为关键字_____true__________或_____false_________。 26.如果int x的初始值为5,则执行表达式x - =3之后,x的值为_____2_________。 26.do...while语句在执行循环体_____之后________测试语句是否满足循环条件。 26.关键字_______class________表示一个类的定义。 26.如果一个类包含一个或多个抽象方法,它是一个_________抽象_____________类。 26.try块运行后,总是会执行_________finally_____________块中的代码。 26.一个数组如果有两个索引值,那么它是__________二维__________数组。 二.单项选择题 1.在对SQL Server 数据库操作时应选用()。 A、SQL Server .NET Framework 数据提供程序; B、OLE DB .NET Framework 数据提供程序; C、ODBC .NET Framework 数据提供程序; D、Oracle .NET Framework数据提供程序; 2.下列选项中,()是引用类型。 A、enum类型 B、struct类型 C、string类型 D、int类型 3.C#的数据类型有() A、值和调用类型; B、值和引用类型; C、引用和关系类型; D、关系和调用类型 4.下列描述错误的是() A、类不可以多重继承而接口可以; B、抽象类自身可以定义成员而接口不可以; C、抽象类和接口都不能被实例化; D、一个类可以有多个基类和多个基接口; 5.下列关于构造函数的描述正确的是() A、构造函数可以声明返回类型。 B、构造函数不可以用private修饰 C、构造函数必须与类名相同 D、构造函数不能带参数 6.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; 那么myArray3[2][2]的值是( )。 A、9 B、2 C、6 D、越界 7.接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。 A、方法、属性、索引器和事件; B、方法、属性信息、属性; C、索引器和字段; D、事件和字段; 8.在https://www.doczj.com/doc/1e17861721.html,中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误 的是()。 A、insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行; B、ExecuteNonQuery()方法返回执行Sql语句所影响的行数。 C、Select操作的Sql语句只能由ExecuteReader()方法来执行; D、ExecuteReader()方法返回一个DataReder对象; 9.Winform中,关于ToolBar控件的属性和事件的描述不正确的是( )。 A、Buttons属性表示ToolBar控件的所有工具栏按钮 B、ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度 C、DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭 头键 D、ButtonClick事件在用户单击工具栏任何地方时都会触发

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计试题集及答案

单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n

【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

C语言程序设计-----阅读程序题库及答案

C语言程序设计-----阅读程序题库及答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

阅读程序题 【】以下程序的输出结果是。 main(D ) { float a; printf("%g",a); } A) +00 B) C) D) 0 【】下面程序的输出结果是B____。 #include <> main( ) { int x=10; { int x=20; printf ("%d,", x);

} printf("%d\n", x); } A) 10,20 B) 20,10 C) 10,10 D) 20,20 【】以下程序的输出结果是___B_。 main() { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }s",s); } A) a book! B) a book!<四个空格》 C) a bo D) 格式描述错误,输出不确定

【】下面程序的输出结果是____。 main() { int a,b; scanf("%2d%3d",&a,&b); printf("a=%d b=%d\n",a,b); } A) a=12 b=34 B) a=123 b=45 C) a=12 b=345 D) 语句右错误 【】以下程序段的输出结果是。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);

A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 【】以下程序的输出结果是。 main() { int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; printf("d=%d\n",d); } A) d=10 B) d=15 C) d=20 D) d=25 【】下面程序的输出结果为。 main()

C语言程序设计期末考试试题及答案

C 语言程序设计 试 题 (2008 /2009 学年 第 二 学期) 一. 选择题(满分30分,每题2分) 1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d ”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C 语言中函数返回值的类型由 D 决定的。 A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。 8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include void main() { int a=1,b=0,c=0; if (a

《C程序设计语言》模拟试卷二

一、单项选择题 1.以下并非C语言的特点的是____________。 A.C语言简洁紧凑 B.能够编写出功能复杂的程序 C.C语言可以直接对硬件进行操作 D.C语言移植性好 2.在C程序中,main()的位置___ ______。 A.必须作为第一个函数 B.必须作为最后一个函数 C.可以任意 D.必须放在它所调用的函数之后 3.一个C程序是由____ ________。 A.一个主程序和若干个子程序构成 B.一个或多个函数构成 C.若干过程组成 D.若干子程序组成 4.以下字符串为标识符的是___ _________。 A._MY B.2_2222 C.short D.LINE 5 5.下列符号可以作为变量名的是___ ________。 A.+a B.*p C._DAY D.next day 6.设c是字符变量,则以下表达式正确的是___ _______。 A.c=666 B.c='c' C.c="c" D.c="abcd" 7.以下说法正确的是_____ _______。 A.输入项可以为一个实型常量,如scanf("%f", 3.5) B.只有格式控制没有输入项也能进行正确输入,如scanf("%d") C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如 D.当输入数据时,必须指定变量的地址,如scanf("%f", &f) 8.若a, b, c均定义为整型,要给它们输入数据,正确的输入语句是____ ________。 A.read(a, b, c); B.scanf("%d%d%d", a, b, c); C.scanf("%D%D%D", a, b, c); D.scanf(%d%d%d", &a, &b, &c); 9.若a是float变量,b是unsigned型变量,以下输入语句中合法的是____ ___。 A.scanf("%6.2f%d", &a, &b); B.scanf("%f%n", &a, &b); C.scanf("%f%3o", &a, &b); D.scanf("%f%f", &a, &b); 10.if后面的表达式之值__________。 A.只能是0或1 B.只能是正整数或负整数 C.只能是整数或字符型数据 D.可以是任何类型的数据 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与__ ___组成配对 关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其直接最近的未配对的if D.同一行上的if 12.选择出合法的if语句(设int x, a, b, c;)____ _____。 A.if(a = b0 x++; B.if (a =< b) x++; C.if(a <> b) x++; D.if (a=>b) x++; 13.语句while(!e); 中的条件!e等价于____ _______。 A. e == 0 B.e!=1 C.e!=0 D.~e 14.C语言中while和do-while循环的主要区别是____ _______。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

C程序设计语言资料

第3次作业 一、填空题(本大题共20分,共5小题,每小题4分) 1?假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 2. 类型兼容原则指的是:任何在需要________ 对象的地方,都可以用_______________________________________ 的对象 去替代。 3. 重新抛出异常的表达式为:__________ 4. 以下程序的执行结果是______________________ #i nclude using n amespace std; class Base{ public: Base(){cout<< ” T ;} ~Base(){cout<< ” 2” ;} }; class Derived : public Base{ public: Derived(){cout<< ” 3” ;} ~Derived(){cout<< ” 4” ;} }; void mai n(){ Derived d;

5. 以下程序的执行结果是______________________ #i nclude using n amespace std; class A{ int x; public: A(int x){this->x=x;} A &operator--(){x--;return *this;} A operator— nt){A a(x-=2);retur n a;} void show(){ cout? x;} }; void mai n(){ A a(3),b(3); (a--).show(); (--b).show(); } 二、程序阅读题(本大题共40分,共5小题,每小题8分) 1.写出下面程序运行结果。 #i nclude void rev(i nt a[],i nt n) { int t; for(int i=0,j=n-1;i

相关主题
文本预览
相关文档 最新文档