第1周 程序设计与C++概述

1.1 程序设计和C++随堂测验

1、C++是一种( )计算机语言。
    A、面向过程的
    B、面向对象的
    C、数据库编程
    D、网络编程

1.2计算机语言的分类随堂测验

1、编写C++程序的一般步骤依次是( )。
    A、编辑、调试、编译、运行
    B、编辑、编译、连接、运行
    C、编译、调试、编辑、运
    D、编译、编辑、连接、运行

1.3HelloWorld和编程环境随堂测验

1、下列哪行程序的作用是在屏幕上显示“Hello world”这句话。
    A、#include<iostream>
    B、using namespace std;
    C、cout<<" Hello world ";
    D、return 0;

2、C++中的main()函数有且只能有一个。

3、main函数的书写中,main后面紧跟一对圆括号,里面可以什么都不写,再后面是一对大括号,其中写程序。

1.4程序错了怎么办随堂测验

1、在DEV-C++环境下编写程序,如何知道语法上有错?
    A、运行时显示错误结果。
    B、编译时在“编译器”窗口显示错误信息。
    C、编译时在“调试”窗口显示错误信息。
    D、编译时在“资源窗口”显示错误信息。

2、如何快速找到错误的位置?
    A、逐行阅读程序。
    B、逐行阅读错误信息。
    C、和书上的程序逐字核对。
    D、双击编译错误信息的第1行,光标会停留在可能出错的行。

1.5实例:生日贺卡随堂测验

1、设在程序中用address表示通信地址,说明为char address[100]; 若想输入象"No.28, Xian Ning Xi Road"这样(单词间有空格)的地址,应该使用下列哪个语句?
    A、cin>>address;
    B、cin>>address(s,100);
    C、cin.getline(s,100);
    D、cin.getline(address,100);

1.6实例:加法计算器随堂测验

1、若想用width和height表示屏幕的宽度和高度(单位:像素,整数),在C++中使用下列哪个语句来声明?
    A、int width, height;
    B、double width, height;
    C、char width, height;
    D、char width[40], height[40];

1.7实例:计算存款本息随堂测验

1、C++中使用数学函数,需要包含的头文件是( )。
    A、iostream
    B、cmath
    C、namespace
    D、main

1.8C++程序的基本要素随堂测验

1、C++中的每一条语句后面都必须写分号。

2、C++中使用变量,必须先声明,后使用。

第1周单元测试

1、下列哪项不是C++的语句?
    A、c=a+b
    B、a;
    C、a+b;
    D、c=a+b;

2、设整型变量a,b,c已经声明,下列哪项语句的顺序是正确的?
    A、cin>>a>>b; c=a+b; cout<<c;
    B、c=a+b; cin>>a>>b; cout<<c;
    C、cout<<c; c=a+b; cin>>a>>b;
    D、c=a+b; cout<<c; cin>>a>>b;

3、下列哪个符号不是C++的关键字?
    A、distance
    B、int
    C、using
    D、return

4、下列哪个不是C++合法的标识符?
    A、3w
    B、#width
    C、zhao@xjtu
    D、int_stu
    E、_height
    F、w3
    G、_0101
    H、_2015

5、C++程序中cout<<endl;的作用是( )。
    A、表示换行(输出换行符)。
    B、表示程序结束。
    C、表示语句结束。
    D、表示输出结束。

6、英文单词terminating的含义是( )。
    A、结束、终止
    B、学期
    C、模仿
    D、换行

7、C++中变量的名字只能用一个字母表示。

8、一行程序中,如果连续写了两个分号,编译时会出错。

9、C++中使用变量,必须先声明。

10、C++中的输入可以使用cin,一个cin可以输入多项数据,每项前面加两个大于号。

第1周编程作业

1、1-1我爱C++

2、1-2来自系统的问候

3、1-3乘法计算器

4、1-4单位换算

5、1-5平方根计算器

C++基础练习100题

第1周基础练习

1、显示Hello World!

2、显示唐诗

3、显示一句话

4、还是一句话

5、计算矩形周长

6、已知直角边求斜边

第2周基础练习

1、求过平面上两点的直线的斜率

2、计算平面上两点之间的距离

3、判断大小写

4、判断数字

5、判断闰年

6、求商和余数

7、计算平均分取整

8、计算点到直线的距离保留两位小数

9、输入字符显示ASCII值

10、输入整数显示ASCII字符

11、输入整数显示十六进制

12、输入整数显示十六进制和八进制

第3周基础练习

1、判断奇偶数

2、判断数的类型

3、判断点的象限

4、判断字符类型

5、百分制成绩转五分制成绩

6、显示n个字符

7、显示字符组成的矩形

8、用循环计算1+2+3+...+n

9、计算1+1/2+1/3+...+1/n

10、计算n!

11、交替输出1和-1

12、判断整数的位数

13、求非负整数的各位数字的和

14、九九乘法表

15、不一样的九九乘法表

16、Fibonacci序列

第4周基础练习

1、数组元素反序输出

2、求数组元素最大值

3、数组指定区间的元素的最大、最小、总和和平均值

4、求矩阵每行元素最大值

5、求矩阵每列元素最大值

6、计算向量的和

7、矩阵向量的内积

8、计算向量的范数

9、计算向量的欧氏距离

10、矩阵求和

11、输入字符串,求长度

12、统计字符串中大写字母的数量

13、复制字符串

14、字符串逆序

15、定义表示平面坐标点的结构体计算两点距离

第5周基础练习

1、求两个数的和

2、求绝对值的函数

3、x的k次方

4、求n!的函数

5、输入数组元素

6、输出数组元素值

7、将数组元素逆序

8、求数组元素的和

9、求字符串的长度的函数

10、10.字符串转大写

11、字符串复制函数

12、字符串比较函数

第6周基础练习

1、递归计算n!

2、递归计算1+2+3+…+n

3、递归求数组元素的最大值

4、递归求数组元素的和

5、递归求Fibonacci序列的第n项

6、递归逆序数组元素

7、输入输出数组元素的函数重载

8、逆序函数重载

9、数组元素求和函数的重载

10、交换两个元素值的重载函数

第7周基础练习

1、两个数的排序

2、三个数的排序

3、返回数组的统计值(最大、最小、平均值、标准差)

4、通过指向函数的指针调用函数

5、计算任意一元函数值的通用函数

6、计算函数在指定区间的近似平均值

第8周基础练习

1、使用指针输出数组元素

2、通过指针输入输出数组元素的函数

3、指针实现字符串复制函数

4、指针实现字符串比较

5、通过指针访问结构体变量

6、通过指针访问结构体数组

7、动态申请变量

8、动态申请数组

9、动态申请结构体数组

10、动态申请结构体数组空间和结构体数组复制

第9周基础练习

1、点类

2、圆类

3、矩形类

4、复数类

5、分数类

第10周基础练习

1、带构造函数的点类

2、带构造函数的圆类

3、带拷贝构造函数和析构函数的矩形类

4、向量类的构造函数和析构函数

第11周基础练习

1、继承点类定义圆类

2、继承点类定义矩形类

3、继承房间类定义教室类

4、继承车辆类定义客车类

第12周基础练习

1、形状类虚函数

2、形状类纯虚函数

3、三维空间向量类重载加法运算

4、复数类重载乘法

第13周基础练习

1、格式输出

2、文件版HelloWorld

3、从文件中读一行文字

4、显示文本文件内容

5、从文件读整数求和

第2周 简单信息的表示和基本运算

2.1数据类型随堂测验

1、32位系统中,C++的int型数据占的空间一般为_______字节。
    A、8
    B、2
    C、4
    D、10

2.2常量和变量随堂测验

1、下列哪个是C++语言的合法的字符常量__________。
    A、"\0"
    B、'054'
    C、'\x89'
    D、'\092'

2.3算术运算和自增自减运算随堂测验

1、设n=10,i=4,则执行赋值运算n=n%(i-1)后,n的值是( )。
    A、0
    B、1
    C、2
    D、3

2、自增、自减运算可以用于变量,也可以用于常量和表达式。

2.4关系运算随堂测验

1、下面哪一C++ 语言表达式不能正确表示数学关系a<x≤b。选项为( )。
    A、a<x&&x<=b
    B、x<=b&& a<x
    C、!(a>=x)&&!(x>b)
    D、a<x<=b

2.5逻辑运算符随堂测验

1、若有a=1,b=2,则表达式a+1==b的值为( )。
    A、0
    B、1
    C、2
    D、3

2.6位运算随堂测验

1、在位运算中,操作数每右移一位,其结果相当于__________。
    A、操作数乘以2
    B、操作数除以2
    C、操作数乘以4
    D、操作数除以4

