C++程序设计习题大荟萃(免费下载)

更新时间:2024-07-09 05:15:01 阅读量: 综合文库 文档下载

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

C++练习题大荟萃 本书共包含十个章节的内

第一章 C++语言的概述 一、简答题

1. C++的单词包含那几种?

2. 一个标识符中的首字符必须是什么字

符?其余位置上的字符必须是什么字符? 3. 数值常量、字符常量、字符串常量和标

识符在表示上各有什么区别? 4. C++语句分为哪几类?

5. #include命令的格式和功能各是什么?

使用尖括号和双引号在含义上有什么区别?

6. 你已经知道了那几个系统头文件? 7. cout和cin 标识符的含义是什么?他们

后面分别使用什么运算符?各运算符的作用是什么?

8. 上机运行一个程序需要经过那些阶段? 二、填空题

1. 程序中的预处理命令是指以______字符

开头的命令。

2. 一条简单语句是以______字符作为结束

符的,一条复合语句是分别以______字符和______字符作为开始符和结束符的。

3. 空白符是______符、______符、和______

符的统称。

4. 在#include命令中所包含的头文件,

可以是______头文件,也可以是______头文件。

5. 使用#include命令可以包含一个头文

件,也可以包含一个______文件。

6. 一个函数定义由______和______两部分

组成。

7. 一个程序中必须有一个名为______的函

数。

8. 函数头与______语句一样都能够提供出

函数的参数和返回类型等信息。

9. 若一个函数的定义处于调用它的函数之

前,则在程序开始可以省去该函数的______语句。

10. 一个函数的函数体就是一条______。

1

11. C++头文件和源程序文件的扩展名分别为

______和______。

12. 程序文件的编译错误分为______和

______两类。

13. 当使用______保留字作为函数类型时,

该函数不返回任何值。

14. 当函数参数表用______保留字表示时,

则表示该参数表为空。

15. 从一条函数原型语句”int fun1(void);”

可知,该函数的返回类型为______,该函数带有______个参数。

16. 当执行cout语句向C++显示输出屏幕输

出一个数据项的值时,若该值的显示宽度(即所占显示位置的字符数)为n,则显示该值后光标将从原位置后移______个字符显示位置。

17. 当执行cout语句输出endl数据项时,

将使C++显示输出屏幕上的光标从当前位置移动到______的开始位置。

18. 当执行cin语句时,从键盘上输入每个

数据后必须输入一个______符,然后才能接着输入下一个数据。

三、写出下列程序运行结果,此题又作为上机实验题

1. #include

void main() {

int x,y; x=5;y=6;

cout<<”x+y=”<

}

2. #include

