C++语言程序设计课程期末综合练习.docx
- 文档编号:9997467
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:16
- 大小:22.34KB
C++语言程序设计课程期末综合练习.docx
《C++语言程序设计课程期末综合练习.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计课程期末综合练习.docx(16页珍藏版)》请在冰豆网上搜索。
C++语言程序设计课程期末综合练习
C++语言程序设计课程期末综合练习
一、单选题
1.由C++源程序文件编译而成的目标文件的缺省扩展名为()。
A.objB.likC.exeD.cpp
2.程序运行中需要从键盘上输入多于一个数据时,各数据之间需要使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
3.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为()。
A.1B.0C.x的值D.x的相反值
4.任何for语句都能够被改写为()语句。
A.复合B.ifC.switchD.while
5.break语句叫做()语句。
A.中断退出循环或开关B.返回C.转向D.继续
6.在下面的一维数组定义中,()语句有语法错误。
A.inta[]={1,2,3};B.inta[10]={0};
C.inta[];D.inta[5];
7.下面的()保留字不能作为函数的返回类型。
A.voidB.intC.newD.long
8.下面的函数声明中,()是“voidBC(inta,intb);”的重载函数。
A.intBC(intx,inty);B.voidBC(inta,charb);
C.floatAA(inta,charb);D.intBC(inta,intb=0);
9.当一个字符指针指向具有n个字节的存储空间时,它所能存储字符串的最大长度为()。
A.nB.n+1C.n-1D.n-2
10.假定AB为一个类,则该类的拷贝构造函数的声明语句为()。
A.AB&(ABx);B.AB(ABx);C.AB(AB*x);D.AB(AB&);
11.下面的保留字()不能作为函数的返回类型。
A.voidB.intC.newD.long
12.C++源程序文件的默认扩展名为()。
A.cppB.exeC.objD.lik
13.在下列的标识符常量的定义语句中,错误的定义语句是()。
A.constdoublePI=3.14159;B.constintN=20;
C.constcharch;D.constboolmark=true;
14.for循环语句一定能够被改写为()语句。
A.复合B.ifC.switchD.while
15.假定a为一个数组名,则下面的()表达式有语法错误。
A.a[i]B.*++aC.*aD.*(a+1)
16.在下面的二维数组定义中,只有()语句是正确的。
A.inta[5][];B.inta[](10);
C.inta[][];D.inta[][5]={{1,2,3},{4,5}};
17.下面()的函数声明格式不正确。
A.AA(inta,intb);B.AA(inta=0,intb);
C.AA(inta=0,intb=0);D.AA(inta,intb=0);
18.假定指针变量p定义为“int*p=newint[30];”,要释放p所指向的动态数组空间,则使用下面的()语句。
A.deletep;B.delete*p;C.delete&p;D.delete[]p;
19.假定要对结构类型AB定义加号运算符重载的普通函数,实现两个AB类型对象的加法,并返回相加结果,则该函数的声明语句为()。
A.ABoperator+(AB&a,AB&b);B.ABoperator+(AB&a);
C.operator+(ABa);D.AB&operator+();
20.当需要使用ifstream流类定义一个流对象并联系一个磁盘文件时,应在文件开始使用#include命令,使之包含()头文件。
A.strstrea.hB.stdlib.hC.iostream.hD.fstream.h
21.枚举类型中的每个枚举常量的值都是一个()值。
A.整数B.浮点数C.字符D.逻辑
22.设x和y均为bool量,则逻辑表达式x||y为假的条件是()。
A.x和y均为真B.其中一个为真
C.x和y均为假D.其中一个为假
23.声明或定义一个内联函数时,必须在函数开始使用保留字()。
A.staticB.constC.externD.inline
24.在下面的函数声明中,存在着语法错误的是()。
A.BC(inta,int)B.BC(int,int)
C.BC(int,int=5)D.BC(intx=6,inty)
25.假定a为一个整型数组名,则元素a[4]与()的表示等价。
A.a+4B.*a+4C.*(a+4)D.*(a+16)
26.循环语句“for(inti=0;i A.nB.n+1C.n-1D.2n 27.将两个字符串连接起来组成一个字符串时,选用()函数。 A.strlen()B.strcpy()C.strcat()D.strcmp() 28.C++编译预处理命令在程序中都是以()字符开头的。 A.*B.#C.&D.@ 29.假定有结构定义为“structBOOK{chartitle[40];doubleprice;};”,则该结构类型的长度为()个字节。 A.28B.40C.44D.48 30.假定AB为一个类,px为指向该类动态对象数组的指针,该数组长度为n,则执行“delete[]px;”语句时,自动调用该类析构函数的次数为()。 A.1B.nC.n-1D.n+1 二、填空题 1.C++语言中每条复合语句以左花括号开始,并以______________结束。 2.假定一个枚举类型的定义为“enumRA{ab,ac,ad,ae};”,则ac的值为_______。 3.十进制数25表示成符合C++语言规则的八进制数为________。 4.表达式x=x+y表示成复合赋值表达式为__________。 5.若x=5,则x>5的逻辑值为_________。 6.假定一个一维数组的定义为“char*a[8];”,则该数组占用________个字节的存储空间。 7.假定x=10,则表达式2+x++的值为________。 8.假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为________。 9.假定要动态分配一个类型为int的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为int*r=_________________。 10.设px指向一个类的动态分配的对象,则执行“deletepx;”语句时,将自动调用该类的____________。 11.执行“cout<<”x1=”<<18*4;”语句后得到的输出结果为________。 12.在c++语言中,用转义字符序列________表示输出一个换行。 13.int类型的大小为________个字节。 14.假定y的值为5,则增量表达式++y的值为__________。 15.假定a的值为25,则算术表达式a%3的值为________。 16.结束所在循环类语句或switch语句执行的中断语句的保留字为__________。 17.函数调用时,实参向形参的传送分为________传送和值传送两种方式。 18.假定a是一个一维数组,则a[i]的指针访问方式为________。 19.假定一个结构类型的定义为”structC{doublea[5];intn;};”,则该类型的大小为________个字节。 20.若要在程序中进行___________的输入输出操作,则必须在开始的#inlude预处理命令中使用fstream.h头文件。 21.十进制数30表示成符合C++语言规则的十六进制数为________。 22.假定一个枚举类型的定义为“enumRB{ab,ac,ad,ae};”,则枚举常量ad的值为________。 23.假定y=8,则执行y++*4运算后,y的值为________。 24.算术表达式 +1对应的C++表达式为____________________。 25.关系表达式x<5的相反表达式为____________。 26.假定整数变量x=48,则a/12的运算结果为________。 27.假定一个二维数组的定义语句为“inta[3][4];”,则该数组包含有________个整型元素。 28.函数被调用时,实参向形参的传送分为引用传送和________传送两种方式。 29.假定一个结构类型的定义为”structB{inta[5];char*b;};”,则该类型的大小为________字节。 30.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的____________使其初始化。 三、写出下列每个程序运行后的输出结果 1.#include voidmain(){ intn=4,y=1; while(n--)y*=3; cout<<"y="< } 2.#include voidmain(){ inta[8]={2,8,10,5,12,7,9,20}; intc=0,i=0; while(i<8){ if(a[i]>10)c++; i++; } cout<<"c="< } 3.#include voidmain(){ inta[5]={3,6,9,12,8}; for(int*p=a;p if(*p>8)cout<<*p<<''; } 4.#include intLA(inta[],intn){ ints=0; for(inti=0;i s+=a[i]; returns; } voidmain(){ inta[5]={5,2,8,6,4}; intb=LA(a,5); cout<<"b="< } 5.#include structAB{ charaa[15]; intbb; }; voidmain(){ ABa[4]={{"Apple",25},{"Peach",40},{"Pear",36},{"Tomato",62}}; for(inti=0;i<4;i++) if(a[i].bb<40)cout< cout< } 6.#include voidmain(){ ints1=0; for(inti=1;i<=5;i++)s1+=2*i; cout<<”s1=”< } 7.#include voidmain(){ inta[6]={6,9,12,18,15,20}; intc=0; for(inti=0;i<6;i++) if(a[i]%2==1)c++; cout<<"c="< } 8.#include voidmain(){ inta[3][4]={{1,2,7,8},{5,6,11,15},{9,20,3,4}}; intm=a[0][0]; for(inti=0;i<3;i++) for(intj=0;j<4;j++) if(a[i][j]>m)m=a[i][j]; cout< } 9.#include voidmain(){ inta=10,b=15,c; c=a+b; {intb=a+20; c+=a+b; } cout< } 10.#include voidmain(){ inta[8]={6,19,4,12,20,5,18,25}; int*p,s=0; for(p=a;p if(*p<10)s+=*p; cout< } 11.#include voidmain(){ ints=0; for(inti=1;i<=8;i+=2) s+=i*i; cout<<"s="< } 12.#include voidmain(){ inti=1,s=0; while(s<15)s+=i++; cout< } 13.#include voidmain(){ inta[8]={36,25,48,14,55,20,47,82}; intc1=0,c2=0; for(inti=0;i<8;i++) if(a[i]<50)c1++;elsec2++; cout< } 14.#include intLB(int*a,intn){ intp=1; for(inti=0;i p*=*a;a++; } returnp; } voidmain(){ inta[5]={1,2,3,4,3}; cout< } 15.#include structWorker{ charname[15];//姓名 intage;//年龄 floatpay;//工资 }; voidmain(){ Workerx={"wangfong",46,1640}; Workery,*p; y=x;p=&x; cout< } 四、写出下列每个函数的功能 1.intSA(inta,intb){ if(a>b)return1; elseif(a==b)return0; elsereturn-1; } 2.intLK(inta[],intn){ floats=0;inti; for(i=0;i s/=n; intm=0; for(i=0;i returnm; } 3.intWD(inta[],intn){ intm=a[0]; for(inti=1;i if(a[i]>m)m=a[i]; returnm; } 4.doubleFI(intn){//n为大于等于1的整数 doublex,y=0; do{ cin>>x; y+=x*x; }while(--n); returny; } 5.boolWE(inta[],intb[],intn){ for(inti=0;i if(a[i]! =b[i])break; if(i==n)returntrue;returnfalse; } 6.intLK(inta[],intn){ doubles=0; inti,m=0; for(i=0;i s=s/n; for(i=0;i returnm; } 7.doubleFI(intn){//n为大于等于1的整数 doublex,y=0; do{ cin>>x; y+=x; }while(--n); returny; } 8.boolWE(inta[],intb[],intn){ for(inti=0;i if(a[i]! =b[i])break; if(i==n)returntrue;returnfalse; } 9.intLK(inta[],intn){ doubles=0; inti,m=0; for(i=0;i s=s/n; for(i=0;i returnm; } 五、按题目要求编写程序 1.已知6≤a≤30、15≤b≤36,求出满足不定方程2a+5b=126的全部整数组解。 如(13,20)就是其中的一组解,并按此格式输出每组解。 2.假定函数声明为“voidPrint(inta[],intn);”,要求按下标从大到小的次序输出数组a中的n个元素的值,每个值后面接着输出一个空格。 3.假定一个函数声明为“intFF(inta[],intn);”,要求递归求出数组a中所有n个元素之积并返回。 4.假定函数声明为“voidPrint(inta[],intn);”,要求按下标从大到小的次序输出数组a中的n个元素的值,每个值后面接着输出一个逗号,但最后一个值后面为换行符。 参考解答: 1.#include voidmain() { inta,b; for(a=6;a<=30;a++) for(b=15;b<=36;b++) if(2*a+5*b==126) cout<<'('< } 2.voidPrint(inta[],intn) { for(inti=n-1;i>=0;i--) cout< cout< } 3.intFF(inta[],intn) { if(n==1)returna[n-1]; elsereturna[n-1]*FF(a,n-1); //或者if(n==0)return1; //elsereturna[n-1]*FF(a,n-1); } 4.voidPrint(inta[],intn) { for(inti=n-1;i>0;i--)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言程序设计 课程 期末 综合 练习