2.7特殊运算符(赋值运算符、字节数运算符、条件运算符和逗号运算符)随堂测验

1、n目运算符的含义是( )。
    A、对n个数据进行操作
    B、对n个数据进行加法
    C、对n个类型进行整合
    D、对n个类型进行转换

2、若有a=2,b=4,c=5,则条件表达式a>b?a:b>c?a:c的值为( )。
    A、0
    B、2
    C、4
    D、5

3、以下非法的赋值语句是( )。
    A、n=(i=2,++i);
    B、j++;
    C、++(i+1);
    D、x=j>0;

2.8混合运算的类型转换随堂测验

1、有如下表达式19/3*sqrt(4.0)/5,则该表达式值数据类型为( )。
    A、int
    B、float
    C、double
    D、不确定

第2周单元测试

1、设x,y,z为整型数,下列各式中,运算结果与x=y=24的表达式相同的是____。
    A、x=y=(z=8,4*6)
    B、.x=(y=z=8,4*6)
    C、x=y=z=8, 4*6
    D、x- (y=z= 8),4*6

2、C++源程序中,以下说法不正确的是( )。
    A、变量声明语句一定要给变量赋初值
    B、变量可以随时使用,不需声明,也不需说明其类型。
    C、逗号运算符的优先级最低
    D、Pci和pci是两个不同的标识符
    E、表达式1/4+1/4+1/4的结果为0
    F、变量必须先声明或定义,后使用。

3、设下列变量均已正确声明为int,下列选项中不正确的赋值表达式是( )。
    A、a=b+c=1
    B、++k
    C、n1 = n2 = n3
    D、k = I == 1
    E、a=1,b=2,c=3,k=4

4、下列不合法的变量名为
    A、st%udent
    B、stu@xjtu
    C、astudent
    D、s_student
    E、wang13
    F、_cppclass

5、下列哪个是C++语言的合法的字符常量__________。
    A、'\17'
    B、'\017'
    C、"c"
    D、'\xAH'
    E、'\092'
    F、'\771'
    G、'\01711'

6、当a=6,b=5时,语句cout<<(a<=7 && a+b>8)<<endl;的执行结果为____。
    A、1
    B、0
    C、true
    D、false

7、设i=6,k=0下列各式中,运算结果为k=7的表达式是( )。
    A、k=++i+k;
    B、k=i+++k ;
    C、k=k+i++;
    D、k=++k+(++i);
    E、k=k+++i;

8、下列不合法的变量名为( )。
    A、-student
    B、%student
    C、12name
    D、student
    E、_student
    F、student_name
    G、student0

9、表达式19/4*sqrt(4.0)/5的值为( )。
    A、1.6
    B、3.8
    C、1.9
    D、1.2
    E、1.0

10、int x=3,y=4,z=5;则值为0的表达式是___________。
    A、x>y
    B、x<=y+1
    C、x!=y+z>y-z
    D、y%z>=y-z

11、若x为整型变量,j为实型变量,当执行x=(int)j;语句后,j也变为整型变量。

12、若a为int型变量,已定义,则(a=5+3)也是表达式,其值为8。

13、如果定义int e=8;double f=6.4,g=8.9;,则表达式 f+int(e/3*int(f+g)/2)%4 的值为( )。

14、若int i=65535,j=0x000a,k;k=i&j,则k的十进制值为( )。

第2周编程作业

1、温度转换

2、计算数学函数式的值

3、数据的简单统计

4、找零钱

5、小写转大写

第3周 运算的流程控制

3.1程序流程控制随堂测验

1、结构化程序由三种基本结构组成,不包括
    A、顺序结构
    B、选择结构
    C、控制结构
    D、循环结构

3.2单路和双路分支随堂测验

1、下列语句中错误的是
    A、if (a>b) cout<<a;
    B、if (&&) a=m;
    C、if (1) a=m; else a=n;
    D、if (a>0); else a=n;

2、与分支语句有关的关键词有if、else、switch、case和break

3.3多路分支随堂测验

1、若有定义“float w;int a,b;”,则合法的switch语句是
    A、switch(w) { case 1.0: cout<<"1.0"; case 2.0: cout<<"2.0"; }
    B、switch(a) { case 1 cout<<"1"; case 2 cout<<"2"; }
    C、switch(b) { case 1: cout<<"1"; default: cout<<"default"; case 1+2: cout<<"3"; }
    D、switch(a+b) { case 3: cout<<"3"; case 1+2: cout<<"1+2"; default: cout<<"default"; }

3.4已知次数循环随堂测验

1、for循环语句是先执行循环体内的语句序列,后判断条件表达式。

3.5已知条件循环随堂测验

1、下列程序段循环了几次 int x=-9; while(++x){}
    A、8
    B、9
    C、10
    D、无限

第3周单元测试

1、假定所有变量均已正确说明,下列程序段运行后,x的值是( )。 a=b=c=0; x=35; if (!a) x--; else if (b); if (c) x=3; else x=4;
    A、4
    B、34
    C、35
    D、3

2、C++语言中while循环和do...while循环的主要区别是( )。
    A、do...while的循环体至少无条件执行一次
    B、while的循环控制条件比do...while的循环控制条件严格
    C、do...while允许从外部转到循环体内
    D、do...while的循环体不能是复合语句

3、while后面的“条件表达式”一定要用一对______括起来。
    A、圆括号()
    B、方括号[ ]
    C、花括号{ }
    D、双引号 " "

4、执行语句序列: int x=3; do { x-=2; cout<<x; }while(!(--x)); 输出结果是_________。
    A、1 -2
    B、1
    C、3 0
    D、死循环

5、在C++语言中,所谓选择结构,就是按照( )有选择地执行程序中的语句。
    A、给定条件
    B、给定数值
    C、给定符号
    D、给定程序

6、1.在C++语言中.表示一条语句结束的标号是__________。
    A、;
    B、}
    C、#
    D、//

7、下列程序段的输出是( )。 int a=2, b=-1, c=2; if(a<b) if(b<c) c=0; else c+=1; cout<<c<<endl;
    A、2
    B、0
    C、1
    D、3

8、当在程序中执行到continue语句时,将结束所在循环语句中循环体的一次执行。

9、当在程序中执行到break语句时,将结束本层循环类语句或switch语句的执行。

10、用{}括起来的语句叫复合语句。

第3周编程作业

1、3-1打印3个相邻字母

2、3-2歌唱大赛选手成绩计算

3、3-3猴子吃桃

4、3-4搬砖问题

5、3-5美分找钱

第4周 复杂信息的表达与处理

4.1一维数组随堂测验

1、引用一个数组元素时,数组元素的下标表达式的类型
    A、必须是整型常量
    B、必须是整型表达式
    C、必须是整型常量或整型表达式
    D、可以是任何类型的表达式

2、定义一维数组时,可以不写数组长度

3、一维数组的下标从0开始

4.2二维数组随堂测验

1、若有说明:int a[3][4]=;则下面正确的叙述是
    A、只有元素a[0][0]可得到初值0
    B、此说明语句不正确
    C、数组a中各元素都可得到初值,但其值不一定为0
    D、数组a中每个元素均可得到初值0

2、下面关于二维数组的说法错误的是
    A、同行的数据在内存中连续存放。
    B、对全部数组元素都赋初值时,可以不指定数组第二维的长度。
    C、不能将二维数组作为一个整体输入与输出。
    D、将二维数组看作是一维数组时,该一维数组的每个元素本身又是一个一维数组。

4.3结构体随堂测验

1、在说明一个结构体变量时,系统分配给它的存储空间是
    A、该结构体中第一个成员所需的存储空间
    B、该结构体中最后一个成员所需的存储空间
    C、该结构体中占用最大空间的成员所需的存储空间
    D、该结构体中所有成员所需存储空间的总和

4.4枚举(实例三色球组合)随堂测验

1、一个整数能直接赋值给枚举变量

第4周单元测试

1、已知枚举类型定义语句为: enum Token { NAME, NUMBER, PLUS=5, MINUS, PRINT=10 }; 则下列叙述中错误的是
    A、枚举常量NAME的值为1
    B、枚举常量MINUS的值为6
    C、枚举常量NUMBER的值为1
    D、枚举常量PRINT的值为10

2、以下各组选项中,均能正确定义二维实型数组a的选项是
    A、float a[3][4]; float a[][4]={{0},}; float a[][4]={{0},,};
    B、float a[3][4]; float a[][4]; float a[3][]={{1},};
    C、float a(3,4); float a[3][4]; float a[][]={{0},};
    D、float a[3][4]; float a[3][]; float a[][4];

