计算机程序设计基础(C++)(景红版)课后全部习题及参考答案

更新时间:2023-12-25 18:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

习 题 第1章

1. 什么是软件?

2. 简述软件的开发过程。 3. 什么是程序设计? 4. 简述程序设计过程。 5. 数据结构的含义是什么? 6. 简述算法的表示方法。 7. 什么是结构化算法?

8. 简述结构化程序设计思想。

第2章 C++的基础知识

一、填空题

1.???C++语言中的标识符只能由 、 和 三种字符组成,且打头字符不能是 。

2.???C++程序的目标文件的扩展名是 。

3.? 在C++程序中,使用输入输出流需要包含的头文件是 。 4.? 当执行cin时,从键盘上一次输入多个数据时,每个数据后必须输入一个 ,然后才可以接着输入下一个数据。

5.? 转义字符序列中的首字符是 字符。

6.? 空字符串在内存中的存储空间是 个字节 。

7. 以/?开始,?/结束,在/?和?/之间的部分即为 。

8. 赋值表达式y=x++的含义是 ,y=++x的含义是 。

9.??cout输出转义字符 是使光标移到屏幕上的下一行。

10.??C++语言的基本数据类型有 、 、 、 、 五种。 二、判断题

( )1.“C”是字符常量。

( )2. 在命名标识符时,大小写字母是不加区分的。

( )3.??C++程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。 ( )4.??C++程序必须有return语句。

( )5. 执行语句const int x=10;后,可以重新对x赋值。

( )6. 语句a_char = ?\\n? 表示将小写字母n赋值给字符变量a_char。

( )7.??short,int都是C++语言的关键字。

( )8.??C++编译系统对源程序编译时,可以检查出注释语句中的语法错误。

( )9. 将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存变量中去,

而是将该字符相应的ASCII代码放到存储单元中。 ( )10. 语句int answer=3+2?9/(10-6);执行完毕后,变量answer的值是7.5。 三、单项选择题

1.??C++源程序文件的扩展名为( )。

(A).CPP (B).OBJ (C).C (D).EXE 2. 下列变量名中,( )是合法的。 (A)double (B)A+a (C)CHINA (D)5s 3. 下列符号能用作C++标识符的是( )

(A)xyz/2 (B) 2xsale (C)x-sale (D) x_sale 4. 下列各运算符中,( )只能用于整型数据的运算。 (A)+

(B)/

(C)?

(D)%

5.( )不是C++的基本数据类型。 (A)字符类型 (B)数组类型

(C)整数类型 (D)布尔类型

6. 下列运算符中,优先级最高的是( )。 (A)% (B) ! (C)>= 7. 字符串常量“ME”的字符个数是( )。 (A)4 (B)3 8. 在C++语言中,080是( )。 (A)八进制数

(B)十进制数

(C)2

(C)十六进制数

(D) /

(D)1 (D)非法数

9. 整型变量i定义后赋初值的结果是( )。

int i=2.8?6; (A)12 (B)16 (C)17 10.如有int m=31;则表达式(m++*1/2)的值是( )。

(D)18

(A)0 (B)15 (C)15.5 (D)16 11.每个C++程序都必须有且仅有一个( )。

(A)预处理命令 (B)主函数 (C)函数 (D)语句 12.在C++语言中,自定义的标志符( )。

(A)能使用关键字并且不区分大小写 (B)不能使用关键字并且不区分大小写 (C)能使用关键字并且区分大小写 (D)不能使用关键字并且区分大小写 13.下列C++标点符号中表示一条语句结束的是( )。 (A)# (B)// (C)} (D); 14.下列C++标点符号中表示一条预处理命令开始的是( )。 (A)# (B)// (C)} (D); 15. 定义如下变量:int i=2;int j=3;则i/j的结果为( )。

(A)0.7 (B)0.66667 (C)0.666666… (D)0 16. 已知int a=2,a+=a-=a*a的值是( )。 (A)-4 (B)-2 (C)0

(D)4

17. 下列关于C++关键字的说法中正确的是( )。

(A)关键字是用户为程序中各种需要命名的“元素”所起的名字。 (B)关键字是对程序中的数据进行操作的一类单词。

(C)关键字是在程序中起分割内容和界定范围作用的一类单词。 (D)关键字是C++中预先定义并实现一定功能的一类单词。

