vc++期末考试题2012年及答案

玛丽莲梦兔
576次浏览
2020年08月03日 02:47
最佳经验
本文由作者推荐

关于元旦的图片-公司节能减排方案


南阳理工大学课程考试试卷

(学生考试用)

课程名称:

VC++程序设计
学分: 4 大纲编号 06000702
试卷编号: A 考试方式: 闭卷 满分分值: 80 考试时间: 120 分钟
组卷日期: 2012年6月15日 组卷教师
(签字)
: 审定人
(签字)

学生班级: 计算机系11级 学生学号: 学生姓名:
说明:1.所有试题做在答卷纸上
2.考试完毕后连考卷一起交上

一、单项选择题(每题2分,共40分)
1. 以下说明语句中,不存在语法错误的是 。
A) int 10long; B) int _2int;
C) float X3-Dmax; D) char [20];
2. 设有说明语句:int d,e; 以下选项中,存在语法错误的是 。
A) d=9+e==d+2; B) d=e+=2;
C) f=g+f=j*k++; D)(++d)++;
3. 设有说明语句: float y=5.16347 int x; 则以下表达式中,可以实现将y中的数值
保留小数点后2位,第三位四舍五入的表达式是_______ _。
A) y=(y*100+0.5)100.0 B) x=y*100+0.5,y=x100.0
C) y=y*100+0.5100.0 D) y=(y100+0.5)*100.0
4. 设有语句:char x=-6,y=10,z; z=x^y<<2;(其中<<的优先级高于^),则z的二进制
值是________。
A) 00101110 B) 11111000
C) 11111010 D) 11010010
5. 下面程序段所表示的数学函数关系是________。
x=-1;
if(a!=0)
{if(a>0) x=1;}
else x=0;
-1 (a<0) 1 (a<0)
A)x= 0 (a=0) B)x= -1 (a=0)
1 (a>0) 0 (a>0)

0 (a<0) -1 (a<0)
C)x= -1 (a=0) D)x= 1 (a=0)
1 (a>0) 0 (a>0)

第 1 页




6. 设有定义:int a=1,b=10; 则执行以下循环语句后,a和b的值分别为 。
do{ b-=a;
a++;
}while(b--<0);
A) 8 2 B) -2 -1 C) -1 8 D)2 8
7. 设有宏定义如下:
#define MIN(x,y) (x)>(y)?(x):(y)
#define T(x,y,r) x*r*y4
则执行以下语句后,s1和s2的值分别为 。
int a=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a); s2=T(a++,a*++b,a+b+c)
A) 3 27 B) 27 3 C) 24 1 D) 3 24
8. 以下关于文件包含的描述中正确的是_____
A) 每个C++程序必须包含预处理命令:#include
B) #include 后面的文件名用双引号()括起和尖括号(<>)括起完全等效
C) #include 命令行可以出现在源程序中需要的任意行
D) 用#include 所包含的文件称为头文件,必须以.h作为扩展名
9. 设有函数调用语句:fun((x1,x2),x3,(x4,x5,x6)); 该函数调用中实参的个数
是 。
A) 2 B) 3 C) 5 D) 6
10. 下列函数原型说明中,错误的是________。
A) int &f1(); B) int f2(double=5);
C) void f3(void (*p)()); D) int f4(int a=0,int b);
11. 以下关于C++函数的描述中,正确的是________。
A) 内联函数就是定义在另一个函数体内部的函数
B) 函数体的最后一条语句必须是return语句
C) c++要求在调用一个函数之前,该函数已定义或已有该函数的原型说明
D) 编译器会根据函数的返回值类型区分函数的不同重载形式
12. 以下叙述中不正确的是_________。
A) 在函数内的复合语句中定义的变量在本函数范围内有效
B) 形式参数是局部变量
C) 在函数内定义的变量只在本函数范围内有效
D) 在不同函数中可以使用相同名字的变量
13. 设有说明语句:char s[80]=”Hello”; int a[20]={1,2}; 下列选项中,存在语法
错误的是________。
A) cin>>s; B) cout<>a; D) cout<
共 4 页