3、以下选项中不能正确赋值的是
    A、char s1[10];s1=”cbest”;
    B、char s2[]={‘c’, ’b’, ’e’, ’s’, ’t’};
    C、char s3[10] =”cbest”;
    D、char s4[7] ={"cbestn"};

4、已知char a[][20]={"beijing","shanghai","changsha"};语句cout<<a[3]; 得到的输出是:
    A、输出结果不确定
    B、j
    C、changsha
    D、数组定义有错

5、设有数组定义:char array[]="China";,则数组array所占的空间为
    A、6个字节
    B、4个字节
    C、5个字节
    D、7个字节

6、设有以下说明语句 struct STUDENT { int n; char ch[8]; }PER; 下列正确的是:
    A、PER是结构体变量名
    B、PER是结构体类型名
    C、struct STUDENT是结构体类型
    D、struct是结构体类型名

7、对于结构体变量,下列说法正确的是 struct st1{int a, b; float x, y;}s1, s2; struct st2{int a, b; float x, y;}s3, s4;
    A、只有s1和s2、s3和s4之间可以相互赋值
    B、s1、s2、s3、s4可以相互赋值
    C、s1、s2、s3、s4之间均不可以相互赋值
    D、结构体变量不可以整体赋值

8、以下对枚举类型名的定义中正确的是
    A、enum a {one=9,two=-1,three};
    B、enum a={“one”, “two”, “three”};
    C、enum a {“one”, “two”, “three”};
    D、enum a={one, two, three};

9、在int a[][3]={{1},{3,2},{4,5,6},}中,a[2][2]的值是
    A、6
    B、3
    C、2
    D、4

10、对二维数组的正确定义是
    A、int a[][3]={1,2,3,4,5,6};
    B、int a[2,3]={1,2,3,4,5,6};
    C、int a[2][]={1,2,3,4,5,6};
    D、int a[][]={1,2,3,4,5,6};

第4周编程作业

1、恺撒加密

2、矩阵转置

3、按点击率显示歌曲

4、星期转换

5、插入加密

第5周 问题的模块化求解

5.1 模块化程序设计随堂测验

1、关于C++函数的说法哪个是不正确的?
    A、使用函数可以降低程序的复杂程度
    B、一个C++程序可以不使用函数
    C、函数必须有函数名
    D、函数可以使得软件的开发和维护更容易

5.2 函数的定义随堂测验

1、关于函数的定义不正确的是哪项?
    A、函数可以没有返回值
    B、函数可以没有参数
    C、函数体写在一对大括号中,当函数体只有一行语句时,大括号可以省略
    D、函数的形参是局部变量,只能在函数中使用

5.3 函数的声明随堂测验

1、关于用户自定义函数的使用,下列哪个说法是正确的?
    A、函数在调用前必须先定义
    B、函数在使用前必须先声明
    C、函数在使用前必须先定义或声明
    D、有了函数的定义,可以不声明

5.4 函数的调用格式随堂测验

1、关于函数的调用,下列哪项说法是正确的?
    A、函数的形参和实参是通过变量的名字结合的,所以顺序不要求一致,但个数必须一致。
    B、函数的实参可以是常量、变量或表达式。
    C、如果函数的实参是变量,前面也必须写出类型名。
    D、函数的调用只能出现在表达式中,不能单独加分号构成语句。

5.5 参数的传递方式随堂测验

1、关于函数调用的值传递,下列哪项是正确的?
    A、值传递的传输方向是单向的,从主调函数到被调函数。
    B、值传递的传输方向是单向的,从被调函数到主调函数。
    C、值传递的数据传输方向是双向的。
    D、值传递时,实参和形参使用相同的存储空间。

5.5 参数的传递方式随堂测验

1、关于函数调用的引用传递,下列哪项是正确的?
    A、引用传递的传输方向是单向的,从主调函数到被调函数。
    B、引用传递的传输方向是单向的,从被调函数到主调函数。
    C、引用传递的实参和形参使用相同的变量名。
    D、引用传递时,实参和形参使用相同的存储空间。

5.6 为形参指定默认值随堂测验

1、C++中关于有默认值的形参,正确的描述是( )。
    A、设置默认形参值时,可以在函数的声明和定义中同时设置默认值。
    B、只能在函数定义时设置默认形参值。
    C、应该从右边的形参开始依次向左设置默认形参值。
    D、所有参数必须全部设置默认值。

5.7 数组名作为函数的参数随堂测验

1、主函数中有声明语句 int a[100], n=5; 下列哪组实参和形参的对应是正确的?
    A、f(a,n); int f(int a, int n);
    B、f(a[100], n); int f(int a[], int n);
    C、f(a, n); int f(int a[], int n);
    D、f(a[100], n); int f(int a[100], int n);

5.8 结构体变量作为函数的参数随堂测验

1、有结构体STU如下: struct STU{ char name[20]; char number[10]; int score; }; stu是STU类型的变量。 下列实参和形参的结合哪项是正确的?
    A、f( stu ); void f(STU zhang[] ) ;
    B、f(stu.name); void f(STU zhang);
    C、f(stu.name); void f(STU zhang.name);
    D、f(stu.name); void f(char name[20]);

第5周单元测试

1、假定函数定义为: void fx(int n, double x ){ … } 那么,正确的调用语句是_____。
    A、fx(x, n); //x,n是已定义的int,double变量
    B、fx(int y, double m);
    C、k=fx(10,19.8);
    D、void fx(n, x);

2、在一个C++程序中,main函数_____。
    A、和普通函数一样,可以在代码主体的任何位置出现。
    B、必须出现在固定位置
    C、必须出现在所有普通函数之后
    D、必须出现在所有普通函数之前

3、定义函数的目的是
    A、提高程序的可读性
    B、提高程序的执行效率
    C、减少程序的篇幅
    D、减少程序文件占用的内存空间

4、以下哪个函数声明是正确的?
    A、void play(int a, int b);
    B、void play(a:Integer, b:Integer);
    C、void play(int a, b) ;
    D、Sub play(a as integer, b as integer);

5、函数的返回值类型是______决定的。
    A、由定义函数时所指定的返回值类型
    B、由调用该函数的主调函数类型
    C、由return语句中的表达式类型
    D、在调用函数时临时

6、假定函数定义为: void fun(char ch, float x ){ … } 那么,正确的调用语句是
    A、fun(32, 32);
    B、fun("abc", 3.0);
    C、fun('65', 2.8);
    D、t=fun('D', 16.5);

7、程序中的其他函数可以调用主函数。

8、一个程序有且只有一个主函数。

9、函数声明就是函数定义。

10、C++程序总是从最先定义的函数开始执行。

第5周编程作业

1、编写字符串反转函数mystrrev

2、编写一组求数组中最大最小元素的函数

3、编写函数判断一个整数是否为素数

4、编写函数去除字符串中包含的非字母字符(不包括空格),并将小写字母转换成大写字母

5、编写函数计算一个英文句子中的单词个数

第6周 问题的模块化求解(2)——特殊函数

6.1 递归函数随堂测验

1、递归函数是( )。
    A、使用了递推公式的函数
    B、直接或间接调用自己的函数
    C、使用了无限循环的函数
    D、具有返回值的函数

6.2 内联函数随堂测验

1、内联函数是( )。
    A、在函数中定义的函数
    B、定义或声明时,在返回值类型前使用了const关键字的函数了
    C、定义或声明时,在返回值类型前使用了static关键字的函数了
    D、定义或声明时,在返回值类型前使用了inline关键字的函数

6.3 函数重载随堂测验

1、有函数的声明 void f(int a[],int n); 下列哪个函数的声明不能构成该函数的重载。
    A、int f(int a[],int n);
    B、void f(int a[]);
    C、int f(int a, int b, int c);
    D、void f(char a[],int n);

2、关于函数的重载,下列哪个说法是正确的?
    A、函数名相同的函数构成重载
    B、参数个数不同的函数构成重载
    C、参数类型不同的函数构成重载
    D、函数名相同,而参数的个数或参数的类型不同的函数构成重载

6.4 变量的作用域和存储类型随堂测验

1、下列程序的执行结果是( )。 int f(int &a) { int b=0;static int c=3; b++; c++; return (a+b+c); } int main() { int a=2,i; for(i=0;i<3;i++) cout<<f(a); }
    A、.7 7 7
    B、7 8 9
    C、7 9 11
    D、7 10 13

第6周单元测试

1、假定已经定义了一个有返回值的函数,那么该函数调用不可以做的是________
    A、作为一个函数的形参
    B、作为一个函数的实参
    C、出现在表达式中
    D、作为独立的语句存在

