C++语言程序设计课程期末综合练习Word文档格式.docx
《C++语言程序设计课程期末综合练习Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计课程期末综合练习Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
![C++语言程序设计课程期末综合练习Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/8dd717c6-8512-4099-8f95-dc12d380731e/8dd717c6-8512-4099-8f95-dc12d380731e1.gif)
B.constintN=20;
C.constcharch;
D.constboolmark=true;
14.for循环语句一定能够被改写为()语句。
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<
n;
i++);
”执行结束后得到的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<
iostream.h>
voidmain(){
intn=4,y=1;
while(n--)y*=3;
cout<
"
y="
y<
endl;
}
2.#include<
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="
c<
3.#include<
iomanip.h>
inta[5]={3,6,9,12,8};
for(int*p=a;
p<
a+5;
p++)
if(*p>
8)cout<
*p<
'
'
;
4.#include<
intLA(inta[],intn){
ints=0;
for(inti=0;
i<
i++)
s+=a[i];
returns;
inta[5]={5,2,8,6,4};
intb=LA(a,5);
b="
b<
5.#include<
structAB{
charaa[15];
intbb;
};
ABa[4]={{"
Apple"
25},{"
Peach"
40},{"
Pear"
36},{"
Tomato"
62}};
for(inti=0;
4;
if(a[i].bb<
40)cout<
a[i].aa<
6.#include<
ints1=0;
for(inti=1;
=5;
i++)s1+=2*i;
”s1=”<
s1<
7.#include<
inta[6]={6,9,12,18,15,20};
intc=0;
6;
i++)
if(a[i]%2==1)c++;
8.#include<
inta[3][4]={{1,2,7,8},{5,6,11,15},{9,20,3,4}};
intm=a[0][0];
3;
for(intj=0;
j<
j++)
if(a[i][j]>
m)m=a[i][j];
m<
9.#include<
inta=10,b=15,c;
c=a+b;
{intb=a+20;
c+=a+b;
}
10.#include<
inta[8]={6,19,4,12,20,5,18,25};
int*p,s=0;
for(p=a;
a+8;
p++)
if(*p<
10)s+=*p;
s<
11.#include<
=8;
i+=2)
s+=i*i;
s="
12.#include<
inti=1,s=0;
while(s<
15)s+=i++;
'
13.#include<
inta[8]={36,25,48,14,55,20,47,82};
intc1=0,c2=0;
8;
if(a[i]<
50)c1++;
elsec2++;
c1<
c2<
14.#include<
intLB(int*a,intn){
intp=1;
i++){
p*=*a;
a++;
returnp;
inta[5]={1,2,3,4,3};
LB(a,5)<
15.#include<
structWorker{
charname[15];
//姓名
intage;
//年龄
floatpay;
//工资
};
Workerx={"
wangfong"
46,1640};
Workery,*p;
y=x;
p=&
x;
y.age+10<
p->
pay*2<
四、写出下列每个函数的功能
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+=a[i];
s/=n;
intm=0;
i++)if(a[i]>
=s)m++;
returnm;
3.intWD(inta[],intn){
intm=a[0];
if(a[i]>
m)m=a[i];
returnm;
}
4.doubleFI(intn){//n为大于等于1的整数
doublex,y=0;
do{
cin>
>
y+=x*x;
}while(--n);
returny;
5.boolWE(inta[],intb[],intn){
if(a[i]!
=b[i])break;
if(i==n)returntrue;
returnfalse;
6.intLK(inta[],intn){
doubles=0;
inti,m=0;
s=s/n;
7.doubleFI(intn){//n为大于等于1的整数
y+=x;
8.boolWE(inta[],intb[],intn){
9.intLK(inta[],intn){
五、按题目要求编写程序
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个元素的值,每个值后面接着输出一个逗号,但最后一个值后面为换行符。
参考解答:
voidmain()
{
inta,b;
for(a=6;
a<
=30;
a++)
for(b=15;
=36;
b++)
if(2*a+5*b==126)
('
)'
2.voidPrint(inta[],intn)
for(inti=n-1;
i>
=0;
i--)
a[i]<
’’;
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)
0;
i--)
a[0]<
1.A2.D3.C4.D5.A
6.C7.C8.B9.C10.D
11.C12.A13.C14.D15.B
16.D17.B18.D19.A20.D
21.A22.C23.D24.D25.C
26.A27.C28.B29.D30.B
参考解答:
1.}(右花括号)2.1
3.0314.x+=y
5.假(false或0)6.32
7.128.46
9.newint[n];
10.析构函数
11.x1=7212.’\n’
13.414.6
15.116.break
17.引用18.*(a+i)
19.4420.文件
21.0x1E(字母x和E大小写均可)22.2
23.924.(x+y)/(2*x*y)+1
25.x>
=526.4
27.1228.值
29.2430.构造函数
1.y=812.c=23.9124.b=25
5.ApplePear6.s1=307.c=28.20
9.6510.1511.s=8412.6,15
13.6214.7215.563280
1.比较两个整数a和b的大小,若a>
b则返回1,若a==b则返回0,若a<
b则返回-1。
2.求出数组a的n个元素中大于等于平均值的元素个数并返回。
3.从数组a的n个元素中求出最大值并返回。
4.求出从键盘上输入的n个整数的平方和并返回。
5.判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回假。
6.统计出数组a[n]中大于等于其平均值的元素个数并作为函数值返回。
7.求出从键盘上输入的n个整数的和并返回。
8.判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回假。
9.统计出数组a[n]中大于等于其平均值的元素个数并作为函数值返回。