18.语句n1=2,n2=++n1,n1=n2++,执行后变量n1、n2的值分别为( )

(A)3,4 (B)3,3 (C)2,3 (D)2,4 19.字符型数据在内存中的存储形式是( )。

(A)补码 (B)ASCII码 (C) 反码 (D)原码 20.下列程序段执行后输出结果为( )char a=' a '; cout<<\

(A) a=A (B) a=33 四、阅读程序,写出运行结果 1.??#include void main( )

{ cout<<\ cout<<\}

2.??#include void main( )

{ const int R=10;

const double PI=3.14159; double a,b; a=2?R?PI;

b=R?R?PI;

cout<<\ }

五、程序改错

/*求三个整数的平均数 #include ; int mian( )

{int a,b,c,sum,avg;

cout<<\请输入三个整数:/n\ cin>>a>>b>>c>>endl; sum=a+b+c

avg=sum/3;

cout>>?平均数是:?>>avg; }

C) a=65 (D)a=A-32

( 第3章 基本程序设计

一、判断题

( )⒈ if 语句结构中必须有else语句。

( )⒉ 表达式7>=3+4 || 6<4 && 2<5 的求值结果为假。 ( )⒊ 算术运算符的优先级高于比较运算符。

( )⒋ 表达式4>6||10>2*6&&2!=! 5求值结果为真。

( )⒌ 语句for(i=0,x=0;i<90;i++) if(i) x++;执行完后,x的值是89。 ( )⒍ 逻辑表达式10

( )⒏ 表达式!(5<8)||2<6的值是1。

( )⒐ 表达式a+bz&&x*y<100||x*y>0中运算符优先级由高到低的排列顺序是:

*、<和>、&&、||。

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

( )12. x,y,z为int类型的时候,下列语句执行之后,x的值为10,y的值为20,z的值为10。

x=10;y=20;z=30;

if(x>y) x=y;y=z;z=x;

( )13. break和continue语句的作用都是终止本层循环的执行。

( )14. 判断变量x的数值是否在3到5之间可以用关系表达式3

#include #include “iomanip” using namespace std; void main()

{ if(a>b)

cout< else

cout<< setw(4)<}

( )16. 不管是当型循环还是直到型循环,其循环体都可能在某种条件下一次也不执行。 ( )17. 为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与最近的那个if配对。

( )18. 要运行一个C++程序需要经过编辑、编译、链接和运行四个阶段。其中编译阶

段就是对源程序进行语法与语义分析,查找和排除程序错误,通常能够找出程序中的语法错误和逻辑错误。

( )19. switch语句结构中必须有default语句。

( )20. break语句只能结束包含该语句的一层循环结构。

二、单项选择题

1. for(i=0, x=0; !x&&i<=3;i++)循环的次数为( )。

(A) 4 (B) 5 (C) 1 (D)是无限循环 2. 若有如下程序段:

{ int a=2,b=-1,c=2; if(a

执行后输出到屏幕的结果是______。

(A ) 2 (B) 1 (C) 3 (D) 0 3、若有如下程序段:

int i=10; switch(i)

{ case 9:i++; case 10:i++;

case 11:i++; default:i++;

}

执行后变量i的正确结果是( )。

(A) 11 (B) 12 (C) 13 (D) 14 4. 以下描述中正确的说法是( )。 (A) break语句与continue 语句完全一样,可以相互代替 (B) 用break 语句可以提前终止整个循环

(C) 用continue 语句可以提前终止整个循环

(D) 用break语句与continue 语句都不能提前终止执行循环 5. 以下for循环的执行次数是( )。 for(x=0,y=0;(y=123)&&(x<2);x++)

(A) 执行1次 (B) 执行2次 (C) 执行3次 (D) 是无限循环 6. 以下描述正确的是( )。 (A) goto语句只能用于退出多层循环 (B) switch语句中不能出现break语句 (C) 只能用continue语句来终止本次循环

(D) 在循环中break语句不能独立出现

7. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )组成配对关系。 (A) 缩排位置相同的if (B) 在其之前未配对的if (C) 在其之前未配对的最近的if (D) 同一行上的if 8. break语句的作用是( )。

(A) 立即跳出包含该break语句的最小的各种循环语句和switch语句 (B) 立即跳出包含该break语句的最小的各种循环语句 (C) 立即跳出包含该break语句的switch语句

(D) 立即跳出包含该break语句的各种循环语句和switch语句

9. 下面程序段执行完后,x的值是( )。

x=0; for(i=0;i<90;i++) if (i) x++; (A) 0 (B) 30 (C) 89 10. continue语句的作用是( )。

(A) 结束包含该continue语句的最小的各种循环语句

(B) 结束包含该continue语句的各种循环语句 (C) 结束本次循环,直接进行循环条件的判断 (D) 循环执行完后,结束循环 11. 下列程序段循环( )次。

int x=-10;

while (++x) { } (A) 9 (B) 10

(C) 11

(C) <

(D) 无限

(D) +

(D) 90

12. 在下列运算符中,优先级最低的是( )。 (A) || (B)!=

13. 下列描述正确的是( )。

(A) 表示m>n为false或mn&&m

(D) 如果至少有一个操作数为true,则包含||运算符的表达式为true

14. 如果switch语句选择表达式中是整型变量,下面哪一项case子句是合法的( )。 (A) case “2”: 15. 有如下程序段:

……

for(int i = 1;i<4;i++)

{ if(i%2 == 0) continue;

cout<

执行以上程序段的输出结果是( )。

(A) 1, (B) 1,3,4, (C) 1,3, (D) 2,4, 16. 下列运算符中优先级最高的是( )。

(A)! (B) % (C) -= (D) && 17. 用逻辑表达式表示“大于10而小于20的数”,正确的是( )。 (A) 1010||x<20 (C) x>10&x<20 (D)!(x<=10||x>=20) 18. 如果switch语句中的选择表达式是字符型变量code,下面哪一项case子句是合法的( )。 (A) case “3”; (B) case ?3?; (C) case 3; (D) case =3 19. 设int a=10,b=11,c=12;(a+b)

(A)if 语句结构中必须有else语句 (B)switch语句结构中必须有default语句 (C)C++程序必须有return语句 (D)C++中使用流来执行标准的输入输出操作 21. 下列do-while循环的循环次数是( )。 已知:int i=5;

(B) case 2:

(C) case 2;

(D) case ==2

do{ cout<

i--;

}while (i!=0);

(A) 0 (B) 2 (C) 5 (D) 无限次 22. 若m是一个值为10的int型变量,n是一个bool型变量,则表达式!m||n>0的值( )。 (A) 为true (B) 为false (C) 与n的值相反 (D) 与n的值相同

第4章 数组的应用

一、判断题

( )1. 在对全部数组元素赋初值时,不可以不指定一维数组的长度。 ( )2. 在对全部二维数组元素赋初值时,可以不指定二维数组的行数。 ( )3. 在C++程序中,有定义:int a[10];数组a的最小下标是1。 ( )4. 在C++程序中,有定义:int a[10];数组a的最大下标是10。 ( )5. 可以用同一个数组表示以一组数值型数据和字符型数据。

( )6. 有声明: int a[3][2]={1,2,3,4,5,6};那么数组元素a[2][1]的初始值是6。

( )7. 有声明: char ch[10]={?a?,?b?,?c?,?d?,?e?};那么赋给数组ch的是字符串“abcde”。 ( )8. 在对全部二维数组元素赋初值时,必须要指定二维数组的列数。

( )9. 字符串\在内存中存放时,占用12个字节的空间。

( )10.定义一个一维字符数组有50个元素,用该一维字符数组表示一个字符串数据最

多允许有50个字符。

( )11. C++中各种数据类型的变量在定义后会被自动初始化为0值。

( )12. 定义数组时可以用变量来定义数组的大小,但不能用表达式。

( )13. 定义一个有50个元素的一维字符数组,用该数组表示一个字符串数据最多允许有50个字符。

( )14. 定义一个数组后该数组的最小下标取值是0。

( )15. 静态数组被定义时,数组的所有元素自动获取初始值0。 ( )16. 数组是C++的基本数据类型。 ( )17. 数组不能用来存放字符串。

( )18. 同一数组的所有数组元素在内存中是连续存放的。

( )19. 在C++中数组是具有一定顺序关系的若干相同类型变量的集合体。 ( )20. 在给全部数组元素赋初值时,可以不指定二维数组中的常量表达式,

例如:int a[][]={1,2,3,4,5,6}; 二、单项选择题

1. 若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10};则下列( 使用。 (A) a[10] (B) a[a[3]-5] (C) a[a[9]] 2. 对语句:int a[3][4]={0}; 描述正确的是( ) 。 (A) 只有元素 a[0][0] 可得到初值 0

)是对数组元素的正确

(D) a[a[4]+4]

(B) 数组 a 中每个元素均可得到初值 0

(C) 此说明语句不正确

(D) 数组 a 中各元素都可得到初值,但其值不一定为 0 3. 若有以下定义,则数组元素a[2][2]的值是( )。 int a[][3]={{1,2},{3,2,4},{4,5,6},{1,2,3}};

(A) 4 (B) 5 (C) 2 (D) 6 4. 在下面的一维数组定义中,( )有语法错误。 (A) int a[ ]={1,2,3}; (B) int a[ ]; (C) int a[ ]={0}; (D) int a[5]; 5. 在下面的一维数组的定义中,不正确的是( )。 (A) int x[10][10]; (B) int x[ ][10]={{1,3},5,7}; (C) int x[ ][ ]; (D) int x[10][10]={0};

6. 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。 (A) N+1 (B) N (C) (N+1)/2 (D) N/2 7. 将两个字符串连接起来组成一个字符串时,用( )函数。

(A) strcat (B) strlen (C) strcpy (D) strcmp 8. 希尔排序法属于哪一种类型的排序法( )。 (A) 交换类排序法 (B) 插入类排序法 (C) 选择类排序法 (D) 建堆排序法 9. 若定义了一个4行3列的数组,则第8个元素是( )。 (A) a[1][3] (B) a[2][3] (C) a[3][1] (D) a[2][1] 10.判断两个字符串(分别用a、b表示)是否相等的操作为( )。 (A) a= =b (B) if(a= =b) (C) if(strcmp(a,b)) (D) if(strcpy(a,b)) 11. 定义一个一维数组,正确的语句是( )。

(A)int a(10); (B)int n=10;int a[n]; (C)int n;cin>>n;int a[n]; (D)const int n=10;int a[n]; 12. 以下那种说法错误?( )。 (A)数组中的元素在某些方面彼此相关; (B)数组中的所有元素具有相同的下标; (C)数组中的所有元素具有相同的数据类型; (D)数组中的所有元素具有相同的名字; 13. 语句 int a[]={0,1,2}执行后,数组的元素个数是( )。

(A)2 (B)3 (C)4 (D)不知道 14. 下面数组定义错误的是( )。 (A)#define n 5 (B)const int n=5; char a[n]={“good”}; char a[n]= {“good”}; (C)int n=5; (D)const int n=5;

char a[n]={“good”}; char a[n+2]={“good”}; 15. 执行下列语句:int c[4]={0,1,2,3}; for(int i=0; i<4;i++) c[i]=c[i]+i; 则c[3]的值是( )。

(A)0 (B)4 (C)6 (D)8 16. 下列程序执行后 d[5]结果是( )。 int d[10]; int I; for (i=0;i<=9;i++)

d[i]=i;

for( i=0;i<=9;i++) d[i]=d[9-i];

(A)0 (B)4 (C)5 (D)6

17. 数组 int area[4]={1,2,3,4}, 执行程序

for (int i=1;i<=4;i++)

area[i-1]=1;

那么 area[4]的值是( )。

(A)4 (B)3 (C)1 (D)错误

18. 二维数组在内存中的存放顺序是( )。

(A)按行存放 (B)按列存放 (C)由用户自己定义 (D)由编译器决定 19. 下面初始化不正确的是( )。

(A)int a[2][3]={1,2,3,4,5,6}; (B)int a[][2]={7,8,9};

(C)double a[][3]={1,2,3,4,5,6,7}; (D)double a[3][2]={{1.5,2.0},{3.5},{5,6,7}}; 20. 若有定义:int a[3][4]={0}; 则以下描述中正确的是( )。 (A)只有a[0][0]元素得到初值 (B)不正确语句

(C)各元素均得到初值,但不一定为0 (D)各元素均得到初值且为0 21. 下列对字符数组进行初始化的语句正确的是( )。 (A)char a[]= “abcd”; (B)char a[][]= “abcd”; (C)char a[4]= “abcd”; (D)char a[2][2]= {“ab”, “cd”};

22. 二维字符数组[10][10]能够存储( )个字符串,每个字符串的长度至多为( )。 (A)10,10 (B)10,9 (C)9,10 (D)9,9 三、阅读程序题 1.#include void main( ) { int a[4],i,j,k;

for(i=0;i<4;i++) a[i]=1;

k=3;

for(i=0;i

for(j=0;j

cout<

当执行以上程序时,输出结果是:

2.#include

#include using namespace std; void main()

{ int s[3][3],i,j,k;

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

for(j=0;j<3;j++)

s[i][j]=i-j;

for(i=0;i<2;i++) for(j=i+1;j<3;j++)

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} for(i=0;i<3;i++)

{ for(j=0;j<3;j++)

cout<

}

}

当执行以上程序时,输出结果是:

3. #include using namespace std; void main( ) { int a[4],i,j,k;

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

a[i]=0; k=2;

for(i=0;i

a[j]=a[i]+3;

cout<

4. #include using namespace std; void main( ) { int a[2][3],j,k;

for(k=0;k<3;k++)

for(j=0;j<2;j++)

a[j][k]=(j+1)*(k+1);

for(j=0;j<2;j++)

{ for(k=0;k<3;k++) cout<<\cout<

5. #include #include using namespace std; void main( ) { int s[4][4],i,j,k; for(i=0;i<4;i++) for(j=0;j<4;j++) s[i][j]=i-j;

( )3. 类的对象是该类的某一特定的实体,即类类型的变量。 ( ( ( (

)4. protected声明的成员,可由该类的成员函数以及由该类派生的类的成员函数使用。 )5. 析构函数不能重载。

)6. 程序只可以通过类的公有成员访问该类的私有成员。 )7. 对象是类的模板,类是对象的实例化。

( )8. 类是一种既包含数据又包含函数的数据类型。 ( )9. 类的析构函数的作用是类的初始化。 ( )10. 基类是由派生类派生而来的。 ( )11. 类的构造函数的作用是删除对象。

( )12. 公有继承时基类中的private成员在派生类中仍是private的。 ( )13. 私有继承时基类中的public成员在派生类中是private的。 ( )14. 构造函数不能重载。

( )15. 一个类中可以有多个同名的成员函数。

( )16. 一个派生类不能作为基类被别的派生类继承。

( )17. 析构函数和构造函数都是成员函数。

( )18 在声明一个对象时,C++编译器隐含地调用其构造函数。当对象退出其说明的作用域时,析构函数被隐含地调用。

( )19. 析构函数和构造函数都可以带参数 。

( )20 当对象退出其说明的作用域时,析构函数被隐含地调用。 二、单项选择题

1. 下面描述中,不正确的是( )。

(A) 在关键字private后面声明的成员,只允许本类中的函数访问,而类外的任何函数都

不能访问 (B) 在类的外部只能访问类的公有成员

(C) 面向对象程序设计方法具有四个基本特征:抽象、封装、继承、多态性 (D) 函数的重载体现了面向对象程序设计的继承性

2. 类Time的构造函数名是( )。

(A) class (B) public (C) private (D) Time 3. 类创建的对象称为( )。

(A) 属性 (B) 类的实例 (C) 基类 (D) 派生类 4. 下面描述中,不正确的是( )。

(A) 构造函数定义了创建对象的方法,提供了初始化对象的一种简便手段。 (B) 析构函数完成对象被删除前的一些清理工作。

(C) 如果程序中未声明构造函数,则系统自动产生出一个缺省形式的构造函数。

(D) 析构函数允许重载,但析构函数不得返回任何值,即使关键字void也不允许有。 5. 以下哪项创建了名为dog的Animal对象( )。

(A) Animal “dog”; (B) Animal dog; (C) dog “Animal”; (D) dog Animal;

6. 以下哪项表明displayBreed()函数是Animal类的成员函数( )。 (A) nimal:: displayBreed() (B) Animal. displayBreed() (C) displayBreed()::Animal (D) displayBreed()&&Animal 7. 类Animal的构造函数名是( )。

(A) Animal (B) AnimalConstructor (C) ConstAnimal (D) 以上任何一项都可作为构造函数名

8. 为了使类中的某个成员不能被类的对象通过成员选择运算符访问,则不能把该成员的访问权限定义为( )。 (A) public (B) protected (C) private (D) static 9. 类具有哪四个基本特征( )。 (A) 抽象 隐藏 继承 多态 (B) 抽象 封装 继承 多态 (C) 抽象 隐藏 继承 封装 (D) 抽象 封装 封装 多态 10. 类的构造函数的作用是( )。 (A) 一般成员函数 象

11. 由类中创建的对象称为( )。 (A) 属性 (B) 类的实例 12. 类的析构函数的作用是( )。 象

(C) 基类

(D) 派生类

(D) 删除对

(B) 类的初始化 (C) 对象的初始化

(D) 删除对

(A) 一般成员函数 (B) 类的初始化 (C) 对象的初始化

第8章 文件的应用

一、判断题

( )1. 一般通过析构函数负责打开文件,构造函数负责关闭文件。

( )2. 打开文件就是把流与文件相连接,关闭文件就是切断这一连接。

( )3. 文件的I/O由ifstream、ofstream、fstream 3个类提供。ifstream是istream的派生类。

( )4. 文件的打开方式分为创建文件流对象模式和使用open函数模式。

( )5. Visual c++中,可以创建三种不同类型的数据文件:顺序文件、随机文件、二进制

文件。

( )6. 文件都是以顺序形式存储和查找的。

( )7. 要创建文件对象,必须在程序中包含名为fstream的头文件。

( )8. 将现有输出文件的末尾增加记录,需要在open()函数中使用ios::out模式。 ( )9. 对文件操作必须先关闭文件,然后再操作文件。

( )10. 当结束一个文件的操作后,要及时将该文件关闭,以防止数据遗漏。 ( )11. 如果记录指针不在文件的末尾,eof()函数返回值是true。

( )12. close()函数不需要文件名,计算机自动地确定并关闭与文件对象相关的文件。 ( )13. inFile.ignore(1); 作用是丢去一个字符或第一次遇到输入文件结束标记后,停止读取字符。

( )14. getline(inFile,state); 作用是从文件中读取字符串数据(遇空格符结束)存于state

变量中。

二、单项选择题

1. 在对磁盘文件进行操作时,以(

)方式打开的文件,可实现将数据添加在文件尾部。

(A) ios::in (B) ios::app (C) ios::out (D) ios:binary 2. 下面( )以读的模式打开文件 (A) ios:in (B) ios:out (C) ios:app (D) ios:read 3. 已知文本文件的内容是字符串“Madam I?m Adam”,下列语句序列中,( 不是 “dam”。

(A) char str[30];ifile.seekg(11,ios::beg); ifile.getline(str,30);cout<

ifile.get(str,30);cout<

ifile.getline(str,30);cout<

(D) char str[30];ifile.seekg(11,ios::beg);

ifile.get(str,30);cout<

4. 下列关于write函数的描述中,( )是正确的。

(A) 可以写入任意数据类型的数据 (B) 只能写二进制文件

(C) 只能写字符串 (D) 可以使用“(char *)+数组名”的方式数组 5. 在对磁盘文件进行操作时,以( )模式打开的文件,可实现将数据添加在文件尾部。 (A)ios::in (B)ios::app (C)ios::out (D)ios:binary

6. 在对磁盘文件进行操作时,以( )方式打开的文件,可实现创建一个可以写入的、新的空文件;如果该文件已经存在,则先删除以前的内容,再写入新的数据。 (A)ios::in (B)ios::app (C)ios::out (D)ios:binary 7. 以输出模式打开文件时,( )模式是默认输出模式。

(A)ios::in (B)ios::app (C)ios::out (D)ios:binary 8.下面( )是以读的模式打开文件。

(A)ios::in (B)ios::app (C)ios::out (D)ios::read 9. 以下判断文件a1.dat是否打开成功的正确语句是( ) (A)if(outFile.is_open(a1.dat)) (B)if(outFile. open()) (C)if(outFile.is_open()) (D)if(outFile. open(a1.dat)) 10. 以下将文件a1.dat关闭的正确语句是( )

(A)inFile.close(a1.dat); (B)a1.dat_ inFile.close(); (C)inFile_close(a1.dat); (D)inFile.close();

11. inFile.eof() 的值为真表示( )

(A)文件已读完 (B)文件为空 (C)文件未读完 (D)文件打开成功 12. 已知inFile为输入文件对象,以下格式正确的是( ): (A)close. inFile (); (B)inFile.close(); (C)inFile-close(); (D)close(inFile);

13. 变量outfile与文件对象相关联时,以下语句( )能将s1和s2变量的内容写入test.dat

文件。 (A)test.dat<>s1>>?#?>>s2>>endl; 14.以下( )语句能将city变量写入名为date1.dat的输出文件。

(A)date1.dat <>city>>endl;

)输出的

三、阅读程序题 1:#include #include using namespace std; clase Cdisp

{ int x,y; public:

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

void disp( )

{ cout<<”x=”<

void main( )

{ Cdisp obj1(12,18),obj2(3,20),obj; fstream iofile;

iofile.open(“c:\\\\temp\\\\data.txt”,ios::out); iofile.close( );

iofile.open(“c:\\\\temp\\\\data.txt”,ios::out|ios::out); iofile.write((char *)&obj1,sizeof(Cdisp)); iofile.write((char *)&obj2,sizeof(Cdisp)); iofile.seekp(0,ios::beg);

iofile.read((char *)&obj,sizeof(Cdisp)); obj.disp();

iofile.read((char *)&obj1,sizeof(Cdisp)); obj1.disp();

iofile.read((char *)&obj2,sizeof(Cdisp)); obj2.disp(); }

当执行以上程序时,输出结果是:( ) 四、程序改错题

1、功能:从键盘读取成绩,并把该成绩保存在“score1.dat”的数据文件中。 score1.dat数据文件的格式如下:

学号 高数 外语 C++ 1 77 69 96 2 87 87 65 3 76 95 87 4 56 79 94

#include #include using namespace std; void main()

{ int num[4],m[4],e [4],c[4]; int i;

ifstream outFile;

outFile.open(\cout<<\

for(i=0;i<4;i++) cin>>num[i]>>m[i]>>e[i]>>c[i];

if(File.is_open( ))

{ outFile<<\学号\高数\外语\

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

cout<

close.outFile ( );

}

else

cout<<\

}

2、功能:文件Solution1.dat中存放的是数字1到25的平方,现读取该文件中存储的数字求总和并显示在屏幕上。

Solution1.dat数据文件的格式如下:

1 4 9 … 625

#include #include using namespace std; void main()

{ ofstream inFile;

inFile.open(\int number = 0; int sum = 0; if(inFile.is_open(Solution1.da)) { inFile >> number;

while (inFile.eof())

{ sum = sum + number; cin >> number; } close();

cout << \}

else cout << \

}

\

\ \

习题参考答案

第2章参考答案

一、填 空

1. 字母 数字 下划线 数字 2. .obj

3. iostream.h

4. 回车、空格、Tab 5. \\ 6. 1

7. 注释信息

8. y=x;x++; x++;y=x; 9. \\n

10. int float double char bool 二、判断正误

1、错 2、错 3、对 4、错5、错 6、错 7、对 8、错9、对10、错 三、单项选择

1、A 2、C 3、D 4、D 5、B 6、 B 7、B 8、D 9、B 1011、B 12、D 13、D 14、A 15、D 16、A 17、D 18、A 19、B 20四、阅读程序,写出运行结果

1. This is a hello world program 2. a=62.8318, b=314.159 五、程序改错

/*求三个整数的平均数*/ #include void main( ) {int a,b,c,sum; double avg;