2、引入内联函数的目的是为了______。
    A、提高函数调用的效率
    B、节省内存空间
    C、方便变量的使用
    D、扩大局部变量的使用范围

3、下列说法中不正确的是:
    A、函数必须有返回值
    B、函数值是由return语句返回给主调函数的
    C、return语句后的括号可要可不要
    D、如果函数有返回值,那么它的类型是确定的

4、在一个程序中,如果函数fA调用了函数 fB,函数fB又调用了函数fA,那么______
    A、称为函数的间接递归调用
    B、称为函数的直接递归调用
    C、称为函数的循环调用
    D、这样调用方式是不允许的

5、由inline修饰的是______。
    A、内联函数
    B、外联函数
    C、宏定义
    D、调用函数定义

6、当给函数的参数设置默认值时,正确的说法是____________。
    A、若给某一参数设置了默认值,那么在参数表中其后所有的参数都必须也设置默认值
    B、若给某一参数设置了默认值,那么在参数表中其前所有的参数都必须也设置默认值
    C、任何情况下,函数调用时均可不列出已设置默认值的参数
    D、给函数的参数设置默认值可以提高程序运行效率

7、关于C++函数的叙述中,正确的是
    A、函数在被调用之前必须先声明或定义
    B、每个函数至少要有一个参数
    C、函数不能自己调用自己
    D、每个函数都必须返回一个值

8、一个问题用递归方法解决比不用递归运行效率更高。

9、参数个数类型都相同,但返回值类型不同的两个函数可以同名重载。

10、当变量超出它的作用域时就一定会被销毁。

11、实参的数据类型必须与形参的相同。

12、当需要从函数中返回多个值时可以使用全局变量。

第6周编程作业

1、递归猴子摘桃

2、编写内联函数求矩形的面积和周长

3、编写重载函数显示字符串

4、排序函数重载

5、编写递归函数来使字符串逆序

第7周 按址操作(1)——指针、变量和函数

7.1 什么是指针随堂测验

1、C++中的指针指的是( )。
    A、存储单元的地址
    B、存在存储单元中数据
    C、名字叫pointer的变量
    D、变量名的别称

7.2指针和变量的关系随堂测验

1、若有声明语句 int a, *p=&a; 则 *p=2015; 的意义是( )。
    A、给指针变量p赋值
    B、设置指针变量p的地址
    C、相当于p=p*2015;
    D、相当于a=2015;

2、下列哪句是指针变量的声明?
    A、char s;
    B、char *p;
    C、*p=&s;
    D、*p='a';

7.3指针作为函数的参数随堂测验

1、.当函数的形参是指向整型数的指针变量(如int *p)时,函数的实参应是( )。
    A、整型变量
    B、整型常量
    C、整型表达式
    D、整型变量的地址

7.4返回指针的函数随堂测验

1、一个函数,如果返回值是指针 ,那么这个指针应指向( )。
    A、主调函数中的变量
    B、函数中的变量
    C、函数中的指针
    D、函数的形参

7.5指向函数的指针随堂测验

1、下列哪项声明的是指向函数的指针?
    A、char *p;
    B、char a,char &p=a;
    C、char (*p)(char *,char *);
    D、char *p[10];

第7周单元测试

1、地址是指______。
    A、变量所在的内存单元编号
    B、变量的值
    C、变量的类型
    D、变量本身

2、引用______。
    A、是某内存区域的别名
    B、需要分配内存区域
    C、可以为空
    D、指向一块内存区域

3、指针______。
    A、的内容为指向内存的地址
    B、不能为空
    C、是一块内存区域的别名
    D、的内容不可变

4、指针做形参的函数不能做到的是____________
    A、将被调用函数内部的变量地址传递到调用函数。
    B、将被调用函数内部变量的值通过参数传递到调用函数。
    C、在被调用函数内部修改调用函数中变量的值。
    D、将调用函数中变量的值通过参数传递到被调用函数。

5、如果定义int a, *p=&a; 则表达式______为逻辑假值。
    A、*p= =&a
    B、p= =&*p
    C、a= =*&a
    D、p= =&a

6、若有以下定义,则赋值正确的是______。 int a, b, *p; float c, *q;
    A、p=NULL;
    B、p=&c;
    C、q=p;
    D、q=&a;

7、如果x是整型变量,则合法的形式是______。
    A、*&x
    B、&(x+5)
    C、*x
    D、&*x

8、如果一个指针加1,实际上是加上了指针所指向的数据类型大小。

9、可以交换两个数的函数定义为: void swap(int *p,int *q) { int *temp; *temp=*p; *p=*q; *q=*temp; }

10、指针可以通过赋给不同的常数值来指向内存空间的任意位置。

11、指针不仅可以指向变量,还可以指向函数,通过合适类型的函数指针可以调用类型匹配的函数。

12、指向整型数的指针可以强制类型转换为指向char类型的指针。

第7周编程作业

1、编写函数重置两个变量的值

2、编写函数对数组中的元素求和

3、数组清零

4、使用函数指针切换加密方法

5、编写求函数区间平均值的通用函数

第8周 按址操作(2)——指针与数组、字符串、结构体,动态数组

8.1数组与指针、指针的算术运算随堂测验

1、设数组a的首地址是0x28fe74,则下列程序的执行结果是( )。 int a[10]={10,20,30}; int *p; p=a; p++; cout<<p<<endl;
    A、11
    B、20
    C、0x28fe75
    D、0x28fe78

8.2指针的关系运算、通过指针访问数组元素随堂测验

1、int a[10]={1,2,3,4,5,6,7,8}; int *p=a; 和a[i]起的作用不同的表达式是()。
    A、p[i]
    B、p+i
    C、*(p+i)
    D、*(a+i)

8.3二维数组与指针随堂测验

1、设有二维数组int a[3][4];和指针 int *p=&a[0][0]; 下列哪项是与a[i][j]的作用相同的表示法
    A、*(p+i+j)
    B、*(p+i*4+j)
    C、p[i][j]
    D、*(a+i*3+j)

8.4指向一维数组指针(行指针)、字符串指针随堂测验

1、设有二维数组int A[3][4];下列哪项声明的指针可以赋值A。
    A、int *p;
    B、int (*p)();
    C、int (*p)[4];
    D、int *p[4];

2、声明指向字符串首元素的指针char *p="warrant"; 下列哪个语句的执行是不正确的。(多选)
    A、cout<<p;
    B、cout<<p[2];
    C、cin>>p;
    D、cin>>[2];

8.5 字符指针应用、指针数组随堂测验

1、有下列声明语句 char s[6][10]={"China's", "first", "football", "textbooks", "for","schools"}; char *p[5],(*q)[10],*r; 下列哪个赋值语句是不正确的?
    A、p=s ;
    B、q=s ;
    C、r=&s[0][0] ;
    D、p[0]=s[0];

8.6结构体与指针随堂测验

1、有下列表示按钮的结构体和声明语句 struct BUTTON{ int x,y; int width,height; char name[20]; }; struct BUTTON top[10],*p=top; 下列哪个输入“按钮”名称的语句是正确的?(多选题)
    A、cin>>p.name;
    B、cin>>p->name;
    C、cin>>p[0]->name;
    D、cin>>p[0].name;

8.7动态数组随堂测验

1、有声明语句 int *p,*q[10],(*r)[10]; int n=10; 下列哪个申请大小为n的一维动态数组的语句是正确的?
    A、p=new int(n);
    B、p=new int[n];
    C、q=new int[n];
    D、r=new int[n][10];

第8周单元测试

1、两个指针______。
    A、可在一定条件下进行相等或不等的比较运算
    B、可在一定条件下相加
    C、任何时候都不能相减
    D、如果同时指向一个变量,则此后就不能再指向其他变量了

2、如果定义int x[10]={1,2,3}, *m=x; 则结果不能表示地址的表达式是______。
    A、*m
    B、m
    C、x
    D、&x[0]

3、设p和q是指向同一个int类型数组不同元素的指针变量且q>p,k也为int类型的变量,则可以执行的语句是______。
    A、k=*p*(*q)
    B、k=*(p+q)
    C、k=*(q-p)
    D、p+q

4、如果定义int a[10], *p=a ; 则不与a[5]等价的是______。
    A、p+5
    B、*(a+5)
    C、*(p+5)
    D、p[5]

5、如果定义int aa[10]={1,2,3,4,5,6,7,8,9,10},*p=aa;则数值为6的表达式是______。
    A、*p+=5
    B、*p+6
    C、*(p+6)
    D、p+5

6、使用new向系统动态申请内存时,正确的是______
    A、有可能获得空指针
    B、总是能获得一个指向所需内存空间首地址的指针
    C、分配的内存空间不用时系统会自动收回
    D、分配的内存空间只能使用一个特定的指针访问

