C++习题及参考答案 下载本文

习 题 第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)>= (D) / 7. 字符串常量“ME”的字符个数是( )。 (A)4 (B)3 (C)2 (D)1 8. 在C++语言中,080是( )。 (A)八进制数 (B)十进制数 (C)十六进制数 (D)非法数 9. 整型变量i定义后赋初值的结果是( )。 int i=2.8?6; (A)12 (B)16 (C)17 (D)18 10.如有int m=31;则表达式(m++*1/2)的值是( )。

(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 (C) a=65 (D)a=A-32 四、阅读程序,写出运行结果 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; }

第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

( )⒐ 表达式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

else c+=1; cout<<“c=\ }

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

(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 (D) 90 10. continue语句的作用是( )。

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

(C) 结束本次循环,直接进行循环条件的判断 (D) 循环执行完后,结束循环 11. 下列程序段循环( )次。 int x=-10; while (++x) { } (A) 9 (B) 10 (C) 11 (D) 无限 12. 在下列运算符中,优先级最低的是( )。

(A) || (B)!= (C) < (D) + 13. 下列描述正确的是( )。

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

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

14. 如果switch语句选择表达式中是整型变量,下面哪一项case子句是合法的( )。 (A) case “2”: (B) case 2: (C) case 2; (D) 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;

do{ cout<

}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]] (D) a[a[4]+4] 2. 对语句:int a[3][4]={0}; 描述正确的是( ) 。 (A) 只有元素 a[0][0] 可得到初值 0 (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

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

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; for(i=0;i<3;i++)

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

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

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

cout<

6. #include

using namespace std; void main( )

{ const int N=7; int a[N][N],i,j; for(i=0;i

a[i][j]=a[i][j-1]+a[i][j-2]; for(i=0;i

if (j

7.#include

#include using namespace std; void main( )

{ const int N=5; int a[N][N]; int i,j; for(i=0;i

{ a[i][0]=1; a[i][i]=1; } for(i=2;i

{ for(j=0;j

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

{ int a[10]={1,1,2,3,2,7,4,2,8,9}; int b=32%6; int i,j,c=0,k=9;

for(i=0;i<9;i++) { if(a[i]==b) { c=c+1; k--;

for(j=i;j<9;j++) { a[j]=a[j+1];} i--;

}

}

for(i=0;i<=k;i++) cout<

四、程序填空题

1.功能:将若干个数按从小到大顺序排序。 #include using namespace std; void main( )

{ int i,j; double temp; double a[11];

cout<<\输入需排序的10个数:\ for(i=1;i<11;i++) cin>>a[i]; for(i=1;i<=9;i++)

for( ① ) if( ② ) { temp=a[i]; ③ ; ④ ;} cout<<\排序后的10个数为:\ for(j=1;j<=10;j++) cout<

2.功能:使用冒泡法对10个数从大到小排序。 #include void main( )

{ const int N=10; int a[N], j,k;

cout<<\ for(j=0;j>a[j]; for(j=0;j

for(k=0; ① ; k++)

if( ② ) { a[k]+=a[k+1]; ③ ; ④ ; }

for(j=0; ⑤ ;j++) cout<

cout<

3.功能:把一个数列中的所有相同的数删到只剩下一个。 #include using namespace std; void main( )

{ int a[10],i,j,pos=1; for(i=0;i<10;i++) cin>>a[i]; for(i=1;i<10;i++)

{ for(j=0; ① ;j++) if (a[i]==a[j]) break;

if( ② ) { a[pos]=a[i]; pos++; }

}

for(i=0; ③ ;i++) cout<

功能:折半查找

1 #include 2 using namespace std; 3 void main( )

4 { int a[10],low=9,mid,high=0,x,pos;

5 cout<<\请输入10个数(降序):\6 for(int i=0;i<=10;i++) 7 cin>>a[i];

8 cout<<\请输入欲查找的数:\ 9 cin>>x;

10 while(low<=high) 11 {

12 mid=(low+high)/2; 13 if(a[mid]=x) 14 { pos=mid; 15 break; } 16 else if(a[mid]>x) 17 high=mid-1; 18 else

19 low=mid+1; 20 }

21 if(low>high)

22 cout<<\没有找到\23 else

24 cout<

本题有七个错误,写出错误行号及正确语句。 ( )

第5章 指针的应用

一、判断题

( )1. 从内存单元中存取数据的方法有直接访问方式和间接访问方式。 ( )2. 能够直接赋值给指针变量的整数是0和1。

( )3. 声明了指向int类型的指针,该指针可以被赋予任何类型对象的地址。 ( )4. 变量的指针,其含义是指该变量的地址。

( )5. 设有如下定义语句:int *p,a;则语句 p=&a;中的运算符‘&?的含义是取变量的值。

( )6. 在使用指针变量时,可以把常量或表达式的地址赋给指针变量,表示该指针指向

常量或表达式的地址。

( )7. 设有定义语句:int a[10];该数组的数组名a是数组首地址,是一个地址常量,

是数组第一个元素的地址。

( )8. 设有如下语句:int *p,a[10]={0};则可用语句: { for(p=a;p

cin>>*p; } 从键盘输入数组的值。

( )9. 在操作一个一维数组时,可能会用到两个指针变量指向该数组,这两个指针变量

之间可以进行关系运算,其关系运算的结果表明了这两个指针变量所指向的数组元素的先后关系。

( )10. 对于已经定义好的相同的两个指针变量之间,可以进行加法运算、减法运算和

赋值运算。

( )11. 设有如下一段程序: int *var,ab;;ab=100;var=&ab;ab=*var+10;执行上面的程

序段后;ab的值为 110。

( )12. 有如下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式可以

表示为 *p+=9。

( )13. 有定义语句:int a[5][5],*p;二维数组a首地址可表示为:p=a[0]或p=&a[0][0]。 ( )14. 有定义语句:int a[3][2]={6,5,4,3,2,1},*p=a[0];cout<<*(p+5)<

输出的值为2。

( )15. 在VC++中,存储的分配有两种,即静态存储分配和动态存储分配。

( )16. 静态存储分配:是指程序中使用的变量和数组的类型、数目和大小,是在编程

时由程序员分配确定下来的,因此,在程序运行时这些数据占据的存储空间数也是一定的。

( )17. 动态存储分配:在程序运行过程中按照实际需要申请适量的内存单元,使用结

束后还可以释放,这种存储分配方法被称为动态存储分配。

( )18. 实现动态分配内存,需要运用指针和使用运算符:new和delete。

( )19. 使用动态存储分配时,用运算符new获取的内存空间,不必须用delete进行释放。

( )20. 对一个指针可以多次调用delete运算符进行释放。在使用delete运算符进行释放

时,不用考虑数组的维数。 二、单项选择题

1. 下列关于指针运算的描述错误的是( )。 (A) 指针变量是用于存储变量地址的变量 (B) 指针变量是用于存储变量值的变量 (C) 在一定条件下,指针变量可以为空值 (D) 可以使用指针变量来访问数组

2. 若已经定义了a为int型变量,则对指针变量p的定义及初始化正确语句是( )。 (A) int *p=a; (B) int p=a; (C) int *p=*a (D) int *p=&a; 3. 若有定义:int x=0, *p=&x;,则语句:cout<<*p;的输出结果是( )。 (A) 随机值 (B) p的地址 (C) x的地址 (D) 0 4. 设有定义语句:int n=0,*p=&n,*q;则以下选项中,正确的语句是( )。 (A) p=1; (B) p=q; (C) *p=*q; (D) *p=5;

5. 已知一运行正常的程序中有下面的语句,由此可知,变量a和b的类型分别是( )。 int *p2=&x,*p1=a;*p2=*b;

(A) int和int (B) int *和int (C) int和int * (D) int *和int * 6. 设有如下的程序段,程序段运行后输出的结果是( )。 { int a=1,b=3,c=5;

int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); cout<

(A) 1 (B) 3 (C) 5 (D) 15 7. 设有如下程序段: int x=8,*p=&x;

cout<<*p++<

(A) 8 (B) 9 (C) 8的地址 (D) 9的地址 8. 设有如下程序段: int x=8,*p=&x;

cout<<++*p<

(A) 8 (B) 9 (C) 8的地址 (D) 9的地址

9. 设有定义语句:int *point, a=4;和 point=&a;下面均代表地址的一组选项是( )。 (A) a, point (B) &a,*point (C) point, &a (D) a, *point 10. 设有定义语句:int a[10],*p=a;对数组元素正确使用的语句是( )。

(A) a[p] (B) p[a] (C) *(p+2) (D) p+2

11. 设有定义语句:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则数值不为3的表达式是( )。 (A) a[3] (B) p[3] (C) p+=2,*(p++) (D) p+=2,*(++p) 12. 设int x[ ]={1,2,3,4,5,6},*p=x;则数值为3的表达式是( )。 (A) p+=2, *++p (B) p+=2, *p++ (C) p+=3, *p (D) p+=2, ++*p 13. 设有定义语句:int a[5],*p=a; 则下列描述错误的是( )。 (A) 表达式p=p+1是合法的 (B) 表达式a=a+1是合法的 (C) 表达式p-a是合法的 (D) 表达式a+2是合法的

14 有下面语句int a[10]={10,9,8,7,6,5,4,3,2,1},*p=a;则数值为2的表达式是( )。 (A)a[9] (B)*p[8] (C)*(a+8) (D)p+8 15. 设有如下的程序段,有语法错误的语句是( )。

(A)char *p=\;cout<

(B) char name[7]=\;cout<

(A) cde (B) 字符c (C) 字符c的地址 (D) 无确定的输出结果 17. 设有如下程序段:

char str[ ]=\ *(p+5)的值是( )。 (A) 随机值 (B) 字母o

(C) 字符串结束标志‘\\0’ (D) 字母o在内存的地址 18. 设有定义语句:int *p[4];则标识符p是( )。 (A) 一个指向整型变量的指针 (B) 一个指向整型的指针数组名

(C) 一个指针,它指向一个含有四个整型元素的一维数组 (D) 一个非法的定义语句

19. 设有如下程序段:输出的值为( )。

int a[3][3]={9,8,7,6,5,4,3,2,1};; int *p[3]; p[1]=a[1];

cout<<*(p[1]+2)<

(A) 4 (B) 5 (C) 6 (D) 7 20. 设有如下程序段:

int *point;

point=new int(4); 表明了( )。

(A) 用动态分配了存放int类型数据的内存空间,将初值4存入该空间中,并将首地址赋给指针point

(B) 用动态分配了存放int类型数据的内存空间,分配的内存空间的大小为4个字节,并将首地址赋给指针point

(C) 用动态分配了存放int类型数据的内存空间,将首地址赋给指针point,且point指针的值为4

(D) 用动态分配了存放int类型数据的内存空间,将首地址赋给指针point,且point指针在内存空间的地址值为4

第6章 函数的应用

一、判断题

( )1. 一个C++程序通常由有而且只能有一个的主函数、若干个子函数和库函数构成。

( )2. 用语句cout<

( )5. 要在C++程序中通过引用来传递变量,则应该在函数头的对应形参名前面加上地

址运算符&。

( )6. 在C++有返回值的函数中,return语句有而且只能有一条。

( )7. void函数调用后,可以作为一个值出现在赋值语句的右边赋值给一个变量。 ( )8. 变量的生存期指明了该变量在计算机内存中能保留多久。

( )9. Visual C++6.0系统中,使用语句srand(time(NULL));来初始化随机数产生器。 ( )10. Visual C++6.0系统中,用户若需调用内置系统函数,调用前不必使用预编译命令

将该函数所在文件包括到用户源文件中,系统会自动调用。

( )11. Visual C++6.0系统中,有调用关系的所有函数必须放在同一源程序文件中。 ( )12. 在C++中,实参与形参结合方式有三种:值调用、引用调用和地址调用。 ( )13. 当数组名作为函数调用的实参时,实参与形参表示同一个数组。

( )14. 在C++的函数调用中,主函数可以调用子函数,子函数也可以调用其它的子函

数,但子函数不能自己调用自己。

( )15. void函数的函数头以关键字void开始,函数体中最后一条语句为return。 ( )16. 只能被声明该变量的函数使用的那些变量被称为全局变量。 ( )17. 变量的作用域指明了程序的哪一部分可以使用该变量。

( )18 函数的形式参数可以都有默认值,也可以只有部分有默认值。 ( )19 函数的递归调用可分为直接递归调用和间接递归调用。

( )20 同一源文件中,若外部变量名与局部变量名相同,则在执行该函数过程中,外部

变量起作用。 二、单项选择题

1. 下面哪一个C++函数和数学表达式53是等价的( )。

(A) power(3,5) (B) pow(3,5) (C) pow(5,3) (D) srqt(3,5) 2. 下面哪一条C++语句显示范围3到9之间的随机数( )。 (A) 1+rand( )%(9-3+1) (B) 3+rand( )%(9-3+1) (C) 3+rand( )%(9+3-1) (D) 9+rand( )%(9+1-3) 3. Visual C++中,函数返回值的类型是由( )。 (A) return 语句中的表达式类型所决定 (B) 调用该函数时的主调函数类型所决定 (C) 调用该函数时系统临时决定

(D) 在定义该函数时所指定的函数类型所决定 4. 以下叙述中正确的是( )。

(A) 构成C++程序的基本单位是函数 (B) 可以在一个函数中定义另一个函数 (C) 主函数必须放在其他函数之前

(D) 所有被调用的函数一定要在调用之前进行定义 5. 以下正确的函数头定义形式是( )。

(A) int fun(int x;int y) (B) int fun(int x,int y) (C) int fun(int x,y) (D) int fun(int x;) 6. 在下面的函数原型中,存在语法错误的是( )。

(A) void BC( int a ,int ); (B) void BC( int ,int );

(C) void BC( int ,int b=5); (D) void BC( int a ;int b); 7. 若有函数原型“int sum(int x, int y);”,则使用语句“cout<

(A) 指针传递 (B) 引用传递 (C) 值传递 (D) 内容传递 8. 以下哪一项可以作为void函数cacl( )的函数原形,并且将传递给该函数两个int型变量的值( )。

(A) void cacl(int, int); (B) void cacl(int); (C) void cacl(int &, int &); (D) int cacl(void); 9. 以下说法中哪一项是错误的( )。

(A) 在函数头中形参的名字必须和函数调用中实参的名字一样 (B) 在函数头中列出的形参必须包含每个参数的数据类型和名字 (C) 在函数头中,函数名后面的一对空括号代表函数不接受任何信息 (D) 函数的语句被括在一对花括号中

10. 以下哪一条C++语句显示名为address字符串变量所包含的字符的个数( )。 (A) cout<

11. 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能实现正确交换功能的函数是( )。

(A) void funa(int &x,int &y) (B) void funb(int x,int y) { int p; { int t;

p=x;x=y;y=p;} t=x;x=y;y=t;}

(C) void func(int *x,int *y) (D) void fund(int x,int y)

{ *x=*y;*y=*x; } { x=x+y; y=x-y; x=x-y; } 12. 关于引用,下列说法中正确的是( )。

(A) 引用是一种特殊类型的变量,是另一个变量的别名 (B) 引用在函数调用中传递的是变量的值 (C) 在声明引用时,要给它另开辟内存单元 (D) 在声明引用时,可以不进行初始化 13. 下列叙述中正确的是( )。

(A) C++程序中,main( )函数必须在其它函数之前,函数内可以嵌套定义函数 (B) C++程序中,main( )函数的位置没有限制,函数内不可以嵌套定义函数

(C) C++程序中,main( )函数必须在其它函数之前,函数内不可以嵌套定义函数 (D) C++程序中,main( )函数必须在其它函数之后,函数内可以嵌套定义函数 14. 下面有关函数原型的说法正确的是( )。

(A) 函数原型与函数的定义语法是一样的

(B) 如果程序中有自定义函数,必须有和其对应的函数原型

(C) 函数原型的参数和函数定义的参数列表在参数的个数、名称、类型上必须一一对应 (D) 函数原形和函数定义在函数名和返回类型上必须一致

15. 在C++函数头定义中,若省略了返回值的数据类型,其默认的返回值的数据类型为 ( )。

(A) int (B) float (C) double (D) void 16. 下列程序运行后的结果是( )。 #include

using namespace std; void fun(int *a, int b) { int *k; k=a; *a=b; b=*k; }

void main( )

{ int a=3,*x=&a; int y=5; fun(x,y);

cout<

}

(A) 3 5 (B) 5 5 (C) 3 3 (D) 5 3 17. 下列程序运行后的结果是( )。

#include using namespace std; void fun(char *c,int d) { *c=*c+1;d=d+1; }

void main( ) { char a='A',b='a'; fun(&b,a); cout<

(A) B a, (B) a B (C) A b (D) b B 18. 下列程序运行后的结果是( ) 。

#include using namespace std;

void fun(char *a, char *b) { a=b; (*a)++; } void main( )

{ char c1='A', c2='a', *p1, *p2; p1=&c1; p2=&c2; fun(p1,p2);

cout<

(A) Ab (B) aa (C) Aa (D) Bb 19. 以下不正确的说法是( )。

(A) 在C++中,一个程序中的函数名不一定是唯一的

(B) 在C++中,定义函数时,在返回值数据类型的前面加上关键字inline,这种函数称

为内联函数

(C) 在C++中,不允许有两个及以上的函数使用同一个函数名

(D) 在定义函数时,还可以对形式参数进行初始化,即给该形式参数指定默认值。 20. 以下正确的说法是( )。

(A) 全局变量如果没有指定初值,则其初值为 0 (B) 静态变量如果没有指定初值,则其初值为 0 (C) 局部变量如果没有指定初值,则其初值为 0

(D) 函数中的静态变量在函数每次调用时,都会重新设置初值

第7章 面向对象程序设计基础

一、填空题

1. 申明类的成员为私有类型的关键字是_________________________。 2. 对象通过成员运算符只能调用类的_____________________成员。

3. 通过类定义对象时,对象会自动调用类的_____________________函数。 4. 对象消亡时,类的___________________函数会被自动调用。

5. 在类A的基础上,通过增加成员可以产生新的类B。由类A产生类B的过程称为

___________________,此时通常称类A为____________类,类B为___________类。 6. 继承方式关键字为private时,基类的公共成员在派生类中是__________________成员。 一、判断题

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

( )2. 因为构造函数不返回值,所以可以在构造函数名前加上void关键字。 ( )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) 一般成员函数 (B) 类的初始化 (C) 对象的初始化 (D) 删除对象

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

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

第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<

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 10、B 11、B 12、D 13、D 14、A 15、D 16、A 17、D 18、A 19、B 20、C 四、阅读程序,写出运行结果

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\ 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、B 6、 C 7、C 8、A 9、C 1011、A 12、A 13、D 14、B 15、C 16、A 17、D 18、B 19、B 2021、D 22、D

、C 、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 13 * 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 7 4 8 9 3 四、程序填空

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

② a[k]

③ a[k+1]=a[k]-a[k+1] ④ a[k]-=a[k+1] ⑤ j=pos ③ i

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

、C 、A 第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 10、A 11、A 12、A 13、B 14、D 15、A 16、B 17、C 18、A 19、C 20、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( );