cout<<\请输入三个整数:\\n\

、B 、C cin>>a>>b>>c; sum=a+b+c; avg=sum/3.0;

cout<< “平均数是:”<

第3章参考答案

一、判断题

1、错 2、错 3、对 4、错5、对 6、错 7、对 8、对 9、对10、对 11、对12、对13、错14、错15、错16、错17、对18、错19、错20、对

二、单项选择题

1、A 2、A 3、C 4、B 5、C 6、 C 7、C 8、A 9、C 10、C 11、A 12、A 13、D 14、B 15、C 16、A 17、D 18、B 19、B 20、D 21、D 22、D

第4章参考答案

一、判断题

1、错 2、对 3、错 4、错 5、错 6、对 7、对 8、对 9、对 10、错 11、错 12、错 13、错14、对 15、对 16、错17、错18、对 19、对 20、错 二、单项选择题

1、D 2、B 3、D 4、B 5、C 6、B 7、A 8、B 9、D 10、B 11、D 12、B 13、B 14、C 15、C 16、C 17、D 18、A 19、D 20、D 21、A 22、B 三、阅读程序 程序运行结果: 1、11ㄩㄩ1

2、0 1 2 -1 0 1

-2 -1 0

3、9@@@0

4、**1**2**3 **2**4**6

5、 0 1 2 3 -1 0 1 2 -2 -1 0 1