7、语句 int ** cc=new int* [10]; 动态申请了有10个元素的数组,数组中每个元素都是一个int *指针。

8、应用中,C++中的字符指针在大多数情况下都指的是一个字符串(字符串数组首地址)。

9、结构体指针变量所占的内存空间比整型指针变量的要大。

10、动态数组的优点在于存取性能比静态数组要高。

第8周编程作业

1、输出数字的英文名称

2、去除字符串首尾多余的空格

3、遍历二维数组

4、动态申请大数组

5、矩阵对角线元素之和

6、(本题只记3分)十进制点分IP转换为32位二进制IP

第9周 数据的抽象与封装——类与对象(1)

9.1 类的概念随堂测验

1、一个实体与另一个实体的不同,就在于( )。
    A、某个特征不同
    B、某个功能不同
    C、特征或功能有所不同
    D、外形不同

2、类是对象的集合。

9.2 类的定义随堂测验

1、在一个类的定义格式中,( )。
    A、必须同时包含私有、公有、保护成员的定义
    B、只能将数据成员定义为私有,函数成员定义为公有
    C、数据成员不能定义为保护或公有成员
    D、在public、private、protected关键字后面紧跟一个冒号

2、在类的定义格式中,函数成员只能在类外定义。

3、在类的定义格式中,在类体末右 } 后面可以没有分号。

9.3对象的声明与使用随堂测验

1、在类外,通过.运算符可以访问一个对象中的( )。
    A、保护成员
    B、私有成员
    C、公有成员
    D、保护和私有的函数成员

9.4 类的私有、公有与保护成员随堂测验

1、数据成员只能定义为私有,函数成员只能定义为公有。

9.5 日期类的设计随堂测验

1、日期类中的SetSystemDate()函数只能定义为私有成员。

9.6 结构化和面向对象的程序设计思想随堂测验

1、面向对象程序设计方法4个特征为:抽象、封装、继承和多态。

第9周单元测试

1、下列有关类的说法,不正确的是
    A、在类中,如果不作特别说明,所有的成员均为公有成员
    B、类是一种用户自定义的数据类型
    C、只有类中的成员函数或类的友元函数才能存取类中的私有数据
    D、在类中,如果不作特别说明,所有的数据成员均为私有数据成员

2、有如下两个类定义: class AA{}; class BB { AA v1,*v2; BB v3; BB *v4; }; 其中有一个成员变量的定义是错误的,这个变量是
    A、v3
    B、v1
    C、v2
    D、v4

3、有关类和结构体的关系,错误的是______。
    A、类一般只有函数方法,通常不会包含数据成员
    B、结构体的成员默认都是公开的
    C、类的成员默认都是私有的
    D、结构体一般只有数据成员,通常不会加入函数方法

4、按照常理,下列哪个概念可以理解为对象而不是类?
    A、西安交通大学
    B、985工程大学
    C、国际知名学府
    D、诺贝尔奖获得者

5、设有以下类和对象的定义: class A { public: int k; }; A x1,x2,*p1,*p2; 则下面针对成员变量k的引用,正确的是
    A、x2.k=2;
    B、x1->k=1;
    C、p1.k=3;
    D、(*p2)->k=4;

6、下面有关类与对象的说法中,错误的是________。
    A、一个类只能有一个对象
    B、对象是类的实例
    C、一个对象不能同时属于多个没有关系的独立的类
    D、类和对象的关系与数据类型和变量的关系相似

7、设计类时应该尽量设计完备,将所有能想到的属性方法全部写入声明。

