C++语言程序设计课程期末针对性训练Word格式.docx
《C++语言程序设计课程期末针对性训练Word格式.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计课程期末针对性训练Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
outD.没有
二、填空题(每小题2分,共20分)
1.若需要定义一个标识符常量,并且使C++能够进行类型检查,则应在定义语句的开始使用保留字__________。
2.算术表达式
对应的C++表达式为________________。
y&
x!
=10的相反表达式为________________。
4.每个字符指针变量占用内存________个字节。
5.执行“typedefintDataType;
”语句后,在使用int定义整型变量的地方都可以使用标识符__________来定义整型变量。
6.对于在所有函数定义之外定义的变量,若没有被初始化则系统隐含对它赋予的初值为________。
7.假定p所指对象的值为25,p+1所指对象的值为46,则执行“*(p++);
”语句后,p所指对象的值为________。
8.假定一个结构类型的定义为“structA{inta;
double*b;
A*c;
};
”,则该类型的大小为________字节。
9.假定一维数组的定义为“inta[8];
”,则该数组所含元素的个数为________。
10.若while循环语句的开始为”while(i++<
=10)”,若i的初值为0,同时在循环体中不会修改i的值,则其循环体将被重复执行__________次后正常结束。
三、写出下列每个程序运行后的输出结果(每小题6分,共30分)
1.#include<
iostream.h>
voidmain(){
ints1=0,s2=1;
for(inti=1;
i<
=6;
i++){s1+=i;
s2*=i;
}
cout<
<
s1<
'
'
s2<
endl;
}输出结果:
2.#include<
inta[10]={68,79,86,65,46,94,37,78,60,53};
intc=0;
for(inti=0;
i<
10;
i++)
if(a[i]>
=60)c++;
”c=”<
c<
3.#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<
4;
j++)
if(a[i][j]>
m)m=a[i][j];
m<
4.#include<
inta=10,b=15;
a<
'
b<
;
{a*=3;
intb=a+20;
}
5.#include<
inta[8]={6,19,4,12,20,5,18,25};
int*p=a;
for(p=a;
p<
a+8;
p++)
if(*p<
10)cout<
*p<
’‘;
四、写出下列每个函数的功能(每小题8分,共24分)
1.boolWB(inta[],intn,intx){
n;
if(a[i]==x)returntrue;
returnfalse;
}函数功能:
2.intLJ(inta[],intn){
intk=0;
i++)
a[k])k=i;
returna[k];
函数功能:
3.假定结构类型Dnode中的data域为结点值域,next域为结点指针域。
DNode*QB(intn)
{
if(n==0){returnNULL;
DNode*f=newDNode;
cin>
>
f->
data;
DNode*p=f;
while(--n){
p=p->
next=newDNode;
p->
p->
next=NULL;
returnf;
五、按题目要求编写程序(6分)
已知6≤a≤30、15≤b≤36,求出满足不定方程2a+5b=126的全部整数组解。
如(13,20)就是其中的一组解,并按此格式输出每组解。
(答案供参考)
1.A2.D3.B4.C5.A
6.C7.D8.A9.A10.D
1.const2.(x*y*y)/(3*a)+4*b-1(分子中括号可以省略)
3.x<
=y||x==104.4
5.DataType6.0
7.468.12
9.810.11
三、写出下列每个程序运行后的输出结果(每小题6分,共30分)
1.21,720//每个数据3分
2.c=7
3.20
4.101530503015//每个数据占1分,全对6分
5.645//每个数据占2分,全对6分
四、写出下列每个函数的功能(每小题8分,共24分)
评分标准:
每题与参考答案的叙述含义相同者得8分,否则酌情给分。
1.从数组a中顺序查找值为x的元素,若查找成功则返回真,否则返回假。
2.求出数组a中n个元素的最大值并返回。
3.建立一个具有n个结点的链表,每个结点的值依次由键盘输入,该函数返回其表头指针。
根据编程的完整程度酌情给分。
#include<
voidmain()
inta,b;
//1分
for(a=6;
=30;
a++)//2分
for(b=15;
=36;
b++)//3分
if(2*a+5*b==126)cout<
('
)'
}//6分
训练第二套
1.枚举类型中的每个枚举常量的值都是一个()值。
A.整数B.浮点数C.字符D.逻辑
2.设x和y均为bool量,则逻辑表达式x||y为假的条件是()。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个为假
3.声明或定义一个内联函数时,必须在函数开始使用保留字()。
A.staticB.constC.externD.inline
4.在下面的函数声明中,存在着语法错误的是()。
A.BC(inta,int);
B.BC(int,int);
C.BC(int,int=5);
D.BC(intx;
inty);
5.假定a为一个整型数组名,则元素a[4]与()的表示等价。
A.a+4B.*a+4C.*(a+4)D.*(a+16)
6.下面循环语句执行结束后输出的i值为()的值。
i++)if(i>
n/2){cout<
break;
A.n/2B.n/2+1C.n-1D.n
7.将两个字符串连接起来组成一个字符串时,选用()函数。
A.strlen()B.strcpy()C.strcat()D.strcmp()
8.预处理命令在程序中都是以()字符开头的。
A.*B.#C.&
D.@
9.假定有定义“structBOOK{chartitle[40];
floatprice;
”,则不正确的变量定义语句为()。
A.BOOKx;
;
B.BOOKx={"
C++Programming"
27.0};
C.BOOK*x=newBOOK;
D.BOOKx=newBOOK;
10.假定AB为一个类,px为指向该类动态对象数组的指针,该数组长度为n,则执行“delete[]px;
”语句时,自动调用该类析构函数的次数为()。
A.1B.nC.n-1D.n+1
1.已知'
A'
Z'
的ASCII码为6590,当执行“charch=14*4+12;
cout<
ch;
”语句序列后,得到的输出结果为________。
2.double类型的长度为________。
3.表达式x=x+1表示成增量表达式为__________。
4.逻辑表达式a<
=b||b==15的相反表达式为________________。
5.假定一个二维数组的定义为“char*a[5][4];
”,则该数组所含元素的个数为________,所占存储空间的字节数为________。
6.当函数中的________变量没有被赋初值时,它的值是不确定的。
7.假定一个结构类型的定义为“structA{doublea,b;
8.假定要访问一个结构指针p所指对象中的数据成员data,则表示方法为____________。
9.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为____________。
10.当在程序中执行到________语句时,就立即结束本层循环类语句或switch语句的执行。
ints=0;
=8;
i=+2)
s+=i*i;
"
s="
s<
2.#include<
inti=1,s=0;
while(s<
20){
if(i%2!
=0)s+=i;
i++;
’,’<
inta[8]={36,25,48,14,55,20,47,82};
intb1,b2;
b1=b2=a[0];
8;
i++){
if(a[i]<
b1)b1=a[i];
b2)b2=a[i];
b1<
b2<
iomanip.h>
intLB(int*a,intn){
ints=1;
i++){
s*=*a;
a++;
returns;
inta[5]={1,2,3,4,5};
LB(a,5)<
5.#include<
structWorker{
charname[15];
//姓名
intage;
//年龄
floatpay;
//工资输出结果:
};
Workerx={"
wangfong"
46,1640};
Workery,*p;
y=x;
p=&
x;
y.name<
y.age<
y.pay<
name<
age+5<
pay-300<
}
1.intWC(inta[],intn,intk){
=k)c++;
returnc;
2.boolSG(intx){//x为大于等于2的整数
inta=int(sqrt(x));
//sqrt(x)为求x的平方根
inti=2;
while(i<
=a){
if(x%i==0)break;
if(i>
a)returntrue;
elsereturnfalse;
3.假定结构类型Worker中的name域表示姓名,age域表示年龄,pay域表示工资。
voidQA(Workera[],intn){
i++)
a[i].name>
a[i].age>
a[i].pay;
五、按题目要求编写函数(6分)
假定函数声明为“voidPrint(inta[],intn);
”,在函数体中按下标从大到小的次序输出数组a中的n个元素的值,并要求每行输出6个元素,当然最后一行可以不足6个。
(参考答案)
一、单选题(每小题2分,共20分)
1.A2.C3.D4.D5.C6.B7.C8.B9.D10.B
1.D2.83.++x4.a>
b&
b!
=15
5.20806.局部7.208.p->
data
9.AB(){}10.break
1.s=84//6分
2.10,25//每个数据3分
3.14,82//每个数据3分
4.120//6分
5.wangfong461640//3分,每个数据1分
wangfong511340//3分,每个数据1分
1.统计出数组a的n个元素中大于等于参数k的值的元素个数并返回。
2.判断x是否为一个素数(或质数),若是则返回真,否则返回假。
3.从键盘上输入n个Worker结构类型的记录依次保存到一维数组a的对应元素中。
五、按题目要求编写函数(6分)
按函数编写的完整程度酌情。
voidPrint(inta[],intn)
inti,j=0;
for(i=n-1;
i>
=0;
i--){//2分
a[i]<
’’;
//3分
if(++j%6==0)cout<
//5分
训练第三套
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.在下面的do循环语句中,其循环体被执行的次数为()。
inti=0;
doi++;
while(i*i<
10);
A.4B.3C.5D.2
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.floatBC(inta,intb,intc=0);
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&
);
1.执行“cout<
char('
+3);
”语句后得到的输出结果为________。
2.在C++每个程序行的后面或单独一行的开始使用注释的标记符为__________。
3.表达式float(25)/4的值为___________。
4.关系表达式x+y>
5的相反表达式为____________。
5.假定一个二维数组的定义为“inta[3][6];
”,则该数组含有__________个元素。
6.执行“typedefintABC[20];
”语句把ABC定义为具有20个整型元素的________。
7.假定p所指对象的值为36,p+1所指对象的值为49,则*++p的值为________。
8.假定a是一个一维数组,则a[i]的指针访问方式为____________。
9.对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的____________实现。
10.当一个类对象离开它的作用域时,系统将自动调用该类的____________。
stdlib.h>
intSD(inta,intb,charop){
switch(op){
case'
+'
returna+b;
-'
returna-b;
default:
{cout<
操作符op出错,退出运行!
exit
(1);
intx=20,y=6;
SD(x,y,'
)<
运行结果:
string.h>
char*a[5]={"
student"
"
worker"
cadre"
soldier"
apen"
char*p1;
p1=a[0];
5;
if(strcmp(a[i],p1)>
0)p1=a[i];
p1<
intWF(intx,inty){
x=x+y;
y=x+y;
returnx+y;
WF(8,5)<
4.#include<
constintn=9;
voidmain(){运行结果:
inta[n]={2,4,6,8,10,12,14,16,18};
if(i%3==0)s+=a[i];
”s=”<
int*d=newint[5];
inti;
for(i=0;
i++){运行结果:
d[i]=2*i+1;
d[i]<
delete[]d;
1.floatFI(intn){//n为大于等于1的整数
flo