C++期中考试试题(201405)

更新时间:2024-04-28 02:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++期中考试试题

一、 选择题(20*1)

1.设有说明“int a = 3,b = 5,m;”,则执行表达式“m = a<=3&& a+b<8”后,m的值为 C 。

A.tree

B.false

C.0

D.1

2.设有说明“int x=5, y=7, z=8;”,执行表达式“z += x++||y++||++z”后,则x、y、z的值分

别为 A 。

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}; z=v[3];

B.z的值为3

//A //B

C.B行语句错

D.A行语句错

则以下说法中正确的是 D 。

A.z的值为4

4.有关函数重载的正确说法是 C 。 A.函数名不同,但参数的个数和类型相同

B.函数名相同,但参数的个数不同或参数的类型不同 C.函数名相同,参数的个数和类型也相同

D.函数名相同,函数的返回值不同,而与函数的参数和类型无关 5.数组作为函数的形参时,把数组名作为实参,传递给函数的是 C 。 A.该数组的首地址 C.该数组中的各元素值 6.执行以下语句序列:

enum {Red,Blue,Yellow}cl,c2;cl=YeHow; //A cout << cl;

则 C 。

//B

B.该数组的元素个数 D.该数组的大小

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]的表达式是 C 。

A.p[2][2]

B.*(*(p+2)+2)

C.*(p+10)

D.*(p+8)

8.在循环语句的循环体中使用break语句的作用是 B 。

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]的初始

化值分别为 D 。

A.0、7

B.3、8

C.3、7

D.0、8

10.设有语句“float(*p)(int,int);”,该语句的作用是 B 。

A.函数原型说明 C.函数定义

B.p为指向函数的指针变量 D.p为指向整数的指针变量

11.循环语句for(<表达式1>;<表达式2>;<表达式3>)<语句>中,<语句>的执行情况是

C 。

A.至少执行一次

B.至少执行两次 D.不执行

C.可能执行,也可能不执行

12.设有函数定义“int f1(void){return 100,200;}”,设用函数f1()时, B 。

A.函数返回值100

B.函数返回两个值100和200 C.函数返回值200

D.语句“return 100,200;”语法错,不能调用函数

13.设有语句“int fun(char*,int &);char str[100];int k;”,则对函数fun的正确的调用形式是

C 。

A.fun(str, &k) C.fun(str[100], k)

B.fun(str, k) D.fun(str[100], &k)

14.执行下列程序段后,变量i的值为 C 。 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()语句的执行情况是

C 。

A.循环0次

B.循环4次

C.循环5次

D.循环6次

16.设有说明“int x[]={1,2,3,4,5}, *p=x;”,输出值不是5(数组x的元素个数)的是 D 。

A.cout<

17.下列数组定义中错误的是 B 。

A.char s1['a']; C.static int a[4]={1};

B.char s2[6]=\; D.char * p[]={\;

3xy18.在数学式5ab中,变量x和y的取值为整数,而变量a和b的取值为实数,在C++程序

中对应的正确表达式是 B 。 A.3/5*x*y/a/b C.3*x*y/5*a*b

19.编译以下程序时,结果是 D 。

#include #define aa 123; void main(void) {cout<

A.编译时第2行出错

C.编译时第2行和第4行均出错

//第1行 //第2行 //第3行 //第4行

B.编译时第4行出错 D.编译时无错误 B.3*x*y/5/a/b D.3/a/b/5*x*y

20.若定义了说明语句:int m=10;下列选项中,能正确说明引用类型变量x的语句是 A A.int &x=m; B.int &x=10; C.int &x; D.int &x=&m;

二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行) ● 基本概念题(6*1)

1.C++关系表达式中的关系成立时,则该关系表达式的值为 1 。 2.静态整型变量有确定的初值,其缺省的初值是 0 。

3.设有语句“char s[]=\\\0Nanjin\,则m的值是 5 。 4.若有宏定义:

# define T(x,y,z) x*y*z/4

则表达式T(3+4,2*4,4+4)的值是 112 。 int a = 10;

5.以下语句输出结果为 。 int b = 6; int cbit = a | b; int clogic = a || b;

cout << cbit << “\\n” << clogic << “\\n” ;

● 阅读程序题(10*3)

7.以下程序输出的第一行是 3 4 15 ,第二行是 20 40 。 int a = 15; void main() {

}

int a = 20, b = 40; { }

cout << a << ' ' << b << endl;

}

cout << a << ' ' << b << ' ' << ::a << endl; int a = 0, b = 0; for(int i = 1; i < 3; i++) {

a += i; b += a;

8.以下程序输出的第一行是 15 ,第二行是 95 。 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) { }

9.以下程序的输出结果是 200 100 。

10.以下程序的输出结果是 100 200 。

11.以下程序输出的结果是 a=2 b=8 。

void main(void)

{ for(int a=1,b=1;a<=5;a++) { if(b>=8) break;

if(b%2==1){b+=7;continue;}

void main(void)

{ int x=100,y=200;p(&x,&y);cout<

void p(int *a, int *b){int *t=a;a=b;b=t;}

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<

b-=3; }

cout<<\}

12.以下程序输出的第一行是 4 ,第二行是 1 。

编程1:

1. 输入3个系数a,b,c,求解一元二次方程根。

#include #include

#define ESSP 0.00000001 void main() {

double a,b,c,delta,root1,root2; cout<<\cout<<\cout<<\delta=b*b-4*a*c; if(delta<-ESSP)

cout<<\ else if(delta>ESSP) {

root1=(-b+sqrt(delta))/(2*a); root2=(-b-sqrt(delta))/(2*a);

cout<<\ } else {

void main(void)

{ cout<

void main(void) { int x=6; do{x-=2; cout<

{ static int a,b=10,c=1; a+=b;b+=c;return c=a+b; }

13.以下程序输出的第一行是 21 ,第二行是 53 。

root1=-b/(2*a);

cout<<\} }

2. 输入两个正整数,求其最大公约数和最小公倍数。

main()

{int p,r,n,m,temp;

printf(\请输入两个正整数 n,m:\scanf(\if(n{temp=n; n=m; m=temp; } p=n*m; while(m!=0) {r=n%m; n=m; m=t; }

printf(\它们的最大公约数为:%d\\n\printf(\它们的最小公倍数为:%d\\n\}

3. 输入一个正整数n,求出n以内的所有素数。

#include\#include\void main() {

int n,m,i,j;

printf(\请输入一个正整数n:\ scanf(\

printf(\少于%d的素数为:\ for(i=2;i<=n;i++) { m=sqrt(i); for(j=2;j<=m;j++) if(i%j==0) break;

if(j>=m+1) printf(\

}

printf(\}

4. 输入一个十进制正整数,将其转换为二进制。

#include

void main() {

int a,i=0,j;// int c[16];

cout<<\输入一个十进制的正整数:\ cin>>a; if(a<0)

cout<<\输入错误,请输入正整数!\ if(a==0) cout<<\转为二进制后为:0 \ while(a) { c[i]=a%2; i++; a=a/2; }

for(j = i-1;j>=0;j--) cout<

本文来源:https://www.bwwdw.com/article/ee9g.html

Top