资源描述
C++期中考试试题
一、 选择题(20*1)
1.设有说明“int a = 3,b = 5,m;”,则执行表达式“m = a<=3&& a+b<8”后,m的值为 。
A.tree B.false C.0 D.1
2.设有说明“int x=5, y=7, z=8;”,执行表达式“z += x++||y++||++z”后,则x、y、z的值分别为 。
A.6、7、9 B.6、8、10 C.6、8、8 D.6、8、1
3.设有以下语句序列:
int x; cin>>x;
float z, y[x]={1,2,3,4,5,6,7,8}; //A
z=v[3]; //B
则以下说法中正确的是 。
A.z的值为4 B.z的值为3 C.B行语句错 D.A行语句错
4.有关函数重载的正确说法是 。
A.函数名不同,但参数的个数和类型相同
B.函数名相同,但参数的个数不同或参数的类型不同
C.函数名相同,参数的个数和类型也相同
D.函数名相同,函数的返回值不同,而与函数的参数和类型无关
5.数组作为函数的形参时,把数组名作为实参,传递给函数的是 。
A.该数组的首地址 B.该数组的元素个数
C.该数组中的各元素值 D.该数组的大小
6.执行以下语句序列:
enum {Red,Blue,Yellow}cl,c2;cl=YeHow; //A
cout << cl; //B
则 。
A.输出1 B.输出2 C.输出3 D.B行语法错
7.设有说明语句“int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int * p=&a[0][0];”,能够正确表示数组元素a[2][2]的表达式是 。
A.p[2][2] B.*(*(p+2)+2) C.*(p+10) D.*(p+8)
8.在循环语句的循环体中使用break语句的作用是 。
A.结束本次循环 B.结束该层的循环 C.结束开关语句 D.结束程序执行
9.设有说明语句“int A[4][3]={{1,2},{3,4,5},{6,7,8},{9,10}};”,则A[0][2]和A[2][2]的初始化值分别为 。
A.0、7 B.3、8 C.3、7 D.0、8
10.设有语句“float(*p)(int,int);”,该语句的作用是 。
A.函数原型说明 B.p为指向函数的指针变量
C.函数定义 D.p为指向整数的指针变量
11.循环语句for(<表达式1>;<表达式2>;<表达式3>)<语句>中,<语句>的执行情况是 。
A.至少执行一次 B.至少执行两次
C.可能执行,也可能不执行 D.不执行
12.设有函数定义“int f1(void){return 100,200;}”,设用函数f1()时, 。
A.函数返回值100
B.函数返回两个值100和200
C.函数返回值200
D.语句“return 100,200;”语法错,不能调用函数
13.设有语句“int fun(char*,int &);char str[100];int k;”,则对函数fun的正确的调用形式是 。
A.fun(str, &k) B.fun (str, k)
C.fun(str[100], k) D.fun(str[100], &k)
14.执行下列程序段后,变量i的值为 。
int i = 10;
switch(i) {
case 9: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
A. 13 B.12 C.11 D.14
15.设有语句“for(int i=5, sum=0; i<10, sum++; i++)sum+=i;”,则for()语句的执行情况是 。
A.循环0次 B.循环4次 C.循环5次 D.循环6次
16.设有说明“int x[]={1,2,3,4,5}, *p=x;”,输出值不是5(数组x的元素个数)的是 。
A.cout<<sizeof(x)/sizeof(int)<<'\n';
B.cout<<sizeof(x)/sizeof(x[0])<<'\n';
C.cout<<sizeof(p)/sizeof(int)<<'\n';
D.cout<<sizeof(x)/sizeof(1)<<'\n';
17.下列数组定义中错误的是 。
A.char s1['a']; B.char s2[6]="string";
C.static int a[4]={1}; D.char * p[]={"A","B","C"};
18.在数学式中,变量x和y的取值为整数,而变量a和b的取值为实数,在C++程序中对应的正确表达式是 。
A.3/5*x*y/a/b B.3*x*y/5/a/b
C.3*x*y/5*a*b D.3/a/b/5*x*y
19.编译以下程序时,结果是 。
#include<iostream.h> //第1行
#define aa 123; //第2行
void main(void) //第3行
{cout<<aa<<'\n';} //第4行
A.编译时第2行出错 B.编译时第4行出错
C.编译时第2行和第4行均出错 D.编译时无错误
20.若定义了说明语句:int m=10;下列选项中,能正确说明引用类型变量x的语句是
A.int &x=m;
B.int &x=10;
C.int &x;
D.int &x=&m;
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)
● 基本概念题(6*1)
1.C++关系表达式中的关系成立时,则该关系表达式的值为 。
2.静态整型变量有确定的初值,其缺省的初值是 。
3.设有语句“char s[]="China\0Nanjin";int m=strlen(s);”,则m的值是 。
4.若有宏定义:
# define T(x,y,z) x*y*z/4
则表达式T(3+4,2*4,4+4)的值是 。
5.以下语句输出结果为 。
int a = 10;
int b = 6;
int cbit = a | b;
int clogic = a || b;
cout << cbit << “\n” << clogic << “\n” ;
6.vector<int> b(10, 1) 请解释该语句的作用 :
● 阅读程序题(10*3)
7.以下程序输出的第一行是 ,第二行是 。
int a = 15;
void main()
{
int a = 20, b = 40;
{
int a = 0, b = 0;
for(int i = 1; i < 3; i++)
{
a += i; b += a;
}
cout << a << ' ' << b << ' ' << ::a << endl;
}
cout << a << ' ' << b << endl;
}
8.以下程序输出的第一行是 ,第二行是 。
int f(int x=0)
{
static int t = 10; //A
int a = 10; //B
t += 5; a += 5;
return x * a + t; //C
}
void main(void)
{
cout<<f()<<endl; cout<<f(5)<<endl;
}
9.以下程序的输出结果是 。
void f(int &a, int&b){int t=a;a=b;b=t;}
void main(void)
{int x=100,y=200; f(x, y); cout<<x<<'\t'<<y<<'\n';}
10.以下程序的输出结果是 。
void p(int *a, int *b){int *t=a;a=b;b=t;}
void main(void)
{ int x=100,y=200;p(&x,&y);cout<<x<<'\t'<<y<<'\n';}
11.以下程序输出的结果是 。
void main(void)
{ for(int a=1,b=1;a<=5;a++)
{ if(b>=8) break;
if(b%2==1){b+=7;continue;}
b-=3;
}
cout<<"a="<<a<<'\n'<<"b="<<b<<'\n';
}
12.以下程序输出的第一行是 ,第二行是 。
void main(void)
{ int x=6;
do{x-=2;
cout<<x<<'\n';
}while(--x);
}
13.以下程序输出的第一行是 ,第二行是 。
int f(void)
{ static int a,b=10,c=1;
a+=b;b+=c;return c=a+b;
}
void main(void)
{ cout<<f()<<endl;cout<<f()<<endl;}
14.以下程序输出的第一行至第三行分别是 、 和 。
int f(int x,int y)
{return x*y;}
void main(void)
{
int i,j,(* fun)(int,int);
fun=f;
for(i=1;i<4;i++)
{
switch(i)
{
case 1:
case 2:j=(*fun)(i,i+1);break;
case 3:j=(*fun)(i-1,i+2);break;
}
cout<<"j="<<j<<'\n';
}
}
15.以下程序输出的第一行至第三行分别是 、 和 。
#include <vector>
#include <iostream>
#include <string>
int main(void)
{
using namespace std;
vector<string> vec;
vector<string>::const_iterator i;
vec.push_back("bird");
vec.push_back("girl");
vec.push_back("boy");
for(i=vec.begin(); i!=vec.end(); ++i){
cout<<(*i)<<endl;
}
return 0;
}
16.以下程序输出的第一行至第三行分别是 、 和 。
#include <stack>
#include <iostream>
int main(void){
using namespace std;
//创建堆栈对象
stack<int> s;
//元素入栈
s.push(3);
s.push(19);
s.push(23);
//元素依次出栈
while(!s.empty()) {
cout << s.top() << endl; //打印栈顶元素
s.pop(); //出栈
}
return 0;
}
展开阅读全文