2024年6月15日发(作者:禽沛岚)
C++语言程序设计期末考试复习题
注:找到所考试题直接看该试题所有题目和答案即可。
查找按键:Ctrl+F 超越高度
一、单选题
1、循环语句“for(int i=0; i A、1 B、n-1 C、n D、n+1 正确答案:C 2、适宜采用inline定义函数情况是( )。 A、函数体含有循环语句 B、函数体含有递归语句 C、函数代码少、频繁调用 D、函数代码多、不常调用 正确答案:C 3、要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为( )。 A、const char *p=“ABCD”; B、char *const p=“ABCD”; C、char const *p=“ABCD”; D、const char * const p=“ABCD”; 正确答案:D 4、在关键字public后面定义的成员为类的( )成员。 A、私有 B、公用 C、保护 D、任何 正确答案:B 5、C++源程序文件的缺省扩展名为( )。 A、cpp B、exe C、obj D、lik 正确答案:A 6、设有语句“int a=12; a+=a*a;”,则执行结束后,a的值为( )。 A、12 B、144 C、156 D、288 正确答案:C 7、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( )。 A、ios::in B、ios::out C、ios::in | ios::out D、ios::binary 正确答案:A 8、下列不能作为类的成员的是( )。 A、自身类对象的指针 B、自身类对象 C、自身类对象的引用 D、另一个类的对象 正确答案:B 9、在下面的do循环语句中,其循环体被执行的次数为( )。 A、4 B、3 C、5 D、2 正确答案:A 10、若用数组名作为函数调用的实参,传递给形参的是( )。 A、数组的首地址 B、数组中第一个元素的值 C、数组全部元素的值 D、数组元素的个数 正确答案:A 11、枚举类型中的每个枚举常量的值都是一个( )。 A、整数 B、浮点数 C、字符 D、逻辑值 正确答案:A 12、下面正确的函数原型语句是( )。 A、int Function(void a); B、void Function (int); C、int Function(a); D、void int(doub 正确答案:B 13、当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( )。 A、ios::in B、ios::out C、ios::in | ios::out D、没有 正确答案:D 14、假定有“struct BOOK{char title[40]; float price;}; BOOK *book;”,则不正确的语句为( )。 A、BOOK *x=new book; B、BOOK x={"C++ Programming",27.0}; C、BOOK *x=new BOOK; D、BOOK **x=&book; 正确答案:A 15、下面的( )函数头格式不正确。 A、AA(int a, int b) B、AA(int a, int b=0) C、AA(int a=0, int b=0) D、AA(int a=0, int b) 正确答案:D 16、在每个C++程序中都必须包含有这样一个函数,该函数的函数名为( A、main B、MAIN C、name D、function 正确答案:A 17、程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( A、分隔符 B、空格或逗号 C、逗号或回车 D、逗号或分号 E、空格或回车 正确答案:D 18、C++程序的基本模块为( )。 A、表达式 B、标识符 C、语句 D、函数 正确答案:D 19、编写C++程序一般需经过的几个步骤依次是( )。 A、编辑、调试、编译、连接 B、编辑、编译、连接、运行 C、编译、调试、编辑、连接 D、编译、编辑、连接、运行 正确答案:B 20、预处理命令在程序中都是以( )字符开头的。 A、* B、# )。 )符号。 C、& D、@ 正确答案:B 21、循环体至少被执行一次的语句为( )语句。 A、for循环 B、while循环 C、do循环 D、任一种循环 正确答案:C 22、在下面的一维数组定义中,( )语句有语法错误。 A、int a[]={1,2,3}; B、int a[10]={0}; C、int a[]; D、int a[5]; 正确答案:C 23、在下面的字符数组定义中,( )语句有语法错误。 A、char a[20]= ’ ’abcdefg’ ’; B、char a[]=’ ’x+y=55. ’ ’; C、char a[15]={’1’, ’2’}; D、char a[10]= ’5’; 正确答案:D 24、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为 ( )。 A、2 B、4 C、6 D、8 正确答案:C 25、将两个字符串连接起来组成一个字符串时,选用( )函数。 A、strlen() B、strcpy() C、strcat() D、strcmp() 正确答案:C 二、判断题 1、设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是 cout。 正确答案:正确 2、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。 正确答案:正确 3、C++语言中模板分为函数模板和类模板两种。 正确答案:正确 4、continue 语句只能出现在循环体中 。 正确答案:正确 5、循环是可以嵌套的,一个循环体内可以包含另一种循环语句。 正确答案:正确 6、为了减轻使用者的负担,与C 语言相比,C++语言中减少了一些运算符。 正确答案:错误 7、C++语言中标识符内的大小写字母是没有区别的。 正确答案:错误 8、C++语言中使用了新的注释符(//), C 语言中注释符(/* … */ )不能在C++语言中使用。 正确答案:错误 9、开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。 正确答案:错误 10、使用关键字class定义的类中默认的访问权限是私有(private)的。 正确答案:正确 11、预处理命令是在进行编译时首先执行的,然后再进行正常编译。 正确答案:正确 12、文件包含命令所包含的文件是不受限制的。 正确答案:错误 13、宏定义命令是以分号结束的。 正确答案:错误 14、条件语句不能作为多路分支语句。 正确答案:错误 15、for 循环是只有可以确定的循环次数时才可使用,否则不能用for 循环。 正确答案:错误 三、写出程序运行结果 1、#include void main() { int s1=0, s2=1; for(int i=1; i<=6; i++) {s1+=i; s2*=i;} cout< } 正确答案: 21,720 2、 #include #include void main() { char* a[5]={"student","worker","cadre","soldier","apen"}; char *p1; p1=a[0]; for(int i=1;i<5;i++) { if(strcmp(a[i], p1)>0) p1=a[i]; } cout< } 正确答案: worker 3、#include void main() { int i=1,s=0; while(s<20) { if(i%2!=0) s+=i; i++; } cout< } 正确答案: 10,25 4、 #include void main() { int s=0; for(int i=1;i<=8;i=+2) s+=i*i; cout<<"s="< } 正确答案: s=84 5、#include void main() { int a[10]={68,79,86,65,46,94,37,78,60,53}; int c=0; for(int i=0;i<10;i++) if(a[i]>=60) c++; cout<<”c=”< } 正确答案: c=7 6、 #include #include struct Worker { char name[15]; //姓名 int age; //年龄 float pay; //工资 }; void main() { Worker x; strcpy(, "WeiRong"); =45; =1235; cout<<<<' '<<<<' '<<< } 正确答案: WeiRong 45 1235 四、写出函数功能 1、void LK(int a[], int n, int& m) { float s=0; int i; for(i=0;i s/=n; m=0; for(i=0;i } 正确答案: 统计出数组a的前n个元素中大于等于其平均值的元素个数并由引用参数m带回。 2、int WC(int a[], int n, int k) { int c=0; for(int i=0;i if(a[i]>=k) c++; return c; } 正确答案: 3、统计出数组a的n个元素中大于等于参数k的值的元素个数并返回。 bool WB(int a[], int n, int x) { for(int i=0;i if(a[i]==x) return true; return false; } 正确答案: 从数组a中顺序查找值为x的元素,若查找成功则返回真,否则返回假。 4、double WA(int a[], int n) { double s=0; for(int i=0;i return s/n; } 正确答案: 求出数组a中n个元素的平均值并返回。 5、bool SG(int x) { //x为大于等于2的整数 int a=int(sqrt(x)); //sqrt(x)为求x的平方根 int i=2; while(i<=a) { if(x%i==0) break; i++; } if(i>a) return true; else return false; } 正确答案: 判断x是否为一个素数(或质数),若是则返回真,否则返回假。 6、bool WE(int a[], int b[], int n) { for(int i=0;i if(a[i]!=b[i]) break; if(i==n) return true; return false; } 正确答案: 判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回 假。 五、编程题 1、假定一个函数声明为“void AD(int a[], int n);”,要求把数组a中的n个元素值按相反的次 序仍保存在数组a中。请编写该函数。 正确答案: void AD(int a[], int n) {