int cube(int); void main(void) {

cout<<”cube(3)=”<

int cube(int x) {

return x*x*x; }

3. #include

#include”abc.h” void main()

{

double a,b,c;

double averageValue; a=2;b=3;c=4;

averageValue=AVE(a,b,c); cout<<”averageValue;”<

averageValue=AVE(a,b+1,c+2); cout<<”averageValue:”<

其中abc.h文件的内容如下:

double AVE(double x,double y,double z) {

return (x+y+z)/3; }

4. #include

#include”example.h” void main() {

int a,b,c;

cout<<”请输入3个整数:”

cin>>a>>b>>c; cout<<”最大值:”

<

cout<<”最小值:”

<

}

其中example.h文件的内容如下:

int max_value(int a,int b,int c); int min_value(int a,int b,int c);

这两个函数的定义(又称为函数的实现或具体实现)被保存在另一个程序文件中,它将被编译后连接到主文件中产生出可执行文件。该程序文件的内容如下:

int max_value(int a,int b,int c) {

if(a

的值赋给a

if(a

的值赋给a

return a; }

int min_value(int a,int b,int c) {

2

if(a>b) a=b;// 若a大于b则将b

的值赋给a

if(a>c) a=c;// 若a大于c则将c

的值赋给a

return a; }

请读者自行假定用于输入的3个整数。

第二章 数据类型和表达式 一、简答题

1. C++数据分为哪四种大的类型?在大的

整数类型中又分为哪四种类型?

2. 整数类型分为哪三种类型,每种类型的

长度各是多少?

3. 实数类型分为哪三种类型,它们的类型

长度各是多少?

4. 单精度和双精度分别表示多少位有效数

字?

5. 每一种C++具体类型的关键字是什么? 6. 哪四种保留字能够用来修饰int 保留

字成为类型关键字?哪两种保留字能够用来修饰char保留字成为类型关键字?

7. 整型常数具有哪三种不同进制的表示?

如何区分它们?

8. 一个整数后缀L或U分别具有什么含

义?

9. 转义字符序列中的首字符是什么字符? 10. 实数具有哪两种表示方法?一个浮点数

具有那些成分?什么叫规格化浮点数?

11. 定义符号常量和变量的语句有什么异

同?

12. #define命令的作用是什么? 13. 一个C++运算符具有哪三种属性? 14. 左值和非左值(又称右值)有什么区别? 15. 在程序文件中使用系统数学函数或随机

函数时,各需要通过#include命令引入哪个头文件?

16. 一个表达式是否必须有一个值,在什么

情况下它没有值?

17. 执行一个函数调用的大致过程是什么?

函数运算的优先级如何?

二、填空题

1. 数据类型

int,char,bool,float,double的类型长度分别为______、______、______、______和______。

2. 短整型、整型和长整型的最简关键字

分别为______、______和______。

3. 常数-4.205,1200和6.7E-9分别具有

______、______和______位有效数字。

4. 数值常量46、0173和0x62对应十进

制值分别为______、______和______。

5. 字符常量 ’k’,’\\n’,’\\\\’,’

/052’和’\\xA2’对应的数值分别为______、______、______、______和______。

6. 字符串”It \\’s\\40an\\40apple.\\n”

中包含有______个字符。

7. 枚举类型中的每个枚举值都是一个

______,它的值是一个______,值的类型为______。

8. 实数340.0和0.027E8对应的规格化

浮点数分别为______和______。

9. 常数100,-25,3.62,1E5和-4.73f

的数据类型分别为______、______、______、______和______。

10. 若x的值为10,则x+=5的值和运算后

的______的值相同,等于______。

11. 若x=5,y=10,则计算y*=++x表达式后,

x和y的值分别为______和______。

12. 若x=25,则计算y=x++表达式后,x和

y的值分别为______和______。

13. 假定x和ch分别为int 型和char型,

则sizeof(x)和sizeof(ch)的值分别为______和______。

14. 假定x=64,y=88,则x<<2和y>>2的值

分别为______和______。

15. 假定x是一个逻辑量,则x&&true的

值与______的值相同,x||false的值也与______的值相同。

16. 假定x是一个逻辑量,则x&&!x的值

分别为______和______。

17. 假定x=10,则表达式x<=10?20:30的值

为______。

18. 假定x=10.5,y=-4.6,则表达式floor

(fabs(x+y))的值为______。

19. 表达式sqrt(81)和pow(6,3)的值分别

为______和______。

20. 随机函数rand() 的值在______至

______区间内。

bx+1

21. 数学算式(1+x)sin48°和axe对应的

算术表达式分别为______和______。

3

三、试指出下列各表达式值的类型

假定a为int型,x为double型,

1. 327 2. -1.5e6 3. 42.0f 4. 48L 5. 0372 6. 0xabc 7. 1/3 8. 1%3 9. 1.0%3 10. a*3/x 11. a*(a+x) 12. 1+a*a 13. a+=3 14. x*=2 15. ‘x’ 16. ‘x’+20 17. true 18. ++a

19. short(a) 20. bool(x)

21. (unsigned int)(0256) 22. x=a++

23. sizeof(bool) 24. char(a+10) 25. abs(x) 26. fabs(a) 27. floor(x) 28. ceil(a) 29. exp(4)+2 30. rand() 31. rand()/100 32. floor(log(x)) 33. pow(a,4)

34. a>10?x:sqrt(x) 35. a>100 36. x!=10 37. a&&x

38. a<1||a>10 39. !x

40. !(a==0)

四、试求出下列每个表达式的值(各表达式互不影响)

已知a=20,x=4.7,r=’a’,

六、写出下列每个程序运行后的输出结果并自行上机验1. a++ 证

2. ++r 3. a%5 4. a/5 5. r 6. 1+a/3%4 7. a/8.0 8. r+=4

9. x=2*(x+5)-1 10. char(a+30) 11. 10*sizeof(int) 12. (a<<3)+5 13. a>0 14. a==1

15. a++&&r!=’a’ 16. ++a&&r==’a’ 17. a||x<=10

18. a==r||a==floor(x) 19. a=(r>’A’?a+10:a-10) 20. a=(r<’A’?a+10:a-10) 21. x=(a++,r++) 22. x=(a++,r++,50) 23. x=pow(3,5)

24. x=fabs(-26.5)+4 25. a=abs(a)%8-10 26. floor(x+0.5) 27. ceil(x-0.5)

28. ceil((x-=0.5)-0.5)

五、把下列数学算式或不等式表示成C++表达式

1. 2x(1+x2

/3)

2. (1+ex)/(1-ex

)

3. (-b+(b2-4ac)1/2

)/2a

4. 1/(3x

ln(2x+k))

5. sin3(x+π/4)/(3+cos3

(x-π/4))

6. 1/7(1+ex+1) n

7. 0<=x<=20 8. ax-by!=c 9. 4x+7y-2=3ab

10. |2x2

+1|/|3x+2|<-5同时3x+2!=0 11. age>=55或者pay>=820

12. place=”江苏”同时sex=”女”

13. ‘a’<=ch<=’z’或者’A’<=ch<=’Z’ 14. s[0]=’0’同时(s[1]=’x’或者s[1]=’

X’)

4

1. #include

enum race{Black,White,Yellow}; void main() {

race ra;

ra=Black;cout<

;

}

2. #include

#define PI 3.14159 const int R=10 void main() {

double p,s;

p=2*R*PI;

cout<<”p=”<

3. #include

void main() {

int i=0,j=1,k;

k=i+=j; cout<

4. #include

void main() {

cout<

cout<

<

cout<

<

cout<

<

cout<

<

}

5. #include

const int w=30; void main() {

int x,y;

x=w<<2;y=w>>2; cout<

y=ceil(x);z=floor(x); cout<

)/10;

cout<

10;

cout<

}

x=w&10;y=w|10; cout<

6. #include

void main() {

int x=10,y=-1;

cout<<((x>y)&&(y<0))<<’ ’; cout<<((x>y)||(y<0))<<’ ’; cout<<((x<=y)&&(y>=0))<<’ ’; cout<<((x<=y)||(y>=0))<<’ ’; cout<<((x==y)&&y)<<’ ’; cout<<((x==y)||y)<<’ ’; }

7. #include

void main() {

int x=5,y=10,k;

(k=x)+=y;cout<

<

k=x+=y;cout<

<

k=x*=y;cout<

<

k=(x++,y++);cout<

<

k=x++,y++; cout<

8. #include

#include void main() {

double x=15.72;

七、编写下列程序

1. 已知一个三角形中三条边的长度分别为a,b和

c,利用计算公式(s(s-a)(s-b)(s-c))1/2

求出三角形的面积,其中s=(a+b+c)/2,假定a,b和c的值由键盘输入,并确保任何两边的长度大于第三条边。

2. 假定一所大学2001年招生人数为3000人,若

以后每年平均比上一年计划扩招10%,则2006年将计划招生多少人? 3. 已知有4个整数为a,b,c,d,试计算出它们的算

术平均值和几何平均值。 4. 已知x=2a/2(a+b)sina,y=2b/3(a+b)cosb,试根

据从键盘上输入的a和b的值分别计算出x和y的值。

八、上机实验题

1. 让计算机随机出10道两位整数加法题供用户计算,每道题10分,计算完成后打印出得分。 #include

#include #include const N=10; void main() {

srand(time(0)); int x,y,z,c=0;

for(int I=1;I<=N;I++) {

x=rand()?+10; y=rand()?+10;

cout<>z;

if(x+y==z)c++; }

cout<<”得分:”<

5

#include const N=10;

int ff(int x,int y) {

int z;

cout<>z;

if(x+y==z) return 1;else

return 0;

}

void main() {

int a,b,c=0;

srand(time(0));

for(int i=0;i

a=rand() +1; b=rand() +1; c+=ff(a,b) }

cout<<”得分:”<

10. #include

#include #include void main() {

double a,b,c; cout<<”输入一元二次方程的二次项系数、一次项系数和常数

项:”<

cin>>a>>b>>c;

double d=b*b-4*a*c; if(d<0.0) {

cout<<”此方程没有实根!”<

exit(1); }

double x1,x2; if(d==0.0)

x1=x2=-b/(2*a); else {

x1=(-b+sqrt(d))/(2*a);

11

x2=(-b-sqrt(d))/(2*a); }

cout<<”此方程的两个根为:”<

cout<<”x1=”<

}

四、编写下列程序

1. 某城市为鼓励节约用水,对居民用水量作如

下规定:若每人每月用水量不超过2吨,则按0.3元收费;若大于2吨但不超过4吨,则其中2吨按0.3元收费,剩余部分按每吨0.6元收费;若超过4吨,则其中2吨按0.3元收费,再有2吨按0.6元收费,剩余部分按每吨1.2元收费。试根据一户居民的用水量和该户人口数计算出应交纳的水费。

2. 某班级学生进行百米跑测试,规定成绩在12

秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,分别统计出成绩为优秀、达标和不达标各多少人?各占学生总数的百分比是多少?

210

3. 计算1+3+3+... +3的值。

222

4. 求满足不等式2+4+? +n<1000的最大n

值。

5. 求出从键盘上输入的10个整数中的最大值。 6. 已知6<=a<=30,15<=b<=36,求满足不定方程

2n+5b=126的全部整数组解。如(13,20)就是一个整数组解。

7. 假定有100名中小学生参加义务植树活动,

共植树100棵,其中高中生每人值3棵,初中生每人植两棵,小学生每两人植1棵。并且已知参加植树的高中、初中和小学生的人数均不小于10人,问他们各为多少人?

8. 已知y=1+(1/2)x+(1/3)x2+?+(1/10)x9,求

每取一个值时所对应的y值,其中x的每个值由键盘输入,直到输入终止标准-100为止。 9. 在输出窗口中显示出如下图形:

*********** ********* ****** *** *

第四章 数组和字符串 一、填空题

1. 数组元素a[i]是该数组中的第______个元

素。

2. 元素类型为int的数组a[10]共占用______

字节的存储空间,其中a[5]元素的字节地址为______。

3. 元素类型为double的二维数组a[4][6]共占

用______字节的存储空间,其中a[2][5]元素的字节地址为______。

4. 元素类型为char的二维数组a[10][30]共占

用______字节的存储空间,其中a[3][4]元素的字节地址为______。

5. 假定对数组a[]进行初始化的数据为

{2,7,9,6,5,7,10},则a[2]和a[5]分别被初始化为______和______。

6. 假定对二维数组a[3][4]进行初始化的数据

为{{3,5,6},{2,8},{7}},则a[0][0],a[1][1]和a[2][3]分别被初始化为______,______和______。

7. 存储字符’a’和字符串“a”分别需要占用

______和______个字节。

8. 空串的长度为______,存储它需要占用

______个字节。

9. 字符串”\\’a\\’xy=4\\n”的长度为______。 10. 字符串”a:\\\\xxk\\\\数据”的长度为______。 11. 对于一个长度为n的字符串,需要占用

______个字节,用于存储该字符串的字符数组的长度至少为______。 12. 若a是一个字符数组,则cin>>a表示从键盘

上读入一个______到数组a中,cout<

13. 一个二维字符数组a[10][20]能够存储

______个字符串,每个字符串的长度至少为______。

14. 对一个一维字符数组a进行初始化的数据

为”12345”,则a[0]和a[3]元素对应的初值分别为______和______。

15. 对一个二维字符数组a进行初始化的数据为

{“123”,“456”,“789”},则a[1]和a[4]元素对应的初始字符串分别为______和______。

16. strlen(“apple”)的值为

______,strcmp(“a”,”A”)的值为______。 17. 假定字符数组a中保存的字符串为”abc”,

则调用strcat(a,”def”)后a中保存的字符串变为______。

12

18. 若需要把一个字符串”aaa”赋值到字符数组

a中,则需要执行______的函数调用实现。 19. 假定字符数组a中所存的字符串为

“abcdbcdf”,则strchr(a,’c’)的值比strrchr(a,’c’)的值小______。 20. 假定字符数组a 中的所存字符串为”

abcdedf”,则strstr(a,’cd’)的返回值比a的值大______。

21. 使用”type int integer;”语句把______

定义为______的别名,以后使用integer定义的对象具有______类型。

22. 使用”type int AA[10];”语句定义______

为含有______个______型元素的数组类型。 23. 使用”type char BB[10][50];”语句定义

______为含有______行______列共______个______型元素的数组类型。

二、写出下列程序运行后的输出结果并上机验证 1. #include

void main() {

int

a[10]={12,39,26,41,55,63,72,40,83,95};

int i1=0,i2=0;

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

if(a[i]%2==1)i1++;else i2++; cout<

2. #include

void main() {

int a[8]={36,25,48,14,55,40,32,66}; int b1,b2; b1=b2=a[0];

for(int i=1;i<8;i++) if(a[i]>b1) {

if(b1>b2) b2=b1; b1=a[i]; }

cout<

3. #include

void main() {

int a[8]={36,25,48,14,32,66}; int b1,b2;

b1=b2=a[0];

for(int i=1;i<8;i++) if(a[i]

if(b1

cout<

}

4. #include

void main() {

char a[]=”abcdabcabfgacd”; int i1=0,i2=0,i=0; while(a[i]) {

if(a[i]==’a’) i1++; if(a[i]==’b’) i2++; i++; }

cout<

5. #include

void main() {

char a[]=”abcdabcabdaeff”; int b[5]={0},i=0; while(a[i]) {

switch(a[i]) {

case ‘a’: b[0]++;break; case ‘b’: b[1]++;break; case ‘c’: b[2]++;break; case ‘d’: b[3]++;break; default: b[4]++; } i++; }

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

6. #include

void main()

{

int

a[10]={76,83,54,62,40,75,90,92,77,84}; int b[4]={60,70,90,101}; int c[4]={0};

for(int i=0;i<10;i++) {

int j=0;

while(a[i]>=b[j]) j++; c[j]++; }

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

}

7. #include

void main() {

int

a[3][4]={{1,2,7,8},{5,6,11,12},{9,10,3,4}};

int m=a[0][0]; int ii=0,jj=0;

for(int i=0;i<3;i++) for(int j=0;j<4;j++) if(a[i][j]>m)

{ m=a[i][j]; ii=i; jj=j; }

cout<8. #include

#include void main() {

char a[5][10]={“student”,”worker”,”cadre”,”soldier”,”peasant”}; char s1[10],s2[10];

strcpy(s1,a[0]);strcpy(s2,a[0]); for(int i=1;i<5;i++) {

if(strcmp(a[i],s1)>0) strcpy(s1,a[i]);

if(strcmp(a[i],s2)<0) strcpy(s2,a[i]); }

cout<

13

9. #include

const int N=10;

int BinarySearch(int a[N],int x) {

int low=0,high=N-1; int mid;

while(low<=high) {

mid=(low+high)/2;

if(x==a[mid]) return mid; else if(x

return -1; }

void main() {

int

b[N]={15,26,37,45,48,52,60,66,73,90};

int c[4]={48,26,73,80}; int I;

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

cout<

三、指出下列每个函数的功能 1. void f1(int a[],int n)

{

for(int i=0;i

{

int x=a[i]; a[i]=a[n-i-1]; a[n-i-1]=x; } }

2. void f2(int a[],int n)

{

int i; double sum=0;

for(i=0;i

for(i=0;i

if(a[i]>=sum) cout<

3. void f3(char a[])

{

int I,c[5]={0};

for(i=0;a[i];i++) switch(a[i]) {

case ’,’: c[0]++;break; case ’;’: c[1]++;break; case ’(’:

case ’)’: c[2]++;break; case ’[’:

case ’]’: c[3]++;break; case ’{’:

case ’}’: c[4]++;break; }

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

}

4. void f4(char a[M][N])

{

int c1,c2,c3;

c1=c2=c3=0;

for(int i=0;i

if(srlen(a[i])<5) c1++; else

if(strlen(a[i])>=5&&strlen(a[i])<15) c2++;

else c3++;

cout<

四、编写下列程序并上机运行

1. 有一个数列,它的第一项为0,第二项为1,

以后每一项都是它的前两项之和,试产生出此数列的前20项,并按逆序显示出来。

2. 从键盘上输入一个字符串,假定该字符串的

长度不超过30,试统计出该串中所有十进制数字字符的个数。

3. 首先从键盘上输入一个4行4列的一个实数

矩阵到一个二维数组中,然后求出主对角线上元素之乘机。

4. 已知一个数值矩阵为{{3,8,2,9} {4,7,

3,6},{5,2,8,4}},求出该矩阵的转置矩阵并输出出来,其中转置矩阵中的[i][j]位置上的元素等于原矩阵中的[[j][i]位置上的元素。

5. 已知一个矩阵A为

{{3,0,4,5},{6,2,1,7},{4,1,5,8}},另一个矩阵B为

{{1,4,0,3},{2,5,1,6},{0,7,4,4},{9,3,6,0

14

}},求出A与B的乘机矩阵C[3][4]并输出出

3

来,其中C中的每个元素C[i][j]等于∑k=0 A[i][k]*B[k][j]。

6. 首先让计算机随机产生出10个两位正整数,

然后按照从小到大的次序显示出来。

7. 从键盘上输入一个字符串,假定字符串的长

度小于80,试分别统计出每一种英文字母(大,小写等同看待)的个数并输出出来。

8. 某学校有12名学生参加100米短跑比赛,

每个运动员号和成绩如4-4所示,请按照比赛成绩排名并输出,要求每一行输出名次、运动员号和比赛成绩三项数据。

表4-4 100米短跑比赛成绩 运动员号 001 002 010 011 023 025 成绩(秒) 13.6 14.8 12.0 12.7 15.6 13.4 运动员号 031 036 037 102 325 438 成绩(秒) 14.9 12.6 13.4 12.5 15.3 12.7

第五章 指针 一、填空题

1. 一个指针类型的对象占用内存的______个字节

的存储空间。

2. 一个指针指向一个数据对象,它保存着该数据对

象的______,若数据对象为DataType类型,则该指针的类型为______。

3. 若要把一个整形指针p转换为字符指针,则采用

的强制转换表达式为______。

4. 假定一个数据对象为int *类型,则指向该对象

的指针的类型为______。

5. 假定p是一个指向整数对象的指针,则用______

表示该整数对象,用______表示指针变量p的地址。 6. 假定p是一个指针,则*p++运算首先访问______,

然后使______的值增1。

7. 假定p是一个指针,则(*p)++运算首先访问

______,然后使______的值增1。

8. 假定p所指对象的值为25,p+1所指对象的值为

42,则*p++的值为______。

9. 假定p所指对象的值为25,p+1所指对象的值为

42,则*++p的值为______。

10. 假定p所指对象的值为25,p+1所指对象的值为

42,则执行(*p)++运算后,p所指对象的值为______。

11. 假定p所指对象的值为25,p+1所指对象的值为

42,则执行*(p)++或*p++运算后,p所指对象的值为______。

12. 假定a是一个一维指针数组,则a+i所指对象的

地址比a大______字节。

13. 假定a是一个一维数组,则a[i]的指针访问方式

为______。

14. 假定a是一个一维数组,则a[i]对应的存储地址

(以字节为单位)为______。

15. 一个数组的数组名实际上是指向该数组______元

素的指针,并且在任何时候都不允许______它。 16. 假定指向一维数组b[10]中元素b[4]的指针为p,

则p+3所指向的元素为______,p-2所指向的元素为______。

17. 若要定义整形指针p并初始指向x,则所使用的定

义语句为______。

18. 若p指向x,则______与x的表示是等价的。 19. 在一个二维数组int a[m][n]中,包含的一维元

素a[i]的类型为______,访问a[i]时返回的类型为______。

20. 假定一个二维数组为c[5][8],则c[3]的值为二

维元素______的地址,c[3]+2的值为二维元素______的地址。

21. 假定p为指向二维数组int d[4][6]的指针,则p

的类型为______。

22. 假定一个二维数组为char f[10][20],则一维元

素f[i]的类型为______,访问a[i]时返回值的类型为______,其值是元素______的地址。

23. 假定a是一个二维数组,则a[i][j]的指针访问方

式为______。

24. 若要把整形变量y定义为x的引用,则所使用的

定义语句为______。

25. 若y是x的引用,则对y的操作就是对______的

操作。

26. 若y是x的引用,则&y和&x的值______,即为变

量______的地址。

27. 执行int *p=new int 操作可得到一个动态分配

的整型对象______。

28. 执行int *p=new int [10]操作,使p指向动态

分配的数组中下标为______的元素,该元素可表示为______或______。

29. 执行 char *p=new char(‘a’)操作后,p所指

向的数据对象的值为______。

15

for(int i=0;i

}

template

void List::OutMax() {

int k=0;

for(int i=1;i

if(list[i]>list[k])k=I;

cout<<”Maximun:”<

template

void List::OutMin() {

int k=0;

for(int i=1;i

if(list[i]

cout<<”Minimum:”<

template

void List::OutMean() {

DataType s=list[0]; for(int i=1;i

cout<<”Mean:”<

void main() {

int a1[6]={4,7,6,2,5,9}; AA

a2[4]={{“xxk”,46},{“wr”,44},{“nch”,39},{“shyf”,48}}; List b1{a1,6};

b1.OutMax();b1.OutMin();b1.OutMean(); List b2(a2,4);

b2.OutMax(); b2.OutMin(); b2.OutMean(); }

第十章 C++流 一、单选题

1. 当使用ifstream流类定义一个流对象并打开一

个磁盘文件时,文件的隐含打开方式为______。 A.ios::in B. ios::out C. ios::in|ios::out D.ios::binary

2. 当使用ofstream流类定义一个流对象并打开一

个磁盘文件时,文件的隐含打开方式为______。

A.ios::in B. ios::out C. ios::in|ios::out D.ios::binary

3. 当使用fstream流类定义一个流对象并打开一个

磁盘文件时,文件的隐含打开方式为______。 A.ios::in B. ios::out C. ios::in|ios::out D.没有

4. 当需要使用iotrstream流类定义一个流对象并

联系一个字符串时,应在文件开始使用#include命令,使之包含______文件。

A. iostream.h B.iomanip.h C. fstream.h D. strstrea.h

5. 当需要使用ostrstream流类定义一个流对象并

联系一个字符串时,应在文件开始使用#include命令,使之包含______文件。

A.iostream.h B.stdlib.h C.strstrea.h D.fstream.h 二、填空题

1. 在C++流类库中,根基类为______。

2. 在C++流类库中,输入流类和输出流类的名

称分别为______和______。

3. 若要在程序文件中进行标准输入输出操作,

则必须在开始的#include命令中使用______头文件。

4. 若要在程序文件中进行文件输入输出操作,

则必须在开始的#include命令中使用______头文件。

5. 当从字符文件中读取回车和换行两个字符

时,被系统看做为一个______。

三、给出下列每个程序或函数的执行结果

1. void xxk1()

{

int x,y; x=20;y=70; cout<<”dec:”<

2. #include

void main() {

struct AB{

char aa[15]; int bb; }; AB a[4]={ {“Apple”,25},{“Peach”,40},

31

{“Pear”,36},{“Tomato”

,62} };

cout.setf(ios::left); for(int i=0;i<4;i++) {

cout< cout<cout<

}

3. void xxk2()

{

double radius,area;

radius=2.5;

area=3.14159*radius*radius; cout<

cout<cout<

cout<cout<

cout<

cout<4. void xxk3()

{

double radius,area; radius=2.5;

area=3.14159*radius*radius;

cout<cout.setf(ios::showpoint); cout.precision(4);

cout<cout.unsetf(ios::showpoint); cout<

cout<}

5. void xxk4()

{

char a[]=”36 94 135 -1”; istrstream str(a); int k; str>>k;

while (k!=-1)

{

cout<>k; } }

四、写出下列每个程序或函数的功能 1. #include

#include #include void JA(char *fname) {

ofstream fout(fname); char a[20]; cin>>a;

while(strcmp(a,”end”)!=0)

{

fout<>a; }

fout.close(); }

2. void wr1(char *fname)

{

ofstream file(fname); int x;

cout<<”input data:”<

cin>>x;

if(x!=-1) file<

file.close(); }

32

3. void wr2(char *fname)

{

ifstream

file(fname,ios::in||ios::nocreate); int x;

while (file>>x) cout<

4. void wr3(char *fname)

{

ofstream file(fname); char a[80];

cout<<”input text:”<

{

if(cin.getline(a,80)) file<

break; }

file.close(); }

5. void wr4(char *fname)

{

ifstream

file(fname,ios::in|ios::nocreate); int m,n=0;

file.seekg(0,ios::end); m=file.tellg(); file.seekg(0); char ch;

file.get(ch); while(ch!=EOF)

{

if(ch!=’’&&ch !=’\\n’) n++;

file.get(ch); }

cout<<”m=”<

6. void wr5(char *fname,Student a[],int n)

{

ofstream file(fname,ios::binary);

for(int i=0;i

*)&a[i],sizeof(Student)); file.close(); }

7. void wr6(char *fname)

{

Student x,cmp={””,””,0}; ifstream

file(fname,ios::in|ios::nocreate|ios::binary);

while (1)

{

if(file.read((char*)&x,sizeof(Student))) {

if (x.grade>cmp.grade) cmp=x; } else

break; }

if(cmp.grade==0)

cout<<”file is empty!”<

cout<

五、按照下面每个题目的要求编写出相应的函数

1. 利用一个字符文件保存100以内的所有素

数。

2. 利用一个字节文件保存20个100以内的随机整数,要求保存的所有值各不相同。

33

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

Top