山东开放大学C++语言程序设计期末复习题.docx
2023学年6月份考试C+语言程序设计复习题一、单选题1、循环语句ufor(int i=0; i<n; i+) S;"中循环体S被执行的次数为()。A、 1B、 n-1C> nD、 n+1正确答案:C2、适宜采用inline定义函数情况是( )。A、函数体含有循环语句B、函数体含有递归语句C、函数代码少、频繁调用D、函数代码多、不常调用正确答案:C3、耍禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()oA、 const char *p= "ABCD”;B、 char *const p= "ABCD”;C、 char const *p= "ABCD”;D、 const char * const p= "ABCD”;正确答案:D4、在关键字public后面定义的成员为类的()成员。A、私有B、公用C、保护D、任何正确答案:B5、C+源程序文件的缺省扩展名为()oA、 cppB、 exeC、 objD、 lik正确答案:A6、设有语句“inta=12;a+=a*a;",则执行结束后,a的值为()。A、 12B、 144C、 156D、288正确答案:C7、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。A、 ios:inB、 ios:outC、 ios:in | ios:outD、 ios:binary正确答案:A8、下列不能作为类的成员的是()。A、自身类对象的指针B、自身类对象C、自身类对象的引用D、另一个类的对象正确答案:B9、在下面的do循环语句中,其循环体被执行的次数为()。A、 4B、 3C、5D、2正确答案:A10、若用数组名作为函数调用的实参,传递给形参的是()oA、数组的首地址B、数组中第一个元素的值C、数组全部元素的值D、数组元素的个数正确答案:A11、枚举类型中的每个枚举常量的值都是一个()oA、整数B、浮点数C、字符D、逻辑值正确答案:A12、下面正确的函数原型语句是()oA、 int Function(void a);B、 void Function (int);C、 int Function(a);D、 void int(doub正确答案:B13、当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。A、 ios:inB、 ios:outC、 ios:in | ios:outD、没有正确答案:D14、假定有“struct BOOKchartitle40; 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;正确答案:A15、下面的()函数头格式不正确。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、mainB、MAINC、nameD、function正确答案:A17、程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用(A、分隔符B、空格或逗号C、逗号或回车D、逗号或分号E、空格或回车正确答案:D18、C+程序的基本模块为()oA、表达式B、标识符C、语句D、函数正确答案:D19、编写C+程序一般需经过的几个步骤依次是()。A、编辑、调试、编译、连接B、编辑、编译、连接、运行C、编译、调试、编辑、连接D、编译、编辑、连接、运行正确答案:B20、预处理命令在程序中都是以()字符开头的。A、*B、#C、&D、正确答案:B21、循环体至少被执行一次的语句为()语句。A、for循环B、while 循环C、do循环D、任一种循环正确答案:C)语句有语法错误。)语句有语法错误。22、在下面的一维数组定义中,(A> int a=l,2,3;int a10=0;C、int a口;D、int a5;正确答案:C23、在下面的字符数组定义中,(A、char a20= '' abcdefg,'B、char a口=''x+y=55.;C、chara15=? 1' , ' 2' );D、chara10= ' 5'正确答案:D24、假定一个二维数组的定义语句为“int a34=3,4,2,8,6;",则元素a的值为( )。A、2B、4C、6D、8正确答案:C25、将两个字符串连接起来组成一个字符串时,选用()函数。A、strlen()B、strcpy()C、strcat()D、strcmpO正确答案:C二、判断题1、设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是COUto正确答案:正确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<iostream.h>void main() int sl=0, s2=l;for(int i=l; i<=6; i+) sl+=i; s2*=i;cout«sl«7«s2«endl;)正确答案:21,720 2、#include<iostream.h>#include<string.h>void main() char* a5="student”Jworker"Jcadre“Jsoldier”Japen”;char *pl;pl二a ;for(int i=l;i<5;i+) if(strcmp(ai, pl)>0) pl=ai;)cout«pl«endl;正确答案:worker3、#include<iostream.h>void main() int i=l,s=0;while(s<20) if(i%2!=0) s+=i;i+;)cout«i«? / «s«endl;正确答案:10,254、#include<iostream.h>void main() int s=0;for(int i=l;i<=8;i=+2)S+=l*l;cout«"s="«s«endl;正确答案:s=845 #include<iostream.h>void main() int a10=68,79,86,65,46,94,37,78,60,53;int c=0;for(int i=0;i<10;i+)if(ai>=60) C+;cout« v c二" «c«endl;正确答案:c=76、#include<iostream.h>#include<string.h>struct Worker char name15; 姓名int age; 年龄float pay; 工资;void main() Worker x;strcpy(x.name, "WeiRong");x.age=45; x.pay=1235;cout«x.name«' '«x.age«' '«x.pay«endl;正确答案:WeiRong45 1235四、写出函数功能1、void LK(int a, int n, int& m) float s=0;int i;for(i=0;i<n;i+) s+=ai;s/=n;m=0;for(i=0;i<n;i+) if(ai>=s) m+;)正确答案:统计出数组a的前n个元素中大于等于其平均值的元素个数并由引用参数m带回。2、int WC(int a, int n, int k) int c=0;for(int i=0;i<n;i+) if(ai>=k) C+;return c;正确答案:3、统计出数组a的n个元素中大于等于参数k的值的元素个数并返回。bool WB(int a, int n, int x) for(int i=0;i<n;i+)if(ai=x) return true;return false;正确答案:4、从数组a中顺序查找值为x的元素,若查找成功则返回真,否则返回假。double WA(int a, int n) double s=0;for(int i=0;i<n;i+) s+=ai;return s/n;正确答案:5、求出数组a中n个元素的平均值并返回。bool SG(int x) /x为大于等于2的整数int a=int(sqrt(x); sqrt(x)为求 x 的平方根int i=2;while(i<=a) if(x%i=O) 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<n;i+)if(ai!=bi) break;if(i=n) return true; return false;正确答案:判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回 假。五、编程题1、假定一个函数声明为“void AD(inta,intn);",要求把数组a中的n个元素值按相反的次 序仍保存在数组a中。请编写该函数。正确答案:void AD(int a, int n)for(i=0; i<n/2; i+) int x=ai; ai=an-l-i; an-l-i=x;)2、假定一个函数声明为“intFF(inta口, intn);",要求递归求出数组a中所有n个元素之积并 返回。请编写该函数。正确答案:int FF(int a, int n)if(n=l) return an-l;else return an-l*FF(a,n-l);或者 if(n=O) return 1;/ else return an-l*FF(a,n-l);3、已知6<aW30、15WbW36,求出满足不定方程2a+5b=126的全部整数组解。如(13,20)就是其中的一组解,并按此格式输出每组解。正确答案:#include<iostream.h>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«,),«endl;