14. 若有说明语句:int y[ ][4]={0,0}; 则下面叙述不正确的是 。
A) 数组y的每个元素都可得初值0
B) 二维数组y的行数为1
C) 该说明等价于int y[ ][4]={0};
D) 只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0
15. 以下说明语句中,没有语法错误的是________。
A) int a,*pa=&a,*pb=*pa; B) int aa,&b=aa,*pc=&b;
C) int c[10],&pc=c; D) int dd,&u=&dd,*v=u;
16. 执行以下程序段后,m的值是 。
int a[2][3]={{1, 3, 5}, {7, 9, 11}};
int m, *ptr;
ptr = &a[0][0];
m = (*ptr)*(*ptr+2)*(*(ptr+4));
A) 编译出错 B) 27 C) 45 D)无定值
17. 设用以下程序段建立了sp与str的关系,则以下对字符串的引用不正确的是 。
char str[4][8]={
for (int n=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数组元素地址的正确引用
形式是 。
int s[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) *p max(a,b) C) p->max(a,b) D) (*p)(a,b)
20. 设有以下定义和语句,则以下表达式值为6的是________。
struct ss
{ int a; ss *b;};
ss x[3]={5,&x[1],7,&x[2],9,'0'},*ptr;
ptr=&x[0];
A) ptr->a++ B) ptr++->a C) ptr->a D) ++ptr->a

第 2 页



二、读程序,写出输出结果(每题3分,共12分)
1. #include
int f(int n)
a=3
{
a=3
int a=3;
b=70
if(n==3) a=2;
else{
cout<<
a=n*f(n-2);
}
return a;
}
void main(void)
{
int b=7;
b=f(b);
cout<<
}

2. #include
int f(int &n,int &m)
{
static int k=10;
n+=m; k+=n; m+=k;
k=17
cout<<
k=45
return(n+m);
k=122 a=28 b=66
}
void main(void){
int a=3,b=4,k;
k=f(a,b)+f(a,b);
cout<<
}

3. #include
char *str(char *p1, char *p2)
{
char *p=p1;
while(*p) p++;
*p++=' ';
while(*p++=*p2++);
*p++=' ';
return p1;
}
共 4 页




void main(void)
{
love Nanjing
char s1[50]=
I love Nanjing
char s2[50]=
I love Nanjing love Nanjing Nanjing
char s3[]=
cout< cout< cout<}

4. #include
struct abc{
static int a;
int b;
}x,y;
int abc::a=2;
void main(void)
{
x.b=6; y.b=8;
cout< x.a=18;
cout< cout<}

三、填程序,在空格位置填入合适的代码(每空2分,共8分)
以下函数Split()的功 能是把形参链表list分割成两条链表,data值为奇数的结
点保留在原链表上,值为偶数的结点移 到另一个链表中,并返回该链表。

【程序】
struct Node{
int data;
Node *next;
};
struct LinkedList{
Node * head;
int size;
};
第 3 页




LinkedList Split(LinkedList &list)
{
LinkedList list2 = create();
Node * p1, * p2, *p3;
p3=;
p1=p2=;
while(p2){
if(p2->data%2==0){
if(p2==)
=p2->next;
else
p1->next=p2->next;
--;
if(==0)
=p2;
else
p3->next=p2;
p3=p2;
p2=p2->next;
p3->next=0;
++;
}
else{
p1=p2;
p2=p2->next;
}
}
return(list2);
}
共 4 页




四、
写程序,根据要求编写程序(每题10分,共20分)
1、编写一个函数,对一个整数数组求对应元素的集合set(即不重复元素)
int getIntSet(const int a[], int n, int set[])
形参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、
int getIntSet(const int a[], int n, int set[]){
int count = 0;
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++)
if (a[i]==a[j])
break;
if (j == n)
set[count++] = a[i];
}
return count;
}
2、
struct GradeLevel{ 成绩统计结构类型
float average; 平均分
int ac; 90-100分人数
int bc; 80-89分人数
int cc; 70-79分人数
int dc; 60-69分人数
int ec; 0-59 分人数
};
void printGradeLevel(const GradeLevel &gl){
int number = + + + +
cout<<统计数据:
cout<<考生数量:平均成绩:
cout<<<<<<

cout<<<<<<

cout<<<<<<

cout<<<<<<

cout<<<<<<

}

void input(float a[], int n){
for (int i = 0; i < n; i++)
cin>>a[i];
}
GradeLevel stat(const float a[], int n){
GradeLevel level = {0};
float sum = 0;
for(int i = 0; i < n; i++){





sum += a[i];
if (a[i] >= 90)
++;
else if (a[i] >= 80)
++;
else if (a[i] >= 70)
++;
else if (a[i] >= 60)
++;
else
++;
}
e = sum n;
return level;
}

void main(){
int n = 0;
cout<<输入n=
cin>>n;
if (n < 2) return;
float *a = new float[n];
input(a, n);
printGradeLevel(stat(a, n));
delete []a;
}
第 4 页



共 4 页


南阳理工大学课程考试试卷

(学生考试用)

课程名称:

VC++程序设计
学分: 4 大纲编号 06000702
试卷编号: A 考试方式: 闭卷 满分分值: 80 考试时间: 120 分钟
组卷日期: 2012年6月15日 组卷教师
(签字)
: 审定人
(签字)

学生班级: 计算机系11级 学生学号: 学生姓名:
说明:1.所有试题做在答卷纸上
2.考试完毕后连考卷一起交上

一、单项选择题(每题2分,共40分)
1. 以下说明语句中,不存在语法错误的是 。
A) int 10long; B) int _2int;
C) float X3-Dmax; D) char [20];
2. 设有说明语句:int d,e; 以下选项中,存在语法错误的是 。
A) d=9+e==d+2; B) d=e+=2;
C) f=g+f=j*k++; D)(++d)++;
3. 设有说明语句: float y=5.16347 int x; 则以下表达式中,可以实现将y中的数值
保留小数点后2位,第三位四舍五入的表达式是_______ _。
A) y=(y*100+0.5)100.0 B) x=y*100+0.5,y=x100.0
C) y=y*100+0.5100.0 D) y=(y100+0.5)*100.0
4. 设有语句:char x=-6,y=10,z; z=x^y<<2;(其中<<的优先级高于^),则z的二进制
值是________。
A) 00101110 B) 11111000
C) 11111010 D) 11010010
5. 下面程序段所表示的数学函数关系是________。
x=-1;
if(a!=0)
{if(a>0) x=1;}
else x=0;
-1 (a<0) 1 (a<0)
A)x= 0 (a=0) B)x= -1 (a=0)
1 (a>0) 0 (a>0)

0 (a<0) -1 (a<0)
C)x= -1 (a=0) D)x= 1 (a=0)
1 (a>0) 0 (a>0)

第 1 页




6. 设有定义:int a=1,b=10; 则执行以下循环语句后,a和b的值分别为 。
do{ b-=a;
a++;
}while(b--<0);
A) 8 2 B) -2 -1 C) -1 8 D)2 8
7. 设有宏定义如下:
#define MIN(x,y) (x)>(y)?(x):(y)
#define T(x,y,r) x*r*y4
则执行以下语句后,s1和s2的值分别为 。
int a=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a); s2=T(a++,a*++b,a+b+c)
A) 3 27 B) 27 3 C) 24 1 D) 3 24
8. 以下关于文件包含的描述中正确的是_____
A) 每个C++程序必须包含预处理命令:#include
B) #include 后面的文件名用双引号()括起和尖括号(<>)括起完全等效
C) #include 命令行可以出现在源程序中需要的任意行
D) 用#include 所包含的文件称为头文件,必须以.h作为扩展名
9. 设有函数调用语句:fun((x1,x2),x3,(x4,x5,x6)); 该函数调用中实参的个数
是 。
A) 2 B) 3 C) 5 D) 6
10. 下列函数原型说明中,错误的是________。
A) int &f1(); B) int f2(double=5);
C) void f3(void (*p)()); D) int f4(int a=0,int b);
11. 以下关于C++函数的描述中,正确的是________。
A) 内联函数就是定义在另一个函数体内部的函数
B) 函数体的最后一条语句必须是return语句
C) c++要求在调用一个函数之前,该函数已定义或已有该函数的原型说明
D) 编译器会根据函数的返回值类型区分函数的不同重载形式
12. 以下叙述中不正确的是_________。
A) 在函数内的复合语句中定义的变量在本函数范围内有效
B) 形式参数是局部变量
C) 在函数内定义的变量只在本函数范围内有效
D) 在不同函数中可以使用相同名字的变量
13. 设有说明语句:char s[80]=”Hello”; int a[20]={1,2}; 下列选项中,存在语法
错误的是________。
A) cin>>s; B) cout<>a; D) cout<
共 4 页




14. 若有说明语句:int y[ ][4]={0,0}; 则下面叙述不正确的是 。
A) 数组y的每个元素都可得初值0
B) 二维数组y的行数为1
C) 该说明等价于int y[ ][4]={0};
D) 只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0
15. 以下说明语句中,没有语法错误的是________。
A) int a,*pa=&a,*pb=*pa; B) int aa,&b=aa,*pc=&b;
C) int c[10],&pc=c; D) int dd,&u=&dd,*v=u;
16. 执行以下程序段后,m的值是 。
int a[2][3]={{1, 3, 5}, {7, 9, 11}};
int m, *ptr;
ptr = &a[0][0];
m = (*ptr)*(*ptr+2)*(*(ptr+4));
A) 编译出错 B) 27 C) 45 D)无定值
17. 设用以下程序段建立了sp与str的关系,则以下对字符串的引用不正确的是 。
char str[4][8]={
for (int n=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数组元素地址的正确引用
形式是 。
int s[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) *p max(a,b) C) p->max(a,b) D) (*p)(a,b)
20. 设有以下定义和语句,则以下表达式值为6的是________。
struct ss
{ int a; ss *b;};
ss x[3]={5,&x[1],7,&x[2],9,'0'},*ptr;
ptr=&x[0];
A) ptr->a++ B) ptr++->a C) ptr->a D) ++ptr->a