8、以下类的声明是完全正确的。 class mobile { private: char mynumber[11]; //机主的电话号码 public: void init(char number[11]=”0000000000”) //隐式定义的内联函数 void dial(); //拨打电话的函数声明 void answer(char othernumber[11]); //接听电话的函数声明 void hangup(); //挂断电话的函数声明 }

9、语法上,一个类不能将自身的所有成员定义为私有的。

10、类的成员函数都必须设成公有的,以便外界调用。

第9周编程作业

1、设计Person类

2、设计Dog类

3、设计并测试Trapezium类

4、设计MyTime类

5、设计Weekday类

第10周 数据的抽象和封装——类(2)——构造函数、析构函数和指向对象的指针

10.1 构造函数的定义随堂测验

1、下面关于构造函数的叙述,正确的是( )。
    A、构造函数不能重载
    B、构造函数只能定义为无参函数
    C、构造函数只能定义为有参函数
    D、构造函数能重载

2、构造函数名必须与类名相同。

10.2 重载构造函数随堂测验

1、构造函数由系统自动调用运行。

10.3 析构函数的定义随堂测验

1、下面关于析构函数的叙述,正确的是( )。
    A、析构函数必须是无参函数
    B、析构函数可以是有参函数
    C、析构函数能够返回函数值
    D、析构函数不是系统自动调用

2、析构函数名与类名相同。

10.7 对象与指针随堂测验

1、p是指向PERSON类对象的指针,则通过p访问公有成员函数show()的方法是。
    A、p.show();
    B、p->show();
    C、(*p).show();
    D、(*p)->show();

10.8 this指针随堂测验

1、this指针需要事先声明,才能使用。

第10周单元测试

1、以下有关析构函数的叙述,不正确的是___________.
    A、析构函数和构造函数一样可以有形参
    B、在一个类只能定义一个析构函数
    C、析构函数不允许用返回值
    D、析构函数名前必须冠有符号“~”
    E、析构函数可以重载
    F、析构函数不能重载

2、建立一个类对象时,系统必然会调用
    A、构造函数
    B、析构函数
    C、静态函数
    D、内联函数

3、阅读如下程序,给出输出结果: #include<iostream> #include<string> using namespace std; class XCF { int a; public: XCF (int aa=0) : a(aa) { cout<<"1"; } XCF(XCF & x) { a=x.a; cout<<"2"; } ~XCF( ) { cout<<a; } int Geta( ) { return a; } }; void main( ) { XCF d1(5),d2(d1); XCF *pd=new XCF(8); cout<<pd->Geta( ); delete pd; } 运行时的输出结果是
    A、1218855
    B、1215588
    C、12185
    D、128512

4、下列关于构造函数说法不正确的是__________
    A、构造函数必须有返回值
    B、构造函数必须与类同名
    C、在构造函数中可以对类中的成员进行初始化
    D、构造函数可以省略不写

5、下列哪些情况下不会调用对象的析构函数?
    A、将对象指针强行赋值为NULL时
    B、函数中定义的动态对象变量当函数执行结束时
    C、用delete删除对象指针时
    D、当对象变量脱离其作用域时

6、构造函数的函数名要求是___________.
    A、可以任意取名,只要符合标识符规范
    B、和类同名
    C、必须是__init___
    D、必须是construct
    E、其中的字母必须是大写

7、构造函数的返回类型是_______。
    A、不写返回类型
    B、void
    C、int
    D、int *
    E、char
    F、char *

8、使用对象指针来动态生成对象时不会调用构造函数。

9、一个类的构造函数和析构函数都可以有多种形式。

10、构造函数可以是内联函数。

11、如果没有显式定义构造函数(包括拷贝构造函数),C++编译器就隐式定义一个默认的。

12、this指针存储的值是当前被调用的成员函数所在的对象的地址。

第10周编程作业

1、定义一个带重载构造函数的日期类

2、动态生成Person类的对象

3、设计带构造函数的Dog类

4、设计并测试一个椭圆类

5、设计一个多功能的MyTime类

第11周 取其精华 发挥优势——继承

11.1具有行走听说功能的“人”类的设计随堂测验

1、视频中person类的析构函数体里的delete语句可以省略。

11.4基类与派生类随堂测验

1、下列叙述正确的是( )。
    A、基类是一类特殊定义的类
    B、派生类只能从一个基类继承
    C、派生类中必须定义构造函数
    D、派生类的成员函数可以和基类的成员函数同名

2、在派生类的类体中,只能定义新增的数据成员和新增的函数成员。

11.5继承方式随堂测验

1、可以在类外用a.x的形式访问派生类对象a的基类成员x,其中x是( )。
    A、私有继承的公用成员
    B、公用继承的私有成员
    C、公用继承的保护成员
    D、公用继承的公用成员

2、在派生类的定义中,无论采用三种继承方式任何一种,都无法直接访问基类中的私有成员。

11.6派生类的构造函数与析构函数随堂测验

1、有基类如下: class BASE{ private: int x,y; public: BASE(int x,int y){this->x=x;this->y=y;} void set(int x1,int y1) { x=x1; y=y1; } ... }; 设DERIV为BASE的公有派生类,则下列哪个DERIV的构造函数对基类成员的初始化是正确的?
    A、DERIV( int x, int y ) { BASE(x , y) ; ... }
    B、DERIV( int x1, int y1 ){ x=x1; y=y1; ... }
    C、DERIV( int x, int y ) : BASE( x , y ) { ... }
    D、DERIV( int x, int y ) {set(x1,y1); ...}

2、派生类的析构函数的执行过程恰好与构造函数的执行过程相反。

11.7从点到圆再到圆柱体的派生类设计随堂测验

1、本例中,在点类、圆类、圆柱体类中增加析构函数定义,如果析构函数体里为空(无任何语句),则不影响程序的运行结果。

2、本视频中的例题中,如果将点类、圆类、圆柱体类中的私有成员都改为保护成员,则不影响程序正确运行。

11.8从U盘到MP3的派生类设计随堂测验

1、本视频的例题中,将MP3类公有继承U盘类改为保护继承,程序运行结果相同。

第11周单元测试

1、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为
    A、public
    B、protected
    C、private
    D、static

2、由于以下哪个原因,在编程实践中很少使用私有继承:
    A、经过私有继承之后,基类的成员再也无法在以后的派生类中直接发挥作用
    B、私有继承不能很好的保护基类成员的安全性
    C、私有继承的性能低于公有继承
    D、私有继承对基类的编写方法有更为严格的要求

3、下列程序的输出结果是: include <iostream> using namespace std; class Base { public: void print ( ) { cout << 'B'; } }; class Derived : public Base { public: void print ( ) { cout << 'D'; } }; int main( ) { Derived * pd = new Derived( ); Base * pb = pd; pb->print( ); pd->print( ); delete pd; return 0; }
    A、BD
    B、BB
    C、DD
    D、DB

4、当派生类从基类公有继承时,以下哪种说法是错误的
    A、可以用基类对象为派生类对象赋值
    B、可以用派生类对象为基类对象赋值
    C、可以把指向派生类对象的指针赋给基类对象的指针
    D、可以把派生类对象的地址赋给基类对象的指针

5、下列对派生类的描述中,错误的是
    A、派生类中继承的基类成员的访问权限到派生类保持不变。
    B、一个派生类可以作为另一个派生类的基类。
    C、派生类至少有一个基类。
    D、派生类成员除了它自己的成员外,还包含它的基类成员。

6、在面向对象程序设计中,实现信息隐蔽是靠
    A、对象的封装
    B、对象的继承
    C、对象的分类
    D、对象的间接访问

7、在公有继承的情况下,基类中的private成员在派生类中仍是private的。

8、在派生类中,可以直接继承基类的构造函数和析构函数。

9、派生类中成员函数的名称不能和基类的成员函数名称重复。

10、当在多条继承路径上有一个公共的基类时,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例,此时可以用虚基类来解决这个问题。

第11周编程作业

1、公有继承中派生类Student对基类Person成员的访问

2、一个基类Person的多个派生类

3、派生类Student的构造函数和析构函数

4、从Point类继承的Circle类

5、从Student类和Teacher类多重派生Graduate类

第12周 统一接口 不同实现——多态性

12.1多态的概念随堂测验

1、编译时多态主要指运算符重载与函数重载,而运行时多态主要指虚函数。

12.2派生类对象替换基类对象随堂测验

1、有基类SHAPE,派生类CIRCLE,声明如下变量: SHAPE shape1,*p1; CIRCLE circle1,*q1; 下列哪些项是“派生类对象替换基类对象”。
    A、p1=&circle1;
    B、q1=&shape1;
    C、shape1=circle1;
    D、circle1=shape1;

12.3虚函数随堂测验

1、下列叙述正确的是( )。
    A、虚函数只能定义成无参函数
    B、虚函数不能有返回值
    C、能定义虚构造函数
    D、A、B、C都不对

2、关于虚函数的描述中,正确的是( )。
    A、虚函数是一个静态成员函数
    B、虚函数是一个非成员函数
    C、说明虚函数的virtual,即可以出现在类内函数说明时,也可以出现在类外函数定义时。
    D、派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

12.4抽象类随堂测验

1、以下( )成员函数表示纯虚函数。
    A、virtual int vf(int);
    B、void vf(int)=0;
    C、virtual void vf()=0;
    D、virtual void vf(int) { };

2、下列描述中,( )是抽象类的特征。
    A、说明有虚函数
    B、说明有纯虚函数
    C、有其他类的对象作数据成员
    D、有指针作数据成员

12.5运算符的重载随堂测验

1、设有复数类COMPLEX,在复数类中重载乘法运算符。 下列哪项是运算符重载的正确的声明格式?
    A、COMPLEX *(COMPLEX c1, COMPLEX c2);
    B、COMPLEX * (COMPLEX c2);
    C、COMPLEX operator * (COMPLEX c1, COMPLEX c2);
    D、COMPLEX operator * (COMPLEX c2);

第12周单元测试

1、关于基类中的虚函数与一般成员函数,正确的是( )。
    A、虚函数与一般成员函数在基类中没什么区别
    B、虚函数不能被调用,而一般成员函数可以
    C、虚函数不能定义函数体,而一般成员函数可以
    D、虚函数只能定义一个,而一般成员函数可以多个

2、虚函数不得声明为______函数。
    A、其他三项均正确
    B、构造
    C、友元
    D、静态

3、如果一个类至少有一个__________,那么就称该类为抽象类。
    A、纯虚函数
    B、友元函数
    C、成员函数
    D、构造函数

4、只有使用虚函数机制,才能_____________
    A、使用基类指针调用派生类的成员函数
    B、使用派生类指针调用基类的成员函数
    C、使基类指针指向派生类对象
    D、使派生类指针指向基类对象

5、基类中的虚函数如果在派生类中未重新定义,则会出现( )的情况。
    A、使用派生类的对象调用的仍然是基类的这个函数
    B、无法使用派生类的对象调用这个函数
    C、无法使用基类的对象调用这个函数
    D、不允许定义派生类的对象

6、基类中允许定义____个虚函数?
    A、任意多个
    B、一个
    C、两个
    D、和成员变量的个数有关

7、基类中的运算符重载函数不能定义为纯虚函数。

8、函数重载也是C++中多态性的一个体现。

9、基类中的纯虚函数在派生类中必须重新定义。

10、抽象基类可以通过指针和new运算符实例化对象。

第12周编程作业

1、虚函数实现多态性

2、抽象宠物类的实现

3、重载加法运算符的复数运算

4、重载矩阵加法运算

5、纯虚函数与基类指针数组的应用

第13周 标准输入输出与文件操作

13.1流的概念和流类的结构随堂测验

1、下列说法错误的是( )。
    A、进入输入流的数据是有序的数据集合。
    B、cin 是istream类的对象。
    C、cin是输入流类。
    D、cin是输入函数。

13.2标准输入流随堂测验

1、有一段程序如下: char str[200]; cin.get( str, 100, '*' ); 利用上面代码从标准输入流获取一段文本,下列说法错误的是:( )
    A、获取的文本放到str数组中
    B、遇到‘*’时,停止读入文本,同时‘*’被从流中取出丢掉
    C、系统在str数组的最后一个字符后面自动添加’\0’
    D、空格字符可以正常读取

2、为了舍去流中的一些字符, 应该使用的输入流的成员函数是( )。
    A、ignore
    B、peek
    C、get
    D、seekg

3、用语句 cin.getline(ch,70,'*'); 从标准输入流获取一段字符,遇到‘*’时,停止读入文本,同时‘*’被从流中取出丢掉。( )

13.3标准输出流随堂测验

1、设置输出格式时,利用setf成员函数不能设置的显示属性是( )
    A、输出数据在本域宽范围内左对齐
    B、输出数据在本域宽范围内右对齐
    C、设置整数的按8进制显示
    D、设置实数显示的小数点位数

2、使用流操纵符(流格式控制符)控制输出格式,是将控制符号作为数据的一部分插入到输出流中。

13.4文件操作基础随堂测验

1、只用于读文件的流类是 。
    A、ifstream
    B、ofstream
    C、iostream
    D、fstream

2、不论ifstream或ofstream对象,打开文件都可以使用构造函数或 函数,这两种方式所使用的函数的参数可以完全一致。

13.5文本文件读写随堂测验

1、假定in为ifstream类的对象,用in打开一个文件后,下面的代码用于读取文件内容: while(in) //读取文件内容 { char c=in.get(); if(in) cout<<c; } 请问上面程序段划线的语句中使用if判别语句的原因是:
    A、确保循环能终止
    B、是输入流操作中的语法要求
    C、确保不重复输出最后读取的数据
    D、if判别是多余的,可以不用

2、在标准输入流中常使用符号 >>、get函数、getline函数输入数据,这些方式也可用于从文件流向应用程序输入数据,且使用方式不变。( )

3、在标准输出流中常使用符号 <<、put函数向屏幕输出数据,这些方式也可用于向文件流写入数据,且使用方式不变。( )

13.6二进制文件的读写随堂测验

1、不论何种方式打开一个二进制文件,在文件打开方式(即第二个参数)中必须有( ) 。
    A、ios::in
    B、ios::out
    C、ios::binary
    D、ios::app

2、二进制文件使用的读写成员函数是( )。
    A、get
    B、put
    C、read
    D、write

第13周单元测试

1、C++文件操作需要包含的头文件是
    A、fstream
    B、iostream
    C、iofstream
    D、ifstream
    E、ofstream
    F、filestream

2、写文件创建的对象类型是
    A、ofstream
    B、ostream
    C、ifstream
    D、istream
    E、iostream
    F、filestream
    G、FILE

3、打开一个文件后,若不关闭并且再次打开同一文件程序会出错。

4、>>符号和<<符号都是被重载的函数。

5、写入信息到一个文件中,若不关闭文件,程序结束后文件内容不完整。

6、getline函数的形式有多种。

7、下面程序代码打开了一个二进制文件。 …… ifstream file3; …… file3.open("abc.bmp", );

8、下列程序段的作用是将字符串写入二进制文件。 char ss[100]; …… //打开文件 ofstream file1("file.dat",ios::binary); if(!file1) { cout<<“文件打开失败!”; return 1; } //写文件 file1. ((char*)ss, sizeof(ss)); file1.close(); //关闭文件

9、下列程序段的作用是逐行读取文本文件。 char line[200]; …… //打开文件 ifstream ff("file.dat"); if(!ff ) { cout<<“文件打开失败!”; return 1; } //读文件 while(ff) { ff. (line, 190 ); // 读取一行文字 …… } ff.close(); //关闭文件

10、下列程序段打开一个文件。 …… ofstream out("file.txt"); if( ) { cout<<"打开文件失败!"<<endl; return 1; }

11、下面程序代码中in为istream流类对象,并打开了一个文件, …… while(in) { char c; ; // 读取一个字符 …… } ……

12、下面程序代码中fin为istream流类对象,并打开了一个文件, …… while(fin) { fin>>ch>>math>>eng>>phy; { // 若读取文件数据正常 float avg=1.0*(math+eng+phy)/3; } }

第14周 模板和标准模板库简介

第14周单元测试

1、下列关于容器的end()成员函数的功能,下列哪个是正确的?
    A、返回指向最后一个元素下一个位置的迭代器
    B、返回最后一个元素的引用
    C、返回指向最后一个元素的迭代器
    D、判断是否为容器末尾

2、下列哪个定义迭代器it的方法是正确的
    A、vector <int>:: iterator it;
    B、iterator it;
    C、vector:: iterator it;
    D、vector <int> v1; v1:: iterator it;

3、设v是一个vector容器,则v.size()的功能是( )。
    A、返回向量v的实际大小(元素个数)。
    B、返回向量v能存储的元素个数 。
    C、返回向量v的最大元素
    D、返回向量V的最小元素

4、下列哪项可作为函数模板和类模板的共同特点?
    A、数据类型作参数
    B、函数作参数
    C、数据作参数
    D、函数类型做参数

5、下列哪个容器不属于序列(顺序)容器?
    A、map
    B、set
    C、vector
    D、list
    E、deque

6、下列哪个容器的存储结构是双向链表结构?
    A、list
    B、vector
    C、deque
    D、stack
    E、set

7、定义vector容器v1: vector <int> v1(10); 的意义是( )。
    A、创建v1有10个元素
    B、创建v1有一个元素10
    C、创建v1在下标是10的位置插入元素0
    D、创建v1存放十进制整数

8、查找算法find( first, last, val)的参数中,first和last表示的范围用下列哪个区间表示比较合适?
    A、[first, last)
    B、( first, last)
    C、(first, last]
    D、[first, last]

9、list容器不支持下标运算。

10、所有的标准库容器迭代器都支持 >, < 比较运算。

11、使用容器,必须包含容器对应的头文件。

12、所有的标准库容器迭代器都支持++和--运算。

13、STL中的算法一般可以应用到多种容器上。

期末考试

计算机程序设计(C++)课程考试——客观题

1、派生类可以直接访问其基类的( )。
    A、公有和保护成员
    B、公有成员
    C、保护成员
    D、私有成员
    E、成员函数

2、有关析构函数的说法不正确的是 ( )。
    A、析构函数和构造函数一样可以有形参
    B、析构函数有且仅有一个
    C、析构函数的功能是做对象被注销前应做的工作
    D、析构函数无任何函数类型
    E、析构函数没有参数

3、下列哪个关于加号“+”运算符重载的成员函数声明格式是正确的。
    A、POINT operator+(POINT b);
    B、POINT +(POINT b);
    C、POINT operator+();
    D、POINT +(int);
    E、POINT operator +(POINT a, POINT b);

4、有类的定义 class A{ private: int x,y; public: A( int x0 , int y0=0){x=x0; y=y0;} }; 则主函数中下列哪个关于类的对象的声明语句是正确的?
    A、A c(10);
    B、A a ;
    C、A b();
    D、A d[10];

5、用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。
    A、int *p=new int[10];
    B、int *p=new int a[10];
    C、int *p=new int (10);
    D、int *q=new int[5]={1,2,3,4,5};

6、假定有类的定义和对象声明 class BOOK{ public: char title[40]; float price; }; BOOK book; 则下列正确的语句为( )。,
    A、BOOK &x=book;
    B、BOOK &x= &book;
    C、BOOK &x=new BOOK;
    D、BOOK &x=BOOK;

7、假定POINT为一个类,x为该类公有的数据成员,a为该类的一个对象,则访问a对象中数据成员x的格式为( )。
    A、a.x
    B、a(x)
    C、a[x]
    D、a->x

8、在C++程序中,进行文件操作需要包含哪个头文?
    A、fstream
    B、iostream
    C、ifstream
    D、ofstream
    E、iomanip

9、假定变量a定义为“int a=7;”,则下面定义p的语句哪个是正确的?
    A、int *p=&a;
    B、int p=a;
    C、int p=&a;
    D、int &p=*a;
    E、int *p=a;

10、假定一条定义语句为“int a[10], x, *p=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。
    A、x=*p+3;
    B、x=*a+3;
    C、x=a+3;
    D、x=p+3;
    E、x=p[3];
    F、x=*(a+3);
    G、x=a[3];
    H、x=*(p+3);

11、( )是给变量取一个别名,它引入了变量的同义词。
    A、引用
    B、指针
    C、枚举
    D、结构体
    E、数组

12、类成员的访问权限中,( )成员只能被本类的成员函数和其友元函数访问,但不能被派生类直接访问。
    A、private
    B、const
    C、public
    D、protected
    E、virtual

13、关于构造函数,下列说法不正确的是( )。
    A、构造函数有且只有一个
    B、构造函数不能有参数
    C、构造函数的名字和类名相同
    D、构造函数在创建对象时自动执行
    E、构造函数无任何函数返回类型
    F、构造函数的函数体可以什么都不写

14、对于类中定义的成员,其隐含访问权限为( )。
    A、private
    B、public
    C、protected
    D、static
    E、const
    F、virtual

15、有声明语句int a=3;int *p=&a;,则*p的值是( )。
    A、变量a的值
    B、变量a的地址值
    C、变量p的值
    D、变量p的地址值

16、阅读下面程序,该程序的运行结果是( ) 。 class BASE{ char c; public: BASE(char n):c(n){} ~BASE(){cout<<c;} }; class DERIVED : public BASE{ char c; public: DERIVED(char n):BASE(n+1),c(n){} ~DERIVED(){ cout<<c;} }; int main() { DERIVED a('X'); return 0; }
    A、XY
    B、YX
    C、X
    D、Y
    E、XX
    F、YY

17、已知STU类,则当程序执行到语句 STU stu[10]; 时,会调用( )次构造函数。
    A、10
    B、0
    C、1
    D、9
    E、11

18、下列关于构造函数的说法不正确的是( )。
    A、构造函数必须有返回值
    B、构造函数必须与类同名
    C、构造函数可以省略不写
    D、在构造函数中可以对类中的成员进行初始化

19、C++中常用的cin是一个( )。
    A、对象
    B、类
    C、命令
    D、函数
    E、运算符

20、假定BOX为一个类,volume()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员volume ()的格式为( )。
    A、x.volume ()
    B、x. volume
    C、x-> volume
    D、x-> volume ()

21、在C++程序中,常用于从文件中输入数据的流类是。
    A、ifstream
    B、ofstream
    C、iostream
    D、fstream
    E、iomanip

22、假定BOX为一个类,则执行“BOX x;”语句时将( )。
    A、自动调用无参构造函数
    B、自动调用带参构造函数
    C、自动调用拷贝构造函数
    D、不调用构造函数
    E、自动调用第一个构造函数

23、设px是指向一个动态申请的类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的( )。
    A、析构函数
    B、无参构造函数
    C、带参构造函数
    D、拷贝构造函数
    E、默认构造函数

24、关于运算符重载,下列说法正确的是( )。
    A、通过重载,可以使运算符应用于自定义的数据类型。
    B、运算符重载可以重新定义运算符的功能
    C、所有的运算符都可以重载
    D、通过重载,可以创造原来没有的运算符
    E、通过重载,可以改变运算符的优先级

25、下列关于运算符重载的描述中,错误的是( )。
    A、运算符重载不可以改变运算符的功能
    B、运算符重载不可以改变操作数的个数
    C、运算符重载不可以改变结合方向
    D、运算符重载不可以改变运算优先级
    E、运算符重载不能增加新运算符

26、判断字符型变量 c 是否为大写字母,应使用表达式( )。
    A、c>='A' && c<='Z'
    B、c >= 'A' || c<='Z'
    C、c < 'A' && c > 'Z'
    D、c < 'A' || c > 'Z'

27、下列哪个关于类的纯虚函数的声明是正确的?
    A、virtual double f()=0;
    B、double f();
    C、double f()=0;
    D、virtual double f(){return 0;}
    E、void f(void);

28、假定BOX为一个类,int fun()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。
    A、int BOX:: fun ()
    B、int BOX: fun ()
    C、BOX:: fun ()
    D、BOX::int fun ()

29、POINT是一个类,则声明语句POINT *p[3];调用构造函数的次数是( )。
    A、0
    B、1
    C、2
    D、3
    E、4

30、假定一个类的成员均为公有成员,构造函数为“A(int aa=1, int bb=0) {a=aa; b=bb;}”,则执行“A x(4);”语句后,x.a和x.b的值分别为( )。
    A、4和0
    B、1和0
    C、1和4
    D、4和1
    E、0和4
    F、0和1

31、变量str的定义为“ char *str="Hello world!"; ”,要使变量p指向str所指向的同一个字符串,则应选取( )。
    A、char *p=str;
    B、char *p; p=str;
    C、char *p=&str;
    D、char *p; p=*str;
    E、char *p; p=&str;
    F、char p=str;

32、下面有关重载函数的说法中正确的是( )。
    A、重载函数必须有不同的形参列表
    B、重载函数必须具有不同的返回值类型;
    C、重载函数形参个数必须不同;
    D、重载函数名可以不同;

33、有如下的对类“CSample”的定义,其中( )在语法上是错误的。  class CSample {        int a=51; //    CSample(); //  public:    CSample(int val); //    ~ CSample(); // }; ......
    A、int a=51;
    B、CSample();
    C、CSample(int val);
    D、~ CSample();

34、与cout<<endl;不等价的是( )。
    A、cout<<'\0';
    B、cout<<0x0A;
    C、cout<<'\n';
    D、cout<<'\xA';
    E、cout<<'\12';

35、在公有继承的情况下,基类非私有成员在派生类中的访问权限是( )。
    A、保持不变
    B、类外均可访问
    C、仅类内能访问
    D、不能直接访问

36、应在下列程序划线处填入的正确语句是( )。 class Base { public: void fun(){ cout<<"Base class--fun\n"; } }; class Derived:public Base { public: void fun() { _____________ //显式调用基类的函数fun() cout<<"Derived class--fun\n"; } };
    A、Base::fun();
    B、this->fun();
    C、Base.fun();
    D、Base->fun();

37、在C++中,函数原型(函数的声明)不能标识 ( ) 。
    A、函数的功能
    B、函数的返回类型
    C、函数参数的个数
    D、函数参数类型
    E、函数名

38、在类外可以用a.x的形式访问派生类对象a的基类成员x,其中x应是( )。
    A、公有继承的公有成员
    B、私有继承的公有成员
    C、公有继承的私有成员
    D、公有继承的保护成员
    E、保护继承的公有成员

39、面向对象方法的多态性是指( )。
    A、针对一消息,不同的对象可以以适合自身的方式加以响应
    B、一个类可以派生出多个特殊类
    C、一个对象在不同的运行环境中可以有不同的变体
    D、一个对象可以是由多个其他对象组合而成的

40、假定已有定义“int b[10]; int *pb;”,则不正确的赋值语句为( )。
    A、pb=b[5];
    B、*pb=b;
    C、pb=*b;
    D、*bp=&b[5];
    E、pb=b;
    F、pb=&b[5];
    G、pb=new int;
    H、pb=new int(5);
    I、pb=new int[5];

41、基类的私有成员被派生类公有继承后,在派生类中可以直接访问。

42、构造函数可以重载,析构函数不能重载。

43、派生类中的数据成员和成员函数可以和基类中的数据成员和成员函数同名。

44、关于运算符的重载,不仅可以重载已有的运算符,还可以重载自己新设计的运算符。

45、类的私有成员不能被继承。

46、类的构造函数不能被继承。

47、类的析构函数不能被继承。

48、.类的析构函数可以有多个。

49、基类的保护成员被派生类公有继承后,在派生类中可以直接访问。

50、如果一个类不定义构造函数,则用它声明对象时,就不会执行构造函数。

51、1、 阅读以下程序,在空白处填写适当的语句(全英文,无空格): class point{ public: void show() {cout<<“point”<<endl;} }; int main() { point p1; point *p; p=&p1; ______________//通过指针p访问show函数 return 0; }

52、如果一个类中至少有一个纯虚函数,则该类称为________________。

53、下面是一个类A的定义,请在空白处填写合适的内容(使用英文字符,如果必要,标识符间只留一个空格,不必要的不留空格)。 class A { int x; public: A(int x0); }; ________________//类A的构造函数的定义 的 函数头 { x=x0; } //类A的构造函数的函数体

54、若有: int i; int &j=i; i=10; j=i+1; 则i的值为__________(直接写数字)

55、下列程序中横线处正确的语句应该是 。 #include<iostream.h> using namespace std; class Base { public; void fun() {cout< < “Base : : fun” < < endl;} }; class Derived : public Base { public: void fun( ) { _________ ; //显式调用基类的函数fun(),如非必要,标识符间不留空格 cout < < “Derived : : fun” < < endl; } };

56、下列程序的执行结果是( )。 class A { public: A(){cout<<"a";} ~A(){cout<<"b";} }; class B:public A { public: B(){cout<<"c";} ~B(){cout<<"d";} }; int main() { B b; return 0; }

57、有如下程序片段: class MIT{ int value; public: MIT(int n=0){ value=n; } }; MIT *ta , tb; 其中声明的MIT类的对象是( ) 。

58、下列程序的功能是: 统计子字符串substr在字符串str中出现的次数。 例如:若字符串为"aaas lkaaas",子字符串为"as",则应输出2。 若字符串为"asasasa",子字符串为"asa",则应输出3。 写出在程序【______】处应填写的表达式。 int fun (char *substr, char *str) { int i,j,k,num=0; for(i=0; str[i]; i++) { for(j=i,k=0;substr[k]==str[j];k++,j++) { if(substr[k+1]=='\0') { num++; /慕课题库

*****SPACE慕课题库

*****/ ______________; } } } return num; }

59、阅读以下程序,在空白处填写适当的语句(全英文,无空格): class point{ public: void show() {cout<<“point”<<endl;} }; int main() { point p1; _______________//通过对象p1访问show函数 return 0; }

60、下列程序的功能是将数组的最大元素与第一个元素交换,最小元素与最后一个元素交换。阅读程序,在【__________】出填写合适的表达式(用英文符号,如非必要,标识符间不留空格)。 void max_min(int array[],int N) //N表示数组的元素个数 { int *max,*min,k,l; int *p,*arr_end; /慕课题库

*****SPACE慕课题库

*****/ arr_end=【_________】; max=min=array; for(p=array+1;p<arr_end;p++) { if(*p>*max) max=p; else if(*p<*min) min=p; } k=*max; l=*min; *max=*array; *min=*(array+N-1); *array=k; *(array+N-1)=l; }

计算机程序设计(C++)课程考试——编程题

1、成绩统计

2、时间类

3、找数字