C++考试

发布时间:2020-07-10   来源:文档文库   
字号:
有几个注意事项,大家注意:
(1)语句,变量定义等书写的空格数 int x;中间空格1个空格,如果空格2个以上,系统认为是不匹配,没有分数.
(2)程序填空题和改错题,一定要保存,并且看清空中的语句是否有;,不需要填写;的,不要添加.
(3)程序设计题需要运行编译.
(4)考试不允许带手机,草稿纸不能自带,需要由老师发

试卷总分:100 共有题型:6

一、填空 5 (共计10分)

二、判断 10 (共计10分)

三、单项选择 15 (共计30分)

四、程序填空 3 (共计24分)

五、程序改错 2 (共计16分)

六、程序设计 1 (共计10分) 复习题: 一、填空 1
C++语言结构化程序中,1是程序的基本组成单元;C++语言的面向对象设计框架中, 2】是程序的基本组成单元。 答案:=======(答案1=======函数

=======(答案2======= 2
C++中封装性、继承性和【1】是面向对象程序设计的三个主要性质。 答案:
=======(答案1=======多态性 3

赋值运算符的结合性是由【1 至【2 答案:
=======(答案1======= =======(答案2======= 4
C++语言的参数传递机制包括传值和传地址两种,如果调用函数 时,需要改变实参或者返回多个值,应该采取【1】方式。 答案:
=======(答案1=======传地址==================传址 5
ijk均为int型变量,则执行完for(i=0,j=10;i<=j;i++,j--k=i+j; 语句后,K的值为【1 答案:=======(答案1=======10 6
使用插入符进行标准输出文件输出时,使用的输出流对象名是【1 答案:
=======(答案1=======cout 7
C++语言的参数传递机制包括传值和传地址两种,如果调用函数 时,需要改变实参或者返回多个值,应该采取【1】方式。 答案:

=======(答案1=======传地址==================传址 8
类中成员默认的访问权限是【1】的. 答案:
=======(答案1=======私有================== private 9
表达式+1/2+45%10=1 答案:
=======(答案1======= 10
使用关键字inline说明的函数称为 1 函数, 具有相同函数名但具有不同实现的函数称为 2 函数。 答案:
=======(答案1=======内联 =======(答案2=======重载 二、判断 1
预处理命令是在进行编译时首先执行的,然后再进行正常编译。 答案:Y 2
字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另一个用单撇号。 答案:N 3
可以通过typedef增加新的数据类型。 答案:N 4

函数定义时必须给出函数体,函数体内至少有一条语句。 答案:N 5
如果一个函数在其函数体内直接或间接的调用了自己,该函数称为递归函数。 答案:Y 6
continue语句只能出现在循环体中. 答案:Y 7
指针可以加上或减去一个int型数,也可以加上一个指针。 答案:N 8
引用是某个变量的别名,引用是被绑定在被引用的变量上。 答案:Y 9
表达式中各操作数计算顺序取决于运算符的优先级和结合性。 答案:Y 10
使用关键字class定义的类中默认的访问权限是私有(private. 答案:Y 11
返回值类型、参数个数和参数类型都不相同的函数可以重载. 答案:Y 12
如果一个函数在其函数体内直接或间接的调用了自己,该函数 称为递归函数。 答案:Y

13
函数可以设置默认的参数值,默认参数值必须设置在函数定义时的形参上。 答案:N 14
开关语句的<语句序列>中必须有一个break语句,否则该开关语句便无法退出。 答案:N 15
开关语句中的default关键字,只能放在该语句的末尾,不能放在开头或中间。 答案:N 16
局部静态变量与自动变量作用域相同,但生命周期不同. 答案:Y 17
当说明一个结构变量时,系统分配给它的内存是各成员所需内存量的总和。 答案:Y 18
函数中参数传递方式中,传值是可以节省在量所需的内存空间和时间。 答案:N 19
用来给数组进行初始化的初始值表内的数据项的个数必须小于等于数组元素个数。 答案:Y 20
C语言是C++语言的一个子集。C++语言继承了C语言。 答案:Y

三、单项选择 1

下列while循环的次数是【 while(int i=O i-- A:0 B:1 C:5 D:无限 答案:A 2
下面常数中错误的是【 A:0xA5 B: C:3e2 D:0583 答案:D 3
下列for循环的循环体执行次数为【 for(int i(Oj(10i=j=10i++j-- A:0 B:1 C:10 D:无限 答案:D 4
在下列运算符中,优先级最低的是: A:|| B:!= C:< 答案:A 5
以下正确的说法是(
A:用户若需要调用标准函数,调用前必须重新定义 B:用户可以直接调用所有标准库函数
C:用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数 D:用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数 答案:D 6
以下代码运行后,abcd的值为:() int a,b,c,d;
D:+

a=b=c=1; d=++a||++b&&++c;
A:1111 B:2221 C:2112 D:2111 答案:D 7
若使用一维数组名作函数实参,则以下正确的说法是____ A:必须在主调函数中说明此数组的大小 B:实参数组类型与形参数组类型可以不匹配 C:在被调函数中,不需要考虑形参数组的大小 D:实参数组名与形参数组名必须一致

答案:A
8
以下符号中不能作为标识符的是: A:_256 B:void C:sum D:Struct 答案:B 9
1. 设有以下说明语句 struct stu { int a; float b; } stutype;
则下面的叙述不正确的是[ ]
A:struct是结构类型的关键字 B:stu是用户定义的结构类型名 C:stutype是用户定义的结构类型名 D:ab都是结构成员名 答案:C

10
若有以下定义和语句,且0则对数组元素地址的正确表示是【 int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a;
A:&(a+1 B:a++ C:*p D:&p[i] 答案:D 11
合法的数组初始化语句是(
A:char a[] = "string" B:int a[5] = {0,1,2,3,4,5} C:int a[] = "string" D:char a[] = {0,1,2,3,4,5} 答案:A 12
已知:int i,x[3][3] = {1,2,3,4,5,6,7,8,9};则下面语句的输出结果【 for(i=0;i<3;i++ cout<
A:1 5 9 B:1 4 7 C:3 5 7 D:3 6 9 答案:C 13
下列【 】是语句。
A: B:a= 17 C:x+y D:cout<<\n 答案:A 14
已知函数f的原型是:void f(int *x,long &y;
则以下对函数f正确的调用语句是(其中ab是实参( . A:f(a,b B:f(&a,b C:f(a,&b D:f(&a,&b 答案:B 15

下述关于break语句的描述中, 】是不正确的 A:break语句可用于循环体内,它将退出该重循环 B:break语句可用于开关语句中,它将退出开关语句 C:break语句可用于if体内,它将退出if语句 D:break语句在一个循环体内可以出现多次

答案:C
16
C++语言对C语言进行了很多改进,C++语言相对于C语言的最根本的变化是【 A:增加了一些新的运算符
B:允许函数重载,并允许设置缺省参数 C:规定函数说明符必须用原型 D:引进了类和对象的概念 答案:D 17
若有以下说明和语句,且0则【 】是对数组元素的错误引用。 int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a;
A:*(a+i B:a[p-a] C:p+I D:*(&a[i] 18
C++语言对C语言进行了很多改进,C++语言相对于C语言的最根本的变化是【 A:增加了一些新的运算符
B:允许函数重载,并允许设置缺省参数 C:规定函数说明符必须用原型 D:引进了类和对象的概念 答案:D
答案:C

19
表达式9!=10的值为: A:非零值 B:true C:0 D:1 答案:D 20
下列运算符中优先级最高的是:( A:! B:% C:-= D:&& 答案:A 21

以下能正确计算1×2×3×…×10的程序段是____ A:do{i=1; s=1; s=s*i; i++;
}while(i<=10; B:do{i=1; s=0; s=s*i; i++; }while(i<=10;

C:i=1; s=1; do{s=s*i; i++; }while(i<=10; D:i=1; s=0; do{s=s*i; i++;
}while(i<=10;

答案:C 22 有如下程序 #include void main( {
int x=1,a=0,b=0; switch(x {
case 0: b++; case 1: a++; case 2: a++;b++; }
cout<<"a="< }
该程序的输出结果是(
A:a=2,b=1 B:a=1,b=1 C:a=1,b=0 D:a=2,b=2 答案:A 23

下列哪个是合法的自定义标识符( A:t*ime B:34fg C:void D:_256 答案:D 24

若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(a>b a=b; c=a; if(c!=a c=b;

cout< 其输出结果是(
A:程序段有语法错误 B:3,5,3 C:3,5,5 D:3,5,7 答案:B 25

下列条件语句中,功能与其它语句不同的是【 A:if (a cout< B:if (a==0 cout< C:if (a!=0 cout< D:if (a==0 cout< 答案:D 26
在函数的返回值类型与返回值表达式的类型的描述中,( 是错误的. A:函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的 B:函数返回值的类型就是返回值表达式的类型
C:函数返回值表达式类型与函数返回值类型不同时,表达式类型应转换成函数返回值类型 D:函数返回值类型决定了返回值表达式的类型 案:B 27

如果变量x,y已经正确定义,下列语句【 】不能正确将x,y的值进行交换: A:x=x+y;y=x-y;x=x-y B:t=x;x=yy=t C:t=y;y=x;x=t D:x=t;t=y;y=x 答案:D 28

下列输出字符'A'的方法中,( 是错误的.

A:cout< 答案:A 29

已知学生记录描述为 struct student { int no; char name[20]; char sex; struct {
int year; int month; int day; } birth; };
struct student s;
设变量s中的"生日"应是"19841111",下列对"生日"的正确赋值方式是【 A:year=1984;month=11; day=11; B:=1984;=11;=11; C:=1984; =11; =11; D: 答案:D 30

以下正确的说法是____
A:定义函数时,形参的类型说明可以放在函数体内 B:return后边的值不能为表达式

C:如果函数值的类型与返回值类型不一致,以函数值类型为准 D:如果形参与实参的类型不一致,以实参类型为准 答案:C

四、程序填空 1
/*------------------------------------------------------- 【程序填空】
--------------------------------------------------------- 功能:在一维数组中统计正数和负数的个数,正数的个数存入 变量C1中,负数的个数存入变量C2中。
-------------------------------------------------------*/ #include void main( {
int a[10]={1,-2,3,4,-5,6,7,8,-9,10}; /***********SPACE***********/ 【】
/***********SPACE***********/ for (int i=0;【】;i++ /***********SPACE***********/ if(【】>0 c1++; else
/***********SPACE***********/ 【】;
cout<

} 答案:
=======(答案1=======int c1=0 , c2=0 ;
=======(答案2======= i<10==================i<=9 =======(答案3=======a[i]
=======(答案4=======c2++=========c2=c2+1===========++c2===========c2+=1 2

/*------------------------------------------------------- 【程序填空】
--------------------------------------------------------- 功能:求1-10之间所有奇数的和。
-------------------------------------------------------*/

#include void main( {
/***********SPACE***********/ 【】 k=i=0;
/***********SPACE***********/ while(【】
/***********SPACE***********/ {
if(【】 k+=i; i++;

}
/***********SPACE***********/ cout<<【】; } 答案:
=======(答案1=======int k,i;==================int i,k; =======(答案2=======i<10==================i<=9 =======(答案3=======i%2==1==================i%2!=0 =======(答案4=======k 3

/*------------------------------------------------------- 【程序填空】
---------------------------------------------------------
功能:设计一个求和函数sum(int n,函数类型为整型,求1+2+3+...+a的值。 要求:在主函数中输入a的值,调用该函数并输出和。
-------------------------------------------------------*/

#include
/***********SPACE***********/ 【】; void main( {
int a,b;
cout<<"请输入a:"< cin>>a;
/***********SPACE***********/

【】;
cout< }
int sum(int n {
int i,k=0; for(i=1; i<=n;i++ /***********SPACE***********/ 【】;
/***********SPACE***********/ 【】; } 答案:
=======(答案1======= int sum(int nint sum(int =======(答案2=======b=sum(a =======(答案3=======k+=i k=k+i =======(答案4=======return k 4

/*------------------------------------------------------- 【程序填空】
---------------------------------------------------------

功能:从键盘输入两个正整数求最大公约数
-------------------------------------------------------*/

#include void main( {

int m,n,k; cin>>m>>n;
/***********SPACE***********/ k=【】;
/***********SPACE***********/ while(【】 { m=n;
/***********SPACE***********/ 【】
/***********SPACE***********/ k=【】; } cout< } 答案:
=======(答案1=======m%n
=======(答案2=======k!=0==================k =======(答案3=======n=k; =======(答案4=======m%n 5

/*------------------------------------------------------- 【程序填空】-每空2
---------------------------------------------------------

功能:设计一个求阶乘函数f(int n,函数类型为长整型,求1!+2!+3!++n!的值。

要求:在主函数中输入n的值,调用该函数并输出阶乘和。

-------------------------------------------------------*/ #include
/***********SPACE***********/ 【】 void main( {
int n; cin>>n; long s=0;
for(int i=1;i<=n;i++ /***********SPACE***********/ 【】

cout<的阶乘和为:"< }
long f(int n {
long m=1;
for(int i=1;i<=n;i++ /***********SPACE***********/ 【】
/***********SPACE***********/ 【】 } 答案:

=======(答案1=======long f(int n ;==================long f(int; =======(答案2=======s+=f(i;==================s=s+f(i; =======(答案3=======m*=i;==================m=m*i; =======(答案4=======return m; 6

/*------------------------------------------------------- 【程序填空】
--------------------------------------------------------- 功能:求两个数的最大公约数
-------------------------------------------------------*/


#include void main( {
int m,n,k; cin>>m>>n; k=m%n;
/***********SPACE***********/ while(【】 { m=n;
/***********SPACE***********/ 【】=k;
/***********SPACE***********/ k=【】; }

/***********SPACE***********/ cout<<【】; }


答案:
=======(答案1======= k!=0 ================== =======(答案2=======n =======(答案3=======m%n =======(答案4=======n

五、程序改错 1

/*------------------------------------------------------ 【程序改错】
--------------------------------------------------------

题目:计算分段函数的值
0 (x=0

y = 2x+20 (x>0

3x (x<0

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include void main(
k

{
float x,y;
/***********FOUND***********/ cin>>x>>endl;
/***********FOUND***********/ if(x=0 y=0; else if (x<0
/***********FOUND***********/ y=2x+20; else
/***********FOUND***********/ y=3x; cout< } 答案:
=======(答案1=======cin>>x; =======(答案2=======if(x==0 =======(答案3=======y=3*x; =======(答案4======= y=2*x+20; 2

/*------------------------------------------------------ 【程序改错】-每处错误2
-------------------------------------------------------- 题目:找出数组当中的最大数。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include
int max(int b[],int n; void main( {
int arr[10];
/***********FOUND***********/ for(int i=0;i<=10;i++ cin>>arr[i];
/***********FOUND***********/ cout< }

int max(int [],int {
int m=b[0];
for(int i=0;i if(b[i] >m
/***********FOUND***********/ b[i]=m;
/***********FOUND***********/ return max; } 答案:
=======(答案1=======for(int i=0;i<10;i++

=======(答案2=======cout< =======(答案3=======m=b[i];
=======(答案4=======return m;==================return(m; 3

/*------------------------------------------------------ 【程序改错】
--------------------------------------------------------


题目:计算并输出100200之间的所有素数的平方根之和.

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include #include void main( {
double s,sn; int n,k,f,m; s=;
for(n=101;n<=199;n+=2 {
sn=sqrt(n; m=(intsn; k=2; f=0;
/***********FOUND***********/

while(k<=m&&f=0 {
/***********FOUND***********/ if(n%k==0 f=0; /***********FOUND***********/ m++; }
/***********FOUND***********/ if (f s=s+sn; } cout< } 答案:
=======(答案1=======while(k<=m&&f==0 =======(答案2=======if(n%k==0 f=1; =======(答案3======= k++;
=======(答案4=======if (!f s=s+sn;} ==================if(f==0 s=s+sn;} 4

/*------------------------------------------------------ 【程序改错】
-------------------------------------------------------- 题目: 下列程序是求某班级的最高成绩、最低成绩和平均成绩 的程序,输入-1表示结束。
-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/

#include void main( {
float cj,sum,max,min,ave; int n=1; cin>>cj;
/***********FOUND***********/ sum=0;
/***********FOUND***********/ min=max=0;
/***********FOUND***********/ while(cj!=0 { n++;
/***********FOUND***********/ sum=cj;
if(cj>max max=cj; if(cj cin>>cj; } ave=sum/n;
cout< } 答案:

=======(答案1=======sum=cj; =======(答案2=======min=max=cj;
=======(答案3=======while(cj>=0==================while(cj!=-1 =======(答案4=======sum+=cj;==================sum= sum + cj ;

六、程序设计 例题1 #include #include

void wwjt(int o[]; void main( {
int i, n, j;
int a[11] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for(i = 0; i < 10; i ++ cout< cout< n = 35; j = 9;
while(j >= 0 && n < a[j] {
a[j + 1] = a[j]; j --; }
a[j + 1] = n;
cout<<"插入后的数组\n";


for(i = 0; i < 11; i ++ cout< cout< wwjt(a; }

void wwjt(int o[] {
fstream myfile; ("", ios::out;
for(int s = 0; s < 11; s ++ myfile< (; } 例题2 #include #include

int fun(int a[],int num {
for (int i=0; i<10; i++ if (a[i]==num break; if (i<10



return 1;
else }


return 0;

void main( {
int a[10]={5,25,56,75,34,56,345,543,45,65}; int num = 4;
if (fun(a,num==1
cout <<"找到!"< else
cout <<"没有找到!"< void wwjt(; wwjt(; }

void wwjt( {
int a[10]={5,25,56,75,34,56,345,543,45,65};

fstream myfile; ("",ios::out;
myfile< myfile< (; }


本文来源:https://www.2haoxitong.net/k/doc/5f218568d1d233d4b14e852458fb770bf68a3bc4.html

《C++考试.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式