1、C+语言程序设计课程期末综合练习1C+语言程序设计课程期末综合练习 一、单选题 1. 由C+源程序文件编译而成的目标文件的缺省扩展名为(A. obj )。 2. 程序运行中需要从键盘上输入多于一个数据时,各数据之间需要使用( D. 空格或回车 )符号作为分隔符。 3. 设x是一个bool型的逻辑量,y的值为10,则表达式 x & y的值为( C. x的值 )。 4. 任何for语句都能够被改写为( D. while )语句。 5. break语句叫做( A. 中断退出循环或开关 )语句。 6. 在下面的一维数组定义中,( C. int a; )语句有语法错误。 7. 下面的( C. new )
2、保留字不能作为函数的返回类型。 8. 下面的函数声明中,( B. void BC(int a, char b); )是“void BC(int a, int b);”的重载函数。 9. 当一个字符指针指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( C. n-1 )。 10. 假定AB为一个类,则该类的拷贝构造函数的声明语句为( D. AB(AB&); )。 11. 下面的保留字( C. new )不能作为函数的返回类型。 12. C+源程序文件的默认扩展名为( A. cpp )。 13. 在下列的标识符常量的定义语句中,错误的定义语句是( C. const char ch; )。
3、 14. for循环语句一定能够被改写为( D. while )语句。 15. 假定a为一个数组名,则下面的( B. *+a )表达式有语法错误。 16. 在下面的二维数组定义中,只有( D. int a5=1,2,3,4,5; )语句是正确的。 17. 下面( B. AA(int a=0, int b); )的函数声明格式不正确。 18. 假定指针变量p定义为“int *p=new int30;”,要释放p所指向的动态数组空间,则使用下面的( D. delete p; )语句。 19. 假定要对结构类型AB定义加号运算符重载的普通函数,实现两个AB类型对象的加法,并返回相加结果,则该函数的声
4、明语句为( A. AB operator +(AB& a, AB& b); )。 20. 当需要使用ifstream流类定义一个流对象并联系一个磁盘文件时,应在文件开始使用#include命令,使之包含( D. fstream.h )头文件。 21. 枚举类型中的每个枚举常量的值都是一个( A. 整数 )值。 22设x和y均为bool量,则逻辑表达式x | y为假的条件是( C. x和y均为假 )。 23. 声明或定义一个内联函数时,必须在函数开始使用保留字( D. inline )。 24. 在下面的函数声明中,存在着语法错误的是( D. BC(int x=6, int y) )。 25.
5、假定a为一个整型数组名,则元素a4与( C. *(a+4) )的表示等价。 26. 循环语句“for(int i=0; i5的逻辑值为_假(false 或0)_。 6假定一个一维数组的定义为“char* a8;”,则该数组占用_32_个字节的存储空间。 7. 假定x=10,则表达式2+x+的值为_12 _。 8假定p所指对象的值为25,p+1所指对象的值为46,则*+p的值为_46_。 9. 假定要动态分配一个类型为int的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为int *r=_new intn; _。10. 设px指向一个类的动态分配的对象,则执行“delete px;”语
6、句时,将自动调用该类的_ 析构函数_。 11. 执行“cout”x1=”18*4;”语句后得到的输出结果为_ x1=72 _。12. 在c+语言中,用转义字符序列_ n_表示输出一个换行。 13int类型的大小为_ 4 _个字节。14假定y的值为5,则增量表达式+y的值为_ 6_。 15假定a的值为25,则算术表达式a%3的值为_1_。 16. 结束所在循环类语句或switch语句执行的中断语句的保留字为_break_。 17函数调用时,实参向形参的传送分为_引用_传送和值传送两种方式。 18. 假定a是一个一维数组,则ai的指针访问方式为_*(a+i)_。 19. 假定一个结构类型的定义为
7、”struct Cdouble a5; int n;”,则该类型的大小为_44_个字节。 20. 若要在程序中进行_文件_的输入输出操作,则必须在开始的#inlude预处理命令中使用fstream.h头文件。 21十进制数30表示成符合C+语言规则的十六进制数为_ 0x1E(字母x和E大小写均可)_。 22假定一个枚举类型的定义为“enum RBab,ac,ad,ae;”,则枚举常量ad的值为_2_。 23. 假定y=8,则执行y+*4运算后,y的值为_9_。24算术表达式+1对应的C+表达式为_ (x+y)/(2*x*y)+1_。 25. 关系表达式x=5 _。 26. 假定整数变量x=48
8、,则a/12的运算结果为_4_。 27. 假定一个二维数组的定义语句为“int a34;”,则该数组包含有_12_个整型元素。 28函数被调用时,实参向形参的传送分为引用传送和_值_传送两种方式。 29假定一个结构类型的定义为”struct Bint a5; char* b;”,则该类型的大小为_24_字节。 30. 在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的_构造函数_使其初始化。 三、写出下列每个程序运行后的输出结果 1. #include void main() int n=4,y=1; while(n-) y*=3; couty=yendl; 输出结果:y=8
9、1 2. #include void main() int a8=2,8,10,5,12,7,9,20; int c=0, i=0; while(i10) c+; i+; coutc=cendl; 输出结果:c=2 3. #include void main() int a5=3,6,9,12,8; for(int *p=a; p8) cout*p ; 输出结果:9 12 4. #include int LA(int a, int n) int s=0; for(int i=0;in;i+) s+=ai; return s; void main() int a5=5,2,8,6,4; int
10、b=LA(a,5); coutb=bendl; 输出结果:b=255. #include struct AB char aa15; int bb; ; void main() AB a4=Apple,25,Peach,40,Pear,36,Tomato,62; for(int i=0;i4;i+) if(ai.bb40) coutai.aa ; coutendl; 输出结果:Apple Pear 6. #include void main() int s1=0; for(int i=1; i=5; i+) s1+=2*i; cout”s1=”s1endl; 输出结果:s1=30 7. #inc
11、lude void main() int a6=6,9,12,18,15,20; int c=0; for(int i=0; i6; i+) if(ai%2=1) c+; coutc=cendl; 输出结果:c=2 8. #include void main() int a34=1,2,7,8,5,6,11,15,9,20,3,4; int m=a00; for(int i=0;i3;i+) for(int j=0;jm) m=aij; coutmendl; 输出结果:209. #include void main() int a=10, b=15, c; c=a+b; int b=a+20;
12、 c+=a+b; coutcendl; 输出结果:65 10. #include void main() int a8=6,19,4,12,20,5,18,25; int *p, s=0; for(p=a; pa+8;p+) if(*p10) s+=*p; coutsendl; 输出结果:15 11. #include void main() int s=0; for(int i=1;i=8;i+=2) s+=i*i; couts=sendl; 输出结果:s=84 12. #include void main() int i=1,s=0; while(s15) s+=i+; couti,sen
13、dl; 输出结果:6,1513. #include void main() int a8=36,25,48,14,55,20,47,82; int c1=0, c2=0; for(int i=0; i8; i+) if(ai50) c1+; else c2+; coutc1 c2endl; 输出结果:6 2 14. #include int LB(int *a, int n) int p=1; for(int i=0;in;i+) p*=*a; a+; return p; void main() int a5=1,2,3,4,3; coutLB(a,5)endl; 输出结果:72 15. #i
14、nclude struct Worker char name15; /姓名 int age; /年龄 float pay; /工资 ; void main() Worker x=wangfong,46,1640; Worker y, *p; y=x; p=&x; couty.age+10 pay*2b) return 1; else if(a=b) return 0; else return -1; 函数功能:比较两个整数a和b的大小,若ab则返回1,若a=b则返回0,若ab则返回-1。 2. int LK(int a, int n) float s=0; int i; for(i=0;in;
15、i+) s+=ai; s/=n; int m=0; for(i=0;i=s) m+; return m; 函数功能:求出数组a的n个元素中大于等于平均值的元素个数并返回。 3. int WD(int a, int n) int m=a0; for(int i=1;im) m=ai; return m; 函数功能:从数组a的n个元素中求出最大值并返回。 4. double FI(int n) /n为大于等于1的整数 double x,y=0; do cinx; y+=x*x; while(-n); return y; 函数功能:求出从键盘上输入的n个整数的平方和并返回。5. bool WE(in
16、t a, int b, int n) for(int i=0;in;i+) if(ai!=bi) break; if(i=n) return true; return false; 函数功能:判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回假。 6. int LK(int a, int n) double s=0; int i,m=0; for(i=0;in;i+) s+=ai; s=s/n; for(i=0;i=s) m+; return m; 函数功能:统计出数组an中大于等于其平均值的元素个数并作为函数值返回。 7. double FI(int n) /n
17、为大于等于1的整数 double x,y=0; do cinx; y+=x; while(-n); return y; 函数功能:求出从键盘上输入的n个整数的和并返回。 8. bool WE(int a, int b, int n) for(int i=0;in;i+) if(ai!=bi) break; if(i=n) return true; return false; 函数功能:判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回假。 9. int LK(int a, int n) double s=0; int i,m=0; for(i=0;in;i+) s+=ai; s=s/n; for(i=0;i=s) m+; return m; 函数功能:统计出数组an中大于等于其平均值的元素个数并作为函数值返回。五、按题目要求编写程序1. 已知6a30、15b36,求出满足不定方程2a+5b=126的全部整数组解。如(13,20)就是其中的一组解,并按此格式输出每组解。 #include void main() int a,b; for(a=6;a=30; a+) for(b=15;b=36;b+) if(2*a+5*b=126) cout(a,b)=0; i-) coutai ; cout0; i-) coutai,; couta0endl;