第 2 页



二、读程序,写出输出结果(每题3分,共12分)
1. #include
int f(int n)
a=3
{
a=3
int a=3;
b=70
if(n==3) a=2;
else{
cout<<
a=n*f(n-2);
}
return a;
}
void main(void)
{
int b=7;
b=f(b);
cout<<
}

2. #include
int f(int &n,int &m)
{
static int k=10;
n+=m; k+=n; m+=k;
k=17
cout<<
k=45
return(n+m);
k=122 a=28 b=66
}
void main(void){
int a=3,b=4,k;
k=f(a,b)+f(a,b);
cout<<
}

3. #include
char *str(char *p1, char *p2)
{
char *p=p1;
while(*p) p++;
*p++=' ';
while(*p++=*p2++);
*p++=' ';
return p1;
}
共 4 页




void main(void)
{
love Nanjing
char s1[50]=
I love Nanjing
char s2[50]=
I love Nanjing love Nanjing Nanjing
char s3[]=
cout< cout< cout<}

4. #include
struct abc{
static int a;
int b;
}x,y;
int abc::a=2;
void main(void)
{
x.b=6; y.b=8;
cout< x.a=18;
cout< cout<}

三、填程序,在空格位置填入合适的代码(每空2分,共8分)
以下函数Split()的功 能是把形参链表list分割成两条链表,data值为奇数的结
点保留在原链表上,值为偶数的结点移 到另一个链表中,并返回该链表。

【程序】
struct Node{
int data;
Node *next;
};
struct LinkedList{
Node * head;
int size;
};
第 3 页




LinkedList Split(LinkedList &list)
{
LinkedList list2 = create();
Node * p1, * p2, *p3;
p3=;
p1=p2=;
while(p2){
if(p2->data%2==0){
if(p2==)
=p2->next;
else
p1->next=p2->next;
--;
if(==0)
=p2;
else
p3->next=p2;
p3=p2;
p2=p2->next;
p3->next=0;
++;
}
else{
p1=p2;
p2=p2->next;
}
}
return(list2);
}
共 4 页




四、
写程序,根据要求编写程序(每题10分,共20分)
1、编写一个函数,对一个整数数组求对应元素的集合set(即不重复元素)
int getIntSet(const int a[], int n, int set[])
形参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、
int getIntSet(const int a[], int n, int set[]){
int count = 0;
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++)
if (a[i]==a[j])
break;
if (j == n)
set[count++] = a[i];
}
return count;
}
2、
struct GradeLevel{ 成绩统计结构类型
float average; 平均分
int ac; 90-100分人数
int bc; 80-89分人数
int cc; 70-79分人数
int dc; 60-69分人数
int ec; 0-59 分人数
};
void printGradeLevel(const GradeLevel &gl){
int number = + + + +
cout<<统计数据:
cout<<考生数量:平均成绩:
cout<<<<<<

cout<<<<<<

cout<<<<<<

cout<<<<<<

cout<<<<<<

}

void input(float a[], int n){
for (int i = 0; i < n; i++)
cin>>a[i];
}
GradeLevel stat(const float a[], int n){
GradeLevel level = {0};
float sum = 0;
for(int i = 0; i < n; i++){





sum += a[i];
if (a[i] >= 90)
++;
else if (a[i] >= 80)
++;
else if (a[i] >= 70)
++;
else if (a[i] >= 60)
++;
else
++;
}
e = sum n;
return level;
}

void main(){
int n = 0;
cout<<输入n=
cin>>n;
if (n < 2) return;
float *a = new float[n];
input(a, n);
printGradeLevel(stat(a, n));
delete []a;
}
第 4 页



共 4 页

什么叫中元节-全国职称英语考试


清明节的手抄报怎么画-工作总结模板


卡内基美隆大学-查摆剖析材料


改变一点点作文-寻找作文


特立尼达和多巴哥共和国-音乐教案


互联网新闻信息服务管理规定-黑龙江八一农垦


花木兰观后感-三年级下册作文大全


手板招聘-后备干部推荐材料