-3 -2 -1 0

6、 1 1 2 3 5 8 * 1 1 2 3 5 * * 1 1 2 3 * * * 1 1 2 * * * * 1 1 * * * * * 1 * * * * * *

7、 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

8、1 1 3 3 四、程序填空

1、① j=i+1;j<11;j++ ② a[i]>a[j] ③ a[i]=a[j] ④ a[j]=temp 2、① k

8 5 3 2 1 1 7 4 8 9 13 五、程序改错

错误行号及正确语句: 6 for(int i=0;i<10;i++) 10 while(high<=low) 13 if(a[mid]==x)

17 high=mid+1; 19 low=mid+1; 20 if(high>low)

23 cout<

第5章参考答案

一、判断题

1、对 2、错 3、错 4、对5、错 6、错 7、对 8、对 9、对10、错 11、对12、错13、对14、错15、对16、对17、对18、对19、错20、错 二、单项选择题

1、B 2、D 3、D 4、D 5、D 6、 B 7、A 8、B 9、C 1011、C 12、B 13、B 14、C 15、B 16、B 17、C 18、B 19、A 20

第6章参考答案

一、判断题

1、对 2、对 3、对 4、错5、对 6、错 7、错 8、对 9、对10、错 11、错12、对13、对14、错15、错16、错17、对18、对19、对20、错 二、单项选择题

