《C++语言程序设计》综合练习与期末复习题

更新时间:2024-04-30 22:47:01 阅读量: 综合文库 文档下载

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

《C++语言程序设计》综合练习与期末复习题

说明:本综合练习题中的各数据类型长度均参照16位编译系统的相关规定。例如:整型(int)数据占用2个字节的存储单元。

一、语法选择题

1.由C++源程序文件编译而成的目标代码文件的缺省扩展名为( )。 A.cpp B.exe C.obj D.lik

2.设x和y均为bool类型,则x&&y为真的条件是( )。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假

3.设有int i;则表达式i=1,++i,++i||++i;i的值为 ( )。 A.1 B.2 C.3 D.4

4.设有int i;则表达式i=1,++i, i++&&++i; i的值为 ( )。 A.1 B.2 C.3 D.4

5.设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )。

A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,12 6.设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为 ( )。 A.1 B.2 C.63 D.0

7.设有说明int s[2]={0,1},*p=s; 则下列错误的C++语句是( )。 A.s+=1; B.p+=1; C.*p++; D. (*P)++;

8.若有char a[3]= {?A?,?\\0?,?D?},*P=a,i=2,j=4;则下列表达式值不是1的有( )。

A.strlen (a); B.j‖j; C.* (P+1); D.- -ⅰ; 9.表达式4‖3‖2‖1的值为( )。 A.1 B.2 C.3 D.4 10.表达式1&3&5&7的值为( )。 A.1 B.3 C.5 D.7

11.设a、b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是( )。

A.'A'&&'B' B.a<=b

C.c>=b||b+c&&b-c D. a<=b+c&&c>=a+b 12.若x和y都是int型变量,x=100,y=200,则下面程序片段cout<<(x,y)<

1

A.200 B.100

C.100 200 D.输出格式符不够,输出不确定的值

13.下面各语句中,能正确进行字符串赋值操作的语句行是( )。 A.char s[4][5]={\

B. char s[5]={'A','B','C','D','E'} C. Char *s; s=\D. char *s; cin>>s;

14.若有:int a[6]={4,5,6,9,5,7},*p=a, *q=p; 则对数组元素的错误引用是( )。

A. a[4] B. *(p+4) C. *a++ D. *q++ 15.下列不正确的转义字符是( )。 A.'\\\\' B.'\\\ C.'074' D.'\\0' 16.若有以下定义: char a; int b; float c; double d;

则表达式a*b+d-c*b值的类型为( )。 A. float B. int C. char D. double 17.表示关系x<=y<=z的C++语言表达式为( )。 A. (x<=y)&&(y<=z) B. (x<=y)AND(y<=z) C. (x<=y<=z) D. (x<=y)&(y<=z)

18.设x和y均为int型变量,则执行下面的循环后,y值为( )。 for(y=1,x=1;y<=50;y++) { if(x>=10)}break; if (x%2==1)

{ x+=5; continue;} x-=3; }

A.2 B. 4 C. 6 D. 8 19.给出以下定义:

char x[ ]=\

char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。 A.数组X和数组Y等价 B.数组X和数组Y的长度相同

C.数组X的长度大于数组Y的长度 D.数组X的长度小于数组Y的长度 20.以下叙述中不正确的是( )。

A.在不同的函数中可以使用相同名字的变量

2

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内的复合语句中定义的变量在本函数范围内有效 21.假定a和b为int型变量,则执行以下语句后b的值为( )。 a=1; b=10; do

{ b-=a; a++; } while (b--<0);

A. 9 B. –2 C. -1 D. 8

22.对于结构中定义的成员,其隐含访问权限为( )。 A. public B. protected C. private D. static

23.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )。

A.k=*P1+*P2; B.p2=k;

C.P1=P2; D.K=*P1 * (*P2); 24.设有如下定义:

int arr[]={6,7,8,9,10}; int * ptr;

则下列程序段的输出结果为( )。

ptr=arr;

* (ptr+2)+=2;

cout<<*ptr<<*(ptr+2)<

