vc++期末考试题及答案Word文档下载推荐.docx
《vc++期末考试题及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《vc++期末考试题及答案Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
<
2;
(其中<
的优先级高于^),则z的二进制值是________。
A)00101110B)11111000
C)11111010D)11010010
5.下面程序段所表示的数学函数关系是________。
x=-1;
if(a!
=0)
{if(a>
0)x=1;
}
elsex=0;
-1(a<
0) 1(a<
0)
A)x=0(a=0)B)x=-1(a=0)
1(a>
0)0(a>
0(a<
0)-1(a<
C)x=-1(a=0) D)x=1(a=0)
第1页
6.设有定义:
inta=1,b=10;
则执行以下循环语句后,a和b的值分别为。
do{b-=a;
a++;
}while(b--<
0);
A)82B)-2-1C)-18D)28
7.设有宏定义如下:
#defineMIN(x,y)(x)>
(y)?
(x):
(y)
#defineT(x,y,r)x*r*y/4
则执行以下语句后,s1和s2的值分别为。
inta=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c)
;
A)327B)273C)241D)324
8.以下关于文件包含的描述中正确的是_____
A)每个C++程序必须包含预处理命令:
#include<
iostream.h>
B)#include后面的文件名用双引号("
"
)括起和尖括号(<
>
)括起完全等效
C)#include命令行可以出现在源程序中需要的任意行
D)用#include所包含的文件称为头文件,必须以.h作为扩展名
9.设有函数调用语句:
fun((x1,x2),x3,(x4,x5,x6));
该函数调用中实参的个数是。
A)2B)3C)5D)6
10.下列函数原型说明中,错误的是________。
A)int&
f1();
B)intf2(double=5);
C)voidf3(void(*p)());
D)intf4(inta=0,intb);
11.以下关于C++函数的描述中,正确的是________。
A)内联函数就是定义在另一个函数体内部的函数
B)函数体的最后一条语句必须是return语句
C)c++要求在调用一个函数之前,该函数已定义或已有该函数的原型说明
D)编译器会根据函数的返回值类型区分函数的不同重载形式
12.以下叙述中不正确的是_________。
A)在函数内的复合语句中定义的变量在本函数范围内有效
B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在不同函数中可以使用相同名字的变量
13.设有说明语句:
chars[80]=”Hello”;
inta[20]={1,2};
下列选项中,存在语法错误的是________。
A)cin>
s;
B)cout<
C)cin>
a;
D)cout<
共4页
14.若有说明语句:
inty[][4]={0,0};
则下面叙述不正确的是。
A)数组y的每个元素都可得初值0
B)二维数组y的行数为1
C)该说明等价于inty[][4]={0};
D)只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0
15.以下说明语句中,没有语法错误的是________。
A)inta,*pa=&
a,*pb=*pa;
B)intaa,&
b=aa,*pc=&
b;
C)intc[10],&
pc=c;
D)intdd,&
u=&
dd,*v=u;
16.执行以下程序段后,m的值是。
inta[2][3]={{1,3,5},{7,9,11}};
intm,*ptr;
ptr=&
a[0][0];
m=(*ptr)*(*ptr+2)*(*(ptr+4));
A)编译出错 B)27 C)45 D)无定值
17.设用以下程序段建立了sp与str的关系,则以下对字符串的引用不正确的是。
charstr[4][8]={"
str1"
"
str2"
str3"
str4"
},*sp[4];
for(intn=0;
n<
4;
n++)
sp[n]=str[n];
A)sp B)*sp C)sp[0] D)*(sp+1)
18.若有以下定义和赋值语句,且0≤i≤1,0≤j≤2,则以下对s数组元素地址的正确引用形式是。
ints[2][3]={0},(*p)[3],i,j;
p=s;
A)(*(p+i))[j] B)*(p[i]+j)
C)*(p+i)+j D)(p+i)+j
19.若有函数max(a,b),并且已使函数指针变量p指向函数max,则利用函数指针调用max函数的正确形式是。
A)(*p)max(a,b)B)*pmax(a,b)C)p->
max(a,b)D)(*p)(a,b)
20.设有以下定义和语句,则以下表达式值为6的是________。
structss
{inta;
ss*b;
};
ssx[3]={5,&
x[1],7,&
x[2],9,'
\0'
},*ptr;
ptr=&
x[0];
A)ptr->
a++B)ptr++->
aC)ptr->
aD)++ptr->
a
第2页
二、读程序,写出输出结果(每题3分,共12分)
a=3
b=70
1.#include<
intf(intn)
{
inta=3;
if(n==3)a=2;
else{
cout<
a="
a<
'
\n'
a=n*f(n-2);
}
returna;
voidmain(void)
{
intb=7;
b=f(b);
b="
b<
endl;
2.#include<
intf(int&
n,int&
m)
k=17
k=45
k=122a=28b=66
staticintk=10;
n+=m;
k+=n;
m+=k;
k="
k<
return(n+m);
voidmain(void){
inta=3,b=4,k;
k=f(a,b)+f(a,b);
\t'
3.#include<
char*str(char*p1,char*p2)
char*p=p1;
while(*p)p++;
*p++='
'
while(*p++=*p2++);
returnp1;
voidmain(void)
loveNanjing
IloveNanjing
IloveNanjingloveNanjingNanjing
chars1[50]="
I"
chars2[50]="
love"
chars3[]="
Nanjing"
str(s2,s3)<
str(s1,s2)<
s1<
s2<
s3;
4.#include<
structabc{
staticinta;
intb;
}x,y;
intabc:
:
a=2;
x.b=6;
y.b=8;
x.a<
x.b<
y.a<
y.b<
x.a=18;
abc:
}
三、填程序,在空格位置填入合适的代码(每空2分,共8分)
以下函数Split()的功能是把形参链表list分割成两条链表,data值为奇数的结点保留在原链表上,值为偶数的结点移到另一个链表中,并返回该链表。
【程序】
structNode{
intdata;
Node*next;
structLinkedList{
Node*head;
intsize;
第3页
LinkedListSplit(LinkedList&
list)
LinkedListlist2=create();
Node*p1,*p2,*p3;
p3=list2.head;
p1=p2=list.head;
while(p2){
if(p2->
data%2==0){
if(p2==list.head)
list.head=p2->
next;
else
p1->
next=p2->
list.size--;
if(list2.head==0)
list2.head=p2;
p3->
next=p2;
p3=p2;
p2=p2->
next=0;
list2.size++;
p1=p2;
return(list2);
四、写程序,根据要求编写程序(每题10分,共20分)
1、编写一个函数,对一个整数数组求对应元素的集合set(即不重复元素)
intgetIntSet(constinta[],intn,intset[])
形参a中的n个整数可能存在重复,要求把其中不重复的整数放入set中,并返回不重复整数的个数。
例如,如果a={2,1,1,2,1,3},set应为{2,1,3},次序无所谓,返回3,表示有3个不重复元素。
2、输入n(n>
=2)名学生的成绩(0-100),统计如下数据:
60分以下人数及百分比;
60-69分人数及百分比;
70-79分人数及百分比;
80-89分人数及百分比;
90-100分人数及百分比;
平均分;
要求,先输入n,再输入n个float值,然后输出统计结果。
提示,自行设计结构和函数来简化复杂性。
注意使用动态内存。
参考答案
1、
intgetIntSet(constinta[],intn,intset[]){
intcount=0;
for(inti=0;
i<
n;
i++){
for(intj=i+1;
j<
j++)
if(a[i]==a[j])
break;
if(j==n)
set[count++]=a[i];
returncount;
2、
structGradeLevel{//成绩统计结构类型
floataverage;
//平均分
intac;
//90-100分人数
intbc;
//80-89分人数
intcc;
//70-79分人数
intdc;
//60-69分人数
intec;
//0-59分人数
voidprintGradeLevel(constGradeLevel&
gl){
intnumber=gl.ac+gl.bc+gl.cc+gl.dc+gl.ec;
统计数据:
考生数量:
number<
平均成绩:
gl.average<
90-100:
<
gl.ac<
占"
(float)gl.ac/number*100<
%"
80-89:
"
gl.bc<
(float)gl.bc/number*100<
70-79:
gl.cc<
(float)gl.cc/number*100<
60-69:
gl.dc<
(float)gl.dc/number*100<
0-59:
gl.ec<
(float)gl.ec/number*100<
voidinput(floata[],intn){
for(inti=0;
i++)
cin>
a[i];
GradeLevelstat(constfloata[],intn){
GradeLevellevel={0};
floatsum=0;
sum+=a[i];
if(a[i]>
=90)
level.ac++;
elseif(a[i]>
=80)
level.bc++;
=70)
level.cc++;
=60)
level.dc++;
else
level.ec++;
level.average=sum/n;
returnlevel;
voidmain(){
intn=0;
输入n="
cin>
n;
if(n<
2)return;
float*a=newfloat[n];
input(a,n);
printGradeLevel(stat(a,n));
delete[]a;
第4页