1、C 2、B 3、D 4、A 5、B 6、 D 7、C 8、A 9、A 1011、A 12、A 13、B 14、D 15、A 16、B 17、C 18、A 19、C 20

、C 、A 、A 、B 第7章参考答案

一、填空题 1、private

2、公有(public) 3、构造

4、析构

5、派生 基 派生 6、私有(private) 二、判断题

1、对 2、错 3、对 4、对 5、对 6、对 7、错 8、对 9、错 10、错 11、错 12、错 13、对 14、错 15、对 16、错 17、对 18、对 19、错 20、对 三、单项选择题

1、D 2、D 3、B 4、D 5、B 6、A 7、A 8、A 9、B 10、C 11、B 12、D

第8章参考答案

一、判断题

1、错 2、对 3、对 4、对 5、对 6、错 7、对 8、错 9错 10、对 11、错 12、对 13、对 14、错 二、单项选择题

1、B 2、A 3、C 4、B 5、B 6、C 7、C 8、A 9、C 10、D 11、A 12、B 13、C 14、B 三、阅读程序 程序运行结果: x=0 y=0 x=12 y=18 x=3 y=20

四、程序改错

第1题

第2行 #include

第6行 ofstream outFile; 或fstream outFile;

第7行 in改为out,即outFile.open(\ 或outFile.open(\ 第10行 File改为outFile,即outFile.is_open( ) 第13行 cout改为outFile 第14行 outFile.close( )

第2题

第5行 ifstream inFile;

第6行 app改为in,即inFile.open(\或inFile.open(\ 第8行 if(inFile.is_open()) 第10行 while(!inFile.eof()) 第12行 inFile>>number; 第14行 inFile.close( );

四、程序改错

第1题

第2行 #include

第6行 ofstream outFile; 或fstream outFile;

第7行 in改为out,即outFile.open(\ 或outFile.open(\ 第10行 File改为outFile,即outFile.is_open( ) 第13行 cout改为outFile 第14行 outFile.close( )

第2题

第5行 ifstream inFile;

第6行 app改为in,即inFile.open(\或inFile.open(\ 第8行 if(inFile.is_open()) 第10行 while(!inFile.eof()) 第12行 inFile>>number; 第14行 inFile.close( );

本文来源:https://www.bwwdw.com/article/y2cx.html

Top