A.8,10 B.6,8 C.7,9 D.6,10 25.执行以下程序段后,m的值为( )。 int a[2][3]={ {1,2,3},{4,5,6} }; int m,*p; p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

A. 15 B. 14 C. 13 D. 12

26.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。

A. ios::in B. ios::out C. ios::in | ios::out D.没有

27.设有定义 int (*ptr)(); 则以下叙述中正确的是( )。 A. ptr是指向一维数组的指针变量 B. ptr是指向int型数据的指针变量

C. ptr是指向函数的指针,该函数返回一个int型数据

3

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

28.设有以下说明和定义: typedef union

{ long i; int k[5]; char c; }DATE; struct date

{ int cat; DATE cow; double dog; } too; DATE max;

则下列语句的执行结果是( )。

cout<<(sizeof (struct date ) +sizeof(max))<

{ char a[]=\, b[]=\ char *p1,*p2; int i;

p1=a; p2=b; for(i=0;i<7;i++)

if(*(p1+i)==*(p2+i)) cout<<*(p1+i); }

输出结果是( )。

A. gm B. rg C. or D. ga 30.执行以下程序后的输出结果为( )。 viod fun (int a,int b,int c)

{ a=4; b=5; c=6;a=b+c;b=c+a;c=a+b;} main()

{ int x=10, y=20,z=30; fun (x,y,z);

cout<

A.30,20,10 B.10,20,30 C.11,17,28 D.4,5,6 31.执行以下程序后的输出结果为( )。 int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main()

{ int a, b, c, d; a=30; b=50;

fun(a,b,&c,&d);

4

cout<

A.50,30 B.30,50 C.80,-20 D.80,20

32.设x和y均为int型变量,则以下语句x+=y; y=x-y; x-=y; 的功能是( )。

A.把x和y按从大到小排列 B.把x和y按从小到大排列 C.无确定结果

D.交换x和y中的值

33.以下程序的输出结果是( )。

main()

{ int a=12,b=12;

cout<<(--a)<<” ”<<(++b)<

A.10 10 B.12 12 C.11 10 D.11 13 34.以下程序运行后,输出结果是( )。 main()

{ char *s=\ s+=2;

cout<

A.cde B.字符c的ASCII码值 C.字符c的地址 D.出错 35.当执行以下程序段时( )。

x=-1;

do { x=x*x;} while( !x);

A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无限次 D.系统将提示有语法错误 36.执行以下程序后,输出的结果是( )。

main() { int y=10;

do {y--;} while(--y); cout<<(y--)<

A.-1 B.1 C.8 D.0

37.若有 int a; 则表达式语句 a+=a -=a*a; 等价于下列哪组表达式语句( )。

A. a+a; a*a; B.a=a+a; a=a-a*a;

5

C. a=a+a-a*a; D.a=a-a*a; a=a+a; 38.设有如下C语句: struct node { int val;

struct node *next;

};

struct node sa[3]={ {5},{7},{9} },*sp;

sa[0].next=sa+1; sa[1].next=sa+2; sa[2].next=NULL; sp=sa;

则下面哪个表达式的值是6?( )。 A. ++sp->val B. sp->val++ C. (*sp).val++ D. sp++->val

39.当需要把一个带初始化的变量定义为常值变量时,则应在该语句的前面加上关键字( )。

A.static B.const C.continue D.extern 40.假定一个字符串的长度为n,则定义存储该字符串的字符数组的长度至少为( )。

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

41.假定AB为一个类,则该类的拷贝构造函数的正确声明是( )。 A.AB(AB x); B. AB(AB &); C. AB(AB *); D. AB&(AB & x);

42.当需要打开A盘上的xxk.dat文件用于输入时,则定义文件流对象的语句为( )。

A. fstream fin(“A:\\\\xxk.dat”); B. ofstream fin(“A:\\\\xxk.dat”);

C. ifstream fin(“A:\\\\xxk.dat” , ios::app); D. ifstream fin(“A:\\\\xxk.dat” , ios::nocreate);

43.当需要将一个函数 bool isnumber (char c) ; 声明为内联函数时,则此内联函数的函数原型为( )。

A. enum bool isnumber (char c) ; B. define bool isnumber (char c) ; C. inline bool isnumber (char c) ; D. extern bool isnumber (char c) ;

44.在下面的函数声明中,存在着语法错误的是( )。 A. void BC ( int a , int ); B. void BD ( int , int ); C. void BE ( int , int=5 ); D. void BF ( int x ; int y ); 45.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( )。

6

A.AB operator+(AB &a ,AB &b); B. AB operator+(AB &a ); C. operator+(AB a ); D. AB & operator+( );

46.在下列的一维数组定义中,哪一个有语法错误的( )。 A.int a[]={1,2,3}; B.int a[10[={0}; C.int a[]; D.a[5];

47.假定AB为一个类,则该类的拷贝构造函数的调用语句为:( )。 A.AB x,y( x); B. AB x,y; C. AB x,y(AB &); D. AB x,y(AB &x); 48.下面的哪一个保留字不能作为函数的返回类型? A.void B.int C.new D.long

49.假定a为一个整型数组名,则元素a[4]的字节地址为( )。 A. a+4 B.a+8 C.a+16 D.a+32

50. 假定AB为一个类,则执行“AB a(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为( )。

A.3 B.4 C.6 D.9

二、语法填空题

1.执行 cout<

2.描述命题“A小于B或小于C”的表达式为 。

3.在C++中有二种参数传递方式: 和 。

4.定义重载函数时,应在参数个数、参数类型或参数次序上 。

5.类是用户定义的类型,具有类类型的变量称作 。

6.当建立一个新对象时,程序自动调用 。

7.设P是指向具有10个元素的一维数组的指针变量,该数组元素类型int,则指针变量P的定义为 。

8.若有int i=3,j=7; 执行cout<<(ⅰ+ +)<

9.当一个成员函数被调用时,该成员函数的 指向调用它的对象。

10.拷贝初始化构造函数使用 来初始化创建中的对象。

7

11.一个C++函数由两部分组成,即: 和 。

12.C++中函数定义的格式是 。

13.已知一函数的定义是:char *Hi (const char *s ) {cout<<”Hi!”<

14.一个C++程序总是从 开始执行。

15.C++语言程序中出现的/*??*/部分或//??部分所起的作用是 。

16.C++语言中数组元素的访问方式有两种,即: 和 。

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

18.执行typedef int ABC[10] ; 语句把ABC定义为具有10个整型元素的 。

19.假定要访问一个结构指针p 所指对象中的b 指针成员所指的对象,则表示方法为 。

20.设px 是指向一个类动态对象的指针变量,则执行delete px ; 语句时,将自动调用该类的 。

21.C++规定:在每一个字符串的结尾加上一个 ,以便系统据此判断字符串是否结束。

22.C++语言中数据类型的转换有两种,即: 和 。

23.C++语言规定了运算符的优先级和结合性,其结合性分为 和 。

24.对一个类中的数据成员的初始化可以通过构造函数中的 实现,也可以通过构造函数中的 实现。

25.假定AB为一个类,则执行 AB a[10] ; 语句时,系统自动调用该类构造函数的次序为 。

26.假定类AB中有一个公用属性的静态成员bb, 在类外不通过对象名访问该成员 bb 的写法为 。

27.若有int a=4; float b=14.70; 则4/5的值为 ,4.0/5的值为 ;能正确表示a+b对a取余的表达式是 。

28.若有int x=4,y=7; 则表达式x+=y,x*=x+y的值为 。 29.x>1 && y!=0的相反条件为 。

30.过程化程序设计方法中,程序有三种基本结构,

8

即: 、 、 。

31.表达式?c?&&?d?的值为 ,表达式?c?&&?\\0?的值为 ,表达式!?c?||?c?<=?d?的值为 。

32.分支语句if(x>=y) max=x; else max=y; 用含条件运算符的赋值语句表示为 。

33.C++语言中所提供的循环控制语句有三种,即: 、 、 。

34.在C++中,若需要在程序文件中进行标准输入输出操作,则必须在开始加入预处理命令 ,若使用到数学库中的函数时,要在源程序的开始加入预处理命令 。

35.C++语言中用来存放变量地址的变量称作 。 36.在C++程序中,可以用两种方法实现一个字符串,即: 和 。

37.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为 。

38.int *p[10]; 的含义是 。 39.int (*p)( ); 的含义是 。 40.int &p; 的含义是 。 41.int **p; 的含义是 。 42.若有定义int a[10], *p=a; 则 p++的含义是 。

43.若有int a[4]={10,11,12,13},b,* p=a; 则 执行语句b=*p++; 后b的值是 ,接着执行语句b=*++p; 后 b的值是 ,再执行语句b=++*p; 后b的值是 。

44.定义一种新的类型INTEGER,使其与int 等价,则正确的表示方式为 。

45.定义一个符号常量EOF ,使其与-1等价,则正确的表示方式为 。

46.C++语言中根据数据的组织形式,可以将文件分为: 和 。

47.OOP是术语 的英文简称,OOP方法是软件工程学中结构化程序设计,过程化、模块化、数据抽象、信息掩蔽、知识表示、并行处理等概念的积累和发展,它所依赖的最基本的概念是 、 和 。

48.若需要把一个函数 void F( ); 定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: 。

9

49.在C++中用 代替了C语言中的带参数宏定义。 50.C++语言所提供的定义结构体、共用体和类等三种类型的关键字分别是 、 、 。

51.执行“cout<<43<

52.使用const 语句定义一个标识符常量时,必须同时对它进行 。

53.假定p所指对象的值是25,p+1所指对象的值是46,则执行“(*p)++;”语句后,p所指对象的值为 。

54.假定px是指向一个有10个元素的类动态数组空间的指针变量,则执行“delete px;”语句时,将自动调用该类的析构函数 次。

55.变量分为全局和局部两种, 变量没有赋初值时,其值为不确定。

56.假定a 为一个二维数组,则a[i][j]的指针访问方式为 。

57.假定一个结构类型的定以为“struct D{long a;union {int b;double c;};D *d[2];};”则该类型的大小为 字节。

58.p 是指向 int 型变量x的指针变量,其定义语句表示为 。 59.假定p 是一个指向整型一维数组的指针变量,在取出p 所指的元素值后p 自动指向下一个元素的表达式为 。

60.将f=i+5; i=i+1; 用一个赋值语句表示出来为 。

三、给出下列程序运行后的输出结果 (1) #include \

void main() {int s=0;

for(i=0;;i++)

{ if(s>50) break; if(i%2= =0) s+=i;}

cout<<”i,s=”<

(2) #include

void main()

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

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

10

i++;}

cout<

(3) #include

main()

{int a[9]={2,4,6,8,10,12,14,16,18}; for(i=0;i<9;i++)

{ cout<

if((i+1)%3= =0) cout<

}

}

(4) #include

void LE(int *a,int *b){ int x=*a;

*a= *b; *b=x;

cout<<*a<

void main()

{int x=10,y=25;

LE(&x,&y);

cout<

}

(5) #include \

class A{ int a,b; public:

A(){a=b=0;} A(int aa,int bb){ a=aa; b=bb;

cout<

void main()

{A x,y(2,3),z(4,5); }

(6) #include \

temple class FF{

TT a1,a2,a3;

11

public:

FF(TT b1,TT b2,TT b3){ a1=b1;a2=b2;a3=b3; }

TT sum(){return a1+a2+a3;} ];

void main()

{FF x(2,3,4),y(5,7,9);

cout<

}

(7) #include \

void SB(char ch){ switch(ch){

case ? a?:case ?A ?: cout<<”well!”;break; case ? b?:case ?B ?: cout<<”good!”;break; case ? c?:case ?C ?: cout<<”pass!”;break; default: cout<<”bad!”;break; void main()

{char a1=?b?,a2=?C?,a3=?f?; SB(a1);SB(a2);SB(a3);SB(?A?); cout<

}

若main()函数改为:

void main()

{char a[6]=”Abcaf”;

for(int i=0;a[i];i++) SB(a[i]);

}

(8) #include

#include void main() {char

*a[5]={“student”,”worker”,”cader”,”solider”,”peasant”};

char p1,p2; p1=p2=a[0];

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

{ if(strcmp(a[i],p1)>0) p1=a[i]; if(strcmp(a[i],p2)<0) p2=a[i]; }

cout<

12

(9) #include \

int a=5; void main()

{int a=10,b=20;

cout<,a<

for(int i=1;i<6;i++) { a+=i;b+=a;}

cout<

cout<

(10) #include \

int LB(int *a,int n){ int s=1;

for(int i=0;i

return s;

}

void main()

{int a[]={1,2,3,4,5,6,7,8}; int b=LB(a,5)+LB(&a[3],3); cout<<”b=”<

(11) #include < iostream.h>

#include struct Worker{ char name[15];

int age; float pay; };

void main() {Worker x;

char *t=”liouting”; int d=38; f=493; strcpy(x.name,t) x.age=d;x.pay=f;

cout<

13

(12) #include \ class A{

int a;

public:

A(int aa=0){a=aa;}

~A(){cout<<”Destructor A!”<

};

class B:public A{

int b;

public:

B(int aa=0,int bb=0):A(aa){b=bb;}

~B(){cout<<”Destructor B!”<

void main()

{B x(5),y(6,7); }

(13) #include

#include

double SD(int a,int b,char op){ double x;

switch(op){

case ?+?:x=double(a )+b;break;

case ?-?:x=double( a)-b;break; case ?*?:x=double(a)*b;break; case ?/?:if(b)x=double(a)/b;break; else exit(1); default:exit(1); } return x; } void main() {int x=25,y=8;

cout<

}

(14) #include

void main()

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

14

b1=b2=a[0];

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

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

}

cout<

若将>全改成<,结果如何? (15) #include

void WF(int x,int y){ x=x+y; y=x+y;

cout<<”sub:”<<”x,y=”<

void main() {int x=8,y=15;

cout<<”main:”<<”x,y=”<

cout<<”main:”<<”x,y=”<

cout<<”main:”<<”x,y=”<

}

(16) #include

void LC(int a,int b){

int x=a; a=b; b=x;

cout<

void main()

{int x=10,y=25;

LC(x,y); cout<

}

若将LC的形参表改为:LC(int &a,int &b)则结果如何?(17) #include

#include struct Worker{ char name[15];

int age; float pay;

15

};

bool operator = =(Worker &r1, Worker &r2){ if(strcmp(r1.name,r2.name)= =0) return true; else return false; }

void main()

{ Worker a[4]={{“abc”,25,420},{“def”,58,638}, {“ghi”,49,560},{“jkl”,36,375}};

Worker x={“ghi”}; for(i=0;i<4;i++)

if(a[i]= =x) break;

cout<

(18) #include

void main()

{int a[8]={3,5,7,9,11,13,15,17}; int *p=a;

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

{ cout<

if ((i+1)%4= =0) cout<

} }

(19) #include \

void main() {int s=0;

for(i=1;i<=6;i++) s=+i*i;

cout<<”s=”<

(20) #include

void LG(int*&a,int &m){ a=new int[m];

int* p=a;

for(int i=0;i

void main() { int *b,n=5;

16

?<

for(int i=0;i

cout<

四、写出下列每个函数的功能 (1) double SF(double x,int n){ //n为大于等于0的整数 double p=1,s=1;

for(int i=1;i<=n;i++){ p*=x;

s+=p/(i+1); } return s; }

(2) float FH(){

float x,y=0,n=0; cin>>x;

while(x!=-1){n++;y+=x;cin>>x;} if(n= =0)return y;

else return y/n; }

(3) #include {

for(int i=0;i

for(int j=i+1;j int x=a[i];a[i]=a[k];a[k]=x; } }

(4) #include #include void JB(char *fname){ //称为fname文件

//假定文件中保存着一批字符串,每个字符串长度均小于20

ifstream fin(fname); char a[20]; int i=0;

while(fin>>a){

cout<

cout<<”i=”<

(5) #include

17

void SA(int a,int b){

if(a>b) return 1;

else if(a= =b)return 0; else return –1;

}

(6)float FI(int n){ / /n>=1

float x,y=0; do{

cin>>x;n--;y+=x*x; }while(n>0); return y; }

(7)template

void WE(Type a[],Type b[],int n){ for(int i=0;i

(8)struct StrNode{

char name[15]; StrNode *next; };

void QB(StrNode *&f,int n){

if(n= =0){f=NULL;return;} f=new StrNode; cin>>f->name; StrNode *p=f; while(--n){

p=p->next=new StrNode; cin>>p->name;

}

p->next=NULL; }

(9) struct StrNode{

char name[15]; StrNode *next; };

void QC(StrNode *f){

while(f) {cout<name<next;} }

(10)int SC(int a,int b,int c){

if(a>=b && a>=c)return a; if(b>=a && b>=c)return b;

18

if(c>=a && c>=b)return c;

}

(11)bool WB(int a[],int n,int x){

for(int i=0;i

if (a[i]= =x)return true; return false; }

(12)#include int *LJ(int a[],int n){

int k=0;

for(int i=1;ia[k]) k=i; return &a[k];

}

(13)int SE(int n){

// n>=1

int x; cin>>x; if(n= =1) return x; int m=x;

while(--n){cin>>x;m+=x;} return m;

}

(14)int WC(int a[],int n,int k){

int c=0;

for(int i=0;i=k) c++; return c; }

(15) #include

#include #include

int JB(char *fname,char *key)

{//假定文件中保存着一批字符串,每个字符串长度均小于20 ifstream fin(fname);//称为fname文件 char a[20]; int i=0;

while(fin>>a)

if(strcmp(a,key)= =0) i++; fin.close(); return i; } (16) struct Worker{

char name[16]; int age;

19

float pay; };

istream &operator>>(istream &istr,Worker &x){ cout<<”请输入一个职工记录:”<>x.name>>x.age>>x.pay;

return iatr; }

(17)#include

void LI(int n){

int *a=new int[n];

for(int i=0;i>a[i];

for(i=n-1;i>=0;i--) cout<<*(a+i)<

}

(18) #include

#include #include int JC(char *fname) {//称为fname文件

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

while(strcmp(a,”end”)! =0) { fout<>a; }

fout.close(); }

五、根据要求直接编写一个程序、一个函数

(1)编写函数void selectsort(int a[],int n),使数组元素升序排列(用选择法)。

(2) 编制一个函数:此函数能对一维数组内存放的10个学生成绩求平均成绩。(形参用数组)

(3) 编制一个函数:此函数能对一维数组内存放的10个学生成绩求平均成绩。(形参用指针)。 (4)编写函数int FF(int a[],int n),求出数组a的n个元素中大于等于平均值的元素个数并返回。

(5)有如下两个函数实例:

double Max(double x,double y){return (x>y)?x:y;} int Max(int x,int y){return (x>y)?x:y;} 请写出函数摸板。

(6)将下列程序分别用do?while和for 循环结构进行改写。 main()

20

{int i, sum=0; i=1; while(i<=100) {sum=sum+i; i++; }

cout<

}

(7)编写程序,从保存整数的文本文件中”a:xxkl. dat”中依次取出每个数据并显示出来,同时统计并显示所有数据的个数。

(8)编写程序,把从键盘输入的一批整数(以-1作为终止输入的标志)保存到文本文件”a:xxkl.dat”中。

【参考答案】

说明:本综合练习题中的各数据类型长度均参照16位编译系统的相关规定。例如:整型(int)数据占用2个字节的存储单元。

一、语法选择题

1~5 :C,A,C,D,C 6~10:A,A,C,A,A 11~15:D,A,C,C,C 16~20:D,A,C,C,D 21~25:D,A,B,D,A 26~30:A,C,B,D,B 31~35:C,D,D,A,A 36~40:D,D,A,B,C 41~45:B,D,C,D,B 46~50:C,A,C,B,B 二、语法填空题

1.C 2.A

12.返回类型修饰符;函数名;(形式参数列表) ;函数体 13. char *Hi (const char *s ); 14. main函数的入口地址处

15.注释说明 以增加程序的可读性 16.下标方式;指针方式

17. *(a[ i ]+j) 或 *(*(a+i)+j) 18.数组类型

19. *(p->b) 或 *((*p).b) 20.析构函数

21.字符串结束标志?\\0?

22.自动类型转换; 强制类型转换

21

23.左结合性;右结合性 24.函数体;初始化表 25. 10 26. AB::bb

27. (int)(a+b)%a 或 int(a+b)%a 28. 198

29. x<=1 || y==0

30.顺序结构;选择结构;循环结构 31. 1;0;1

32. max=(x>=y) ? x : y;

33. while 语句;do?while 语句;for 语句

34. #include ;#include “math.h” 35.指针变量

36.用字符数组实现;用字符指针实现 37. AB( ){ }

38.定义指针数组p,它有10个指向整型数据的指针元素组成 39. p为指向函数的指针变量,该函数返回一个整型值 40.定义一个整型变量的引用

41.定义一个指针变量p,它指向一个指向整型数据的指针变量 42.指针变量p指向数组a中当前位置的下一个元素 43.10;12;13

44. typedef int INTEGER ; 45. #define EOF -1

46. ASCII码文件;二进制文件

47.面向对象程序设计方法;封装性;继承性;多态性 48. friend void F( ) ; 49.内联函数

50. struct;union;class 51.43-18=25 52.初始化 53.26 54.10 55.局部

56.*(*(a+i)+j) 57.20

58.int x,*p=&x; 59.*p++

60.f=(i++)+5;

22

三、给出下列程序运行后的输出结果 (1)i,s=15,56 (2)4 3

(3) 2 4 6 8 10 12 14 16 18 (4)25 10 25 10 (5)2 3 4 5 (6)9 21

(7)good! pass! bad! well! (8)worker cader (9)10 20

15 35 5 10 20 (10)b=240

(11)liuting 38 493 (12)Destructor B! 7

Destructor A! 6 Destructor B! 0 Destructor A! 5 (13)17 200 3.125 (14)66 55

(15)main:x,y=8,15

sub:x,y=23,38 main:x,y=16,15 sub:x,y=31,46 main:x,y=16,15 (16)25 10 10 25

修改后输出:25 10 25 10 (17)ghi 49 560

(18) 3 5 7 9 11 13 15 17 (19)s=91

(20)16 9 4 1 0

四、写出下列每个函数的功能

23

(1)计算x/2+x2/3+??+xn/(n+1)并返回。

(2)求出从键盘输入的n个数的平均值并返回。

(3)用选择排序法,将数组a 的前n个元素从小到大排序。 (4)从fname文件中输入一个个字符串,并显示出来,同时统计出字符串的个数。 (5)根据参数a和 b的大小决定返回值:a>b返回1,a

(6)求从键盘输入的n个数的平方和并返回。

(7)定义函数模板,将数组a的前n个元素赋值到数组b中。 (8)建立由n个结点组成的单链表。

(9)遍历链表,输出个结点的name 域保存的字符串。 (10)返回三个参数中的最大值。

(11)在数组a 中查找值为x的元素,若找到返回true,找不到则返回false。

(12)从数组a的n个元素中找出最大值,并将其地址返回。 (13)求从键盘输入的n个数的和并返回。

(14)从数组a的n个元素中统计出其值大于等于k的元素个数,并将其返回。

(15)从fname文件中输入一个个字符串,统计出与字符串key相同的字符串个数并返回。

(16)重载提取操作符,用于从输入流中输入一个Worker类型的记录到应用参数x中。

(17)利用动态数组空间,先输入n个元素的值,再反序输出。 (18)将从键盘输入的一批字符串依次写入fname文件中,直到输入end 为止。

五、根据要求直接编写一个程序、一个函数

本题解答见复习课。

24

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

Top