2022年C++语言程序设计期末复习题.docx
名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -C+语言程序设计期末复习题一、单项挑选题1. C+源程序文件的默认扩展名为 A ; C ;A. cpp B. exe C. obj D. lik2. 由 C+ 源程序文件编译而成的目标文件的默认扩展名为A. cpp B. exe C. obj D. lik B ;3. 由 C+ 目标文件连接而成的可执行文件的默认扩展名为A. cpp B. exe C. obj D. likB ;4. C+程序从上机到得到结果的几个操作步骤依次是 A. 编译、编辑、连接、运行 C. 编译、运行、编辑、连接B. 编辑、编译、连接、运行 D. 编辑、运行、编辑、连接细心整理归纳 精选学习资料 5. 以下标识符中不全是保留字的是(B ); 第 1 页,共 32 页 A. case for int B. default then whileC. bool class long D. goto return char6. 能作为 C+程序的基本单位是 C ;A. 字符B. 语句C. 函数D. 源程序文件7. 程序中主函数的名字为(A );A. main B. MAIN C. Main D. 任意标识符8. C+程序的基本模块为(D );A. 表达式B. 标识符C. 语句D. 函数9. 可用作 C+语言用户标识符的一组标识符是 B ; - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -A. void define +WORD B. a3_b3 _123 YNC. for -abc Case D. 2a DO sizeof D 符号作10. 储备以下数据,占用储备字节最多的是(D );A. 0 B. 0C. “0” D. 0.011. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用为分隔符;A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车12. 设”int a=12;,就执行完语句”a+=a*a; ”后, a 的值是 C ; A. 12 B. 144 C. 156 D. 288 13. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于 1,就以下能正确表示代数式的表达式是 D ;A. 1.0/a*b*c B. 1/a*b*c C. 1/a/b/floatc D. 1.0/a/b/c14. 设”int a=15,b=26; ” ,就”cout<<a,b; ” 的输出结果是 D ;A. 15 B. 26,15 C. 15,26 D. 2615. 设 x 是一个 bool 型的规律量, y 的值为 10,就表达式 x && y 的值为(C );A. 1 B. 0 C. 与 x 值相同 D. 与 x 值相反16. x>0 && x<=10 的相反表达式为(A );A. x<=0 | x>10 B. x<=0 && x>10 C. x<=0 | x<=10 D. x>0 && x>1017. x>0 | y=5 的相反表达式为(B );A. x<=0 | y.=5 B. x<=0 && y.=5 C. x>0 | y.=5 D. x>0 && y=518设 x 和 y 均为 bool 量,就 x && y 为真的条件是 A ;A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假细心整理归纳 精选学习资料 19设 x 和 y 均为 bool 量,就 x | y 为假的条件是 C ; 第 2 页,共 32 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -A. 它们均为真B. 其中一个为真C. 它们均为假D. 其中一个为假20. 字符串 ” a+b=12n” 的长度为(B );长度算的不是字节, “ 12” 算为 2A. 6 B. 7 C. 8 D. 921. 假定以下 x 和 y 均为 int 型变量,就不正确的赋值为(B ); X+ 没有意义A. x+=y+ B. x+=y+ C. x=+y D. +x=+y22 以下的符号常量定义中,错误的定义是(C );A. const M=10; B. const int M=20; C. const char ch; D. const bool mark=true;23. 循环语句“forint i=0; i<n; i+ cout<<i*i<< ;” 中循环体执行的次数为 C ;A. 1 B. n-1 C. n D. n+124. 在下面循环语句中循环体执行的次数为(B );forint i=0; i<n; i+ifi>n/2 break;A. n/2 B. n/2+1 C. n/2-1 D. n-1D );25. 在下面循环语句中内层循环体S 语句的执行总次数为(forint i=0; i<n; i+forint j=i; j<n; j+ S;A. n2B. n+1/2 C. nn-1/2 C D. nn+1/226. 在下面循环语句中循环体执行的次数为();int i=0,s=0; whiles<20 i+; s+=i;细心整理归纳 精选学习资料 A. 4 B. 5 C. 6 D. 7B ); 第 3 页,共 32 页 27. 在下面循环语句中循环体执行的次数为( - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -int i=0; do i+; whilei*i<10;细心整理归纳 精选学习资料 A. 4 B. 3 C. 5 D. 2a12 的值 第 4 页,共 32 页 28. 当处理特定问题时的循环次数已知时,通常采纳(A )来解决;A. for 循环B. while 循环C. do 循环D. switch 语句29. 循环体至少被执行一次的语句为(C );A. for 循环B. while 循环C. do 循环D. 任一种循环30. switch 语句能够改写为(B )语句;A. for B. if C. do D. while31. do 语句能够改写为(D )语句;A. 复合B. if C. switch D. while32. 在下面的一维数组定义中,哪一个有语法错误;( C )A. int a=1,2,3; B. int a10=0;C. int a; D. int a5;33. 在下面的字符数组定义中,哪一个有语法错误;(D );A. char a20= ” abcdefg” ; B. char a= ” x+y=55. ” ;C. char a15; D. char a10= 5 ;34. 在下面的二维数组定义中,正确选项 C ;A. int a5; B. int a5; C. int a3=1,3,5,2; D. int a10;35. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;” ,就元素为( C );a21 的值A. 2 B. 4 C. 6 D. 836. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;” ,就元素为(A ); - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -A. 0 B. 4 C. 8 D. 637. 如定义了函数 double *function, 就函数 function 的返回值为(B );A. 实数型 B.实数的地址 C.指向函数的指针 D.函数的地址 38. 以下说法中正确选项(B );A. C+ 程序总是从第一个定义的函数开头执行 B. C+ 程序总是从 main 函数开头执行 C. C+函数必需有返回值,否就不能使用函数 D. C+ 程序中有调用关系的全部函数必需放在同一个程序文件中 C );39. 以下表达中不正确选项(A. 在一个函数中,可以有多条 return 语句 B. 函数的定义不能嵌套,但函数的调用可以嵌套 C. 函数必需有返回值 D. 不同的函数中可以使用相同名字的变量 40. 函数重载是指(A );A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同41. 以下关于函数模板表达正确选项(C );A. 函数模板也是一个详细类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -42. 以下(C )的调用方式是引用调用;A. 形参和实参都是变量 C. 形参是引用,实参是变量B.形参是指针,实参是地址值 D.形参是变量,实参是地址值43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应挑选(A );A. 内联函数 B.重载函数 C.递归函数 D.函数模板44. 函数原型语句正确选项(B );A. int Functionvoid a; B.void Function int;C. int Functiona; D.void intdouble a;45. C+中函数返回值的类型是由(B )打算的;A. return 语句中表达式的类型 B.该函数定义时的类型C.调用函数时的调用语句 D.系统依据结果46. 以下函数的返回结果是(A );int functionchar *x char *p=x; while*p+; returnp-x-1;A. 求字符串的长度B.将字符串 x 连接到字符串 p 后面C. 将字符串 x 复制到字符串p 中D.将字符串 x 反向存放B 个;47. 函数调用 funcexp1,exp2,exp3,exp4,exp5 中所含实参的个数为A. 1 B. 2 C. 4 D. 548. 设有如下函数定义int fchar *s char *p=s;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -while*p.=0 p+;returnp-s;在主函数中用 cout<<f “good ”调用上述函数 , 就输出结果为(B );A. 3 B. 4 C. 5 D. 649. 以下正确的函数原型语句是 C ;A. double funint x,int y B. double funint x;int yC. double funint,int; D. double funint x,y;50. 以下正确的说法是(B );A. 用户调用标准库函数前,必需重新定义B. 用户可以重新定义标准库函数,如如此,该函数将失去原有含义C. 系统不答应用户重新定义标准库函数D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中二、填空题1. C+语言是在 _语言的基础上进展起来的;2. C+语言的编译单位是扩展名为_的_源代码 _文件;3. 行尾使用注释的开头标记符为 _;4. 多行注释的开头标记符和终止标记符分别为_和_;细心整理归纳 精选学习资料 5. 用于输出表达式值的标准输出流对象是_; 第 7 页,共 32 页 6. 用于从键盘上为变量输入值的标准输入流对象是_;7. 一个完整程序中必需有一个名为_的函数; - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -8. 一个函数的函数体就是一条 _语句;9. 当执行 cin 语句时, 从键盘上输入每个数据后必需接着输入一个 _符,然后才能连续输入下一个数据;10. 在 C+ 程序中包含一个头文件或程序文件的预编译命令为 _;11. 程序中的预处理命令是指以_字符开头的命令;12. 一条表达式语句必需以 _作为终止符;13. 在#include 命令中所包含的头文件,可以是系统定义的头文件,也可以是 _定义的头文件;14. 使用 #include 命令可以包含一个头文件,也可以包含一个 _文件;15一个函数定义由 _和_两部分组成;16如一个函数的定义处于调用它的函数之前,就在程序开头可以省去该函数的 _语句;17C+头文件和源程序文件的扩展名分别为 _和_;18程序文件的编译错误分为_和_两类;19当使用 _保留字作为函数类型时,该函数不返回任何值;20当函数参数表用 _保留字表示时,就表示该参数表为空;21从一条函数原型语句“int fun1void; ” 可知,该函数的返回类型为 _,该函数带有 _个参数;22. 当执行 cout 语句输出endl 数据项时,将使C+显示输出屏幕上的光标从当前位置移动到 _的开头位置;23. 假定 x=5 ,y=6,就表达式x+*+y 的值为 _35_; X+ 返回的值是加之后的,但 x 本身已经加了1 了,留意是返回值,区分+x24. 假定 x=5 ,y=6,就表达式x-*-y 的值为 _25_;25. 假定 x=5,y=6,就执行表达式 y*=x+ 运算后, x 和 y 的值分别为 _6_ 和_30_;26. 假定 x=5,y=6 ,就执行表达式 _11_;y+=x- 运算后, x 和 y 的值分别为 _4_ 和细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -27. C+常数 0x145 对应的十进制值为 _;28. C+常数 0345 对应的十进制值为 _;29. 十进制常数 245 对应的十六进制的 C+表示为 _;10 是 A 了30. 十进制常数 245 对应的八进制的 C+ 表示为 _;31. signed char 类型的值域范畴是 32. int 和 float 类型的数据分别占用_至_之间的整数;_4_和_4_个字节;33. float 和 double 类型的数据分别占用 _4_和_8_个字节;34. bool 和 char 类型的数据分别占用_1_和 _1_个字节;35. unsigned short int 和 int 类型的长度分别为 _2_和_4_;36. 字符串 ” s a book.n” 的长度为 _15_;37. 字符串 ” s a pennn” 的长度为 _15_;38. 在 C+ 中储备字符串 ” abcdef” 至少需要 _个字节;39. 在 C+ 中储备字符串 ” a+b=c” 至少需要 _个字节;40. 假定 x 和 y 为整型,其值分别为 _;41. 假定 x 和 y 为整型,其值分别为 和_;16 和 5,就 x%y 和 x/y 的值分别为 _和16 和 5,就 x/y 和 doublex/y 的值分别为 _42. 假定 x 是一个规律量,就x && true的值为 _;43. 假定 x 是一个规律量,就 44. 假定 x 是一个规律量,就 45. 假定 x 是一个规律量,就46. 假定 x 是一个规律量,就x | true 的值为 _;x && false 的值为 _;x | false 的值为 _;.x | false 的值为 _;47. 假定 x 是一个规律量,就x && .x的值为 _;48. 假定 x 是一个规律量,就x | .x 的值为 _;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -49. 数学算式 的 C+ 表达式为 _;50. 数学算式 的 C+ 表达式为 _;51. 数学算式 的 C+ 表达式为 _;52. 设 enum Printstatusready,busy,error; 就 cout<<busy 的输出结果是 _;53. 设 enum Printstatusready=2,busy,error; 就 cout<<busy 的输出结果是 _;54. 常数 -4.205 和 6.7E-9 分别具有 _和_位有效数字;55. 枚举类型中的每个枚举值都是一个_,它的值为一个_;56. 常数 100 和 3.62 的数据类型分别为_和_;57. 如 x=5, y=10, 就运算 y*=+x 表达式后, x 和 y 的值分别为 _和_;58. 假定 x 和 ch 分别为 int 型和 char 型,就 sizeofx 和 sizeofch的值分别为 _和 _;59. 假定 x=10 ,就表达式x<=10.20:30 的值为 _;60. 表达式 sqrt81 和 pow6,3 的值分别为 _和_;三、程序填充题,对程序、函数或类中划有横线的位置,依据题意按标号把合适的内容填写到程序下面相应标号的后面;1. 斐波那契数列的第 1 和第 2 个数分别为 0 和 1 ,从第三个数开头,每个数等于其前两个数之和;求斐波那契数列中的前 20 个数,要求每行输出 5 个数;#include<iostream.h>void main int f,f1,f2,i;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -cout<< ” 斐波那契数列:n” ; f1=0; f2=1; cout<<setw6<<f1<<setw6<<f2; fori=3;i<=20;i+ f=_1_; cout<<setw6<<f; if_2_ cout<<endl; f1=f2; f2=_3_; cout<<endl; 1 2 3 2. 运算 的值;#include<iostream.h> void main double x,p1=1,p2=1,s=0; int i,j=1; cout<<" 输入 x 的值 :"细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -cin>>x; fori=1;i<=10;i+ p1*=_1_;p2*=_2_;s+=j*p1/p2; /j 的值为 -1i+1j=_3_; cout<<s<<endl;1 2 3 3. 打印出 2 至 99 之间的全部素数即不能被任何数整除的数;#include<iostream.h> #include<math.h>void main int i,n; forn=2; _1_; n+ int temp=intsqrtn; /求出 n 的平方根并取整fori=2; _2_; i+ ifn%i=0 _3_; ifi>temp cout<<n<<' '细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - cout<<'n' 1 2 3 4. 采纳辗转相除法求出两个整数的最大公约数;#include<iostream.h> void main int a,b; cout<<" 请输入两个正整数 :"cin>>a>>b;whilea<=0 | _1_ cout<<" whileb int r; r=a%b;重新输入 :" cin>>a>>b;_2_; _3_; /分别修改 a 和 b 的值cout<<a<<endl; /输出最大公约数1 2 3 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 13 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -5. 把从键盘上输入的一个大于等于3 的整数分解为质因子的乘积;如输入 24 时得到的输出结果为“2 2 2 3” ,输入 50 时得到的输出结果为“2 5 5” ,输入 37 时得到的输出结果为“ 37” ;#include<iostream.h> void main int x; cout<<" 请输入一个整数,如小于 3 就重输 :"do cin>>x; while_1_; int i=2; do while_2_ cout<<i<<' 'x/=i; _3_; whilei<x; ifx.=1 cout<<x; cout<<endl; 1 2 3细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -6. 下面函数是求两个整型参数 a 和 b 的最小公倍数;int f2int a, int b int i=2, p=1; do whilea%i=0 && _1_ p*=i; a/=i; b/=i; _2_; whilea>=i && _3_; return p*a*b; 1 2 3 7. 在输出屏幕上打印出一个由字符* 组成的等腰三角形,该三角形的高为5 行,从上到下每行的字符数依次为 1,3,5,7,9;#include<iostream.h> void main int i,j; fori=1;_1_;i+ 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 15 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -forj=1;j<=9;j+ ifj<=5-i | _2_ cout<< ; else _3_; cout<<endl; 1 2 3 8. 统计字符串中英文字母个数的程序;#include <iostream.h> int count char str; void main char s180;cout <<”Enter a line:” ;cin >>s1;cout <<”count= ”<<counts1<<endl; int countchar str int num=0; /给统计变量赋初值 forint i=0;stri;i+if stri>=a && stri<=z |_1_ _2_;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 16 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -_3_; 1 2 3 9. 主函数调用一个 fun 函数将字符串逆序;#include<iostream.h> #include<string.h> _1_; void main char s80; cin>>s; _2_;cout<< ”逆序后的字符串: ”<<s<<endl ; void funchar ss int n=strlenss; forint i=0; _3_; i+ char c=ssi; ssi=ssn 1i; ssn1i=c; 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 17 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -1 2 3 10. 从一个字符串中删除全部同一个给定字符后得到一个新字符串并输出;#include<iostream.h> const int len=20; void delstrchar a,char b,char c; void main char str1len,str2len; char ch; :" cout<<" 输入一个字符串 cin>>str1; cout<<" 输入一个待删除的字符 :" cin>>ch; delstrstr1,str2,ch; cout<<str2<<endl; void delstrchar a,char b,char c int j=0; forint i=0; _1_; i+ if_2_ bj+=ai; bj=_2_;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 18 页,共 32 页 - - - - - - - - - 名师归纳总结 精品学习资料 -