C-C++习题一期末考试例题(附答案)

更新时间:2023-08-13 03:36:01 阅读量: 小学教育 文档下载

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

C/C++语言程序设计单元测试(一)

班级:学号:姓名:得分:

一、选择题

1.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( C )

A.必须为字母

B.必须为下划线

C.必须为字母或下划线

D.可以是字母,数字和下划线中任一种字符

2.以下4组用户定义标识符中,全部合法的一组是(A)

A._main enclude sin1 B.If -max turbo

C.txt REAL 3COM D.int k_2 _001

3. 下列不是C++语言合法的关键字是( D )

A. swicth

B. char

C. sizeof

D. cin

4.下面正确的字符常量是( C)

A."a"

B.'\\''

C.'W'

D. ' '

5.下面不正确的字符串常量是( A )

A.'abc'

B."12'12"

C."0"

D." "

6. 字符串“cp”存放在内存中占用字节数为( C)

A.2

B.4

C. 3

D. 1

7.设有数组定义:char array[ ]="good!"; 则数组所占的空间是(C)。

A.4个字节 B. 5个字节 C. 6个字节 D. 7个字节

8. 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;功能是( D )

A. 把x和y按从大到小排列

B. 把x和y按从小到大排列

C. 无确定结果

D. 交换x和y中的值

9.字母A的ASCII码为65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为( B )

A.D

B.68

C.不确定的值

D.C

10.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(B)

A.2.500000

B.2.7500OO

C.3.500000

D.0.000000

11.设有说明: char w; int x; f1oat y; double z;则表达式w* x+z一y值的数据类型为( D )

A.float

B.char

C.int

D.double

12.若有以下定义,则能使值为3的表达式是(D)

int k= 7,x =12;

A.x%=(k%=5)

B.x%=(k-k%5)

C.x%=k- k%5

D.(x%=k)-(k%=5)

12.若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为“假”。则以下不

能满足要求的表达式是( C )

A. A%2= =1

B.!(A%2 = =0)

C.!(A%2)

D.A%2

13.设有int a = 1,b=2,c =3, d =4, m=2, n=2;

执行(m= a>b)&&(n=c>d)后n的值为(B)

A.1

B.2

C.3

D.4

14.若w=1,x = 2,y= 3,z=4,则条件表达式w<x?w:y<z?y:z的值是( B)

A.4

B.3

C.20

D.1

1

15.若s是int型变量,则表达式s=17/3%3的值为(C)。

A.25 B.1C.2 D.3

16. 设有程序段int m=0; while (m=2) m=m++;则下面描述中正确的是(D)。

A. while 循环执行2 次

B. 循环体语句执行1次

C. 循环体语句1次也不执行

D. 循环是无限循环

17. 若已定义int a[10];则在下列表达式中不表示a[1]的地址的是(A)

A.a++ B.a+1 C.&a[0]+1 D.&a[1]

18. 面有关C语言函数的叙述正确的是( B)。

A.可嵌套定义B.嵌套调用和递归调用均可

C.不可以嵌套调用D.可嵌套调用但不可递归调用19.定义int a=10; int *p=&a; 下列描述( D)是正确的。

A.&a和&p的值相同;B.&a和*p的值相同;

C.a和p的值相同;D.&a和p的值相同;

20.下列关于结构体描述中,错误的是(C)。

A.结构体可以包括基本数据类型变量

B.结构体可以包含其他已定义的结构体变量

C.结构体可以包含自身类型的变量

D. 结构体可以包含自身类型的指针变量

21. 下面对于友元函数描述正确的是( C)。

A. 友元函数是类的成员函数

B. 友元函数的实现必须在类的内部定义

C. 友元函数破坏了类的封装性

D. 友元函数不能访问类的私有成员

15. 公有继承时,子类函数只可访问父类中的(B)和子类自己的公有成员。

A.非私有成员;B.公有成员;C.私有成员;D.保护成员;

二、程序分析题

1. 以下程序的运行结果 10-9

#include<iostream.h>

int main( )

{

int x=1, y=0, a=10, b=10;

switch(x)

{

case 1:

switch(y)

{

case 0: a--; break;

case 1:b++; break;

}

case 2:a++;b--;break;

}

cout<<a<<’-’<<b;

return 0;

}

2.以下程序的输出结果是___________13*20_________________________________ #include<iostream.h>

int f(int n)

{

static int k = 1;

int m=2;

k++;

2

return 3*n + k +m;

}

int main()

{

cout<< f(3)<<’*’;

cout<<f(5)<<endl;

return 0;

}

3.以下程序运行时,若从键盘上输入元素:10 9 8 7 6 1 2 3 4 5,请写出程序的运行

结果:1*5 。

#include<iostream.h>

int main()

{

int a[10],*p,*s,i;

for(i=0;i<10;i++)

cin>>a[i];

p=a; s=a;

for(; p<a+10; p++)

{

if(*p<*s)

s=p;

}

cout<<*s<<"*"<<s-a<<endl;

return 0;

}

4.以下程序的运行结果是( 6 )

#include<iostream.h>

int main()

{

int m=5;

if(m++> 5)

cout<<m<<endl;

else

cout<<m--<<endl;

return 0;

}

三、程序完善题

1. 以下程序的功能是输出200~300之间所有素数,请完善代码。

#include<iostream.h>

#include <math.h>

int prime(int x)

{

int i,k;

k=sqrt(x);

for(i=2;i<=k;i++)

{

if ( x%i==0 )

break;

}

if ( (1) ) i<=k

return 0;

else

return 1;

}

3

int main()

{

int m,i,k;

for (m=200;m<=300;m++)

{

if ( (2) ) prime(m)

cout<<m<<‘ ’;

}

return 0;

}

2.以下程序用1-16给一个4行4列的数组赋值,并计算右上半三角元素的和,请完善代码。#include<iostream.h>

int main( )

{

int s[4][4];

int i,j,k=1,sum=0;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

s[i][j]=k;

(1); k++

}

}

for(i=0;i<4;i++)

{

for(j=0; (2); j++) j<=I for(j=i; j<4 ; j++)

sum+= (3); s[j][i] sum+= s[i][j];

}

cout<<"sum="<<sum<<endl;

return 0;

}

下列程序功能是采用“顺序查找法”查找数组中是否存在元素n,请完善代码。

#include<iostream.h>

void main( )

{

int a[6]={ 1, 3, 2, 6, 4, 8};

int i, n;

cin>>n;

for (i=0; i<6; i++)

{

if ( (1)) a[i]==n

(2); break

}

if ((3)) i<6

cout<<“ 找到了!数组下标为”<<i;

else

cout<<“数组中未找到!”;

}

4

四、程序设计题

1. 编写子函数double fact(int n)计算n!,要求主函数键盘输入整数n,调用子函数计算n! ,并显示结果。

#include<iostream.h>

double fact(int n);

int main( )

{

int a;

cin>>a;

cout<<fact(a)<<endl;

}

double fact(int n){

if(n==1) return 1;

return n*fact(n-1);

}

2. 用公式求 的近似值,直到某一项的绝对值小于0.0001为止。

#include <iostream>

using namespace std;

#include<math.h>

int main()

{

double a, b = 3, c, d = 0;

for (a = 1; 1 / b > 0.0001; a =a + 4,b=b+4)

{

c = 1 / a - 1 / b;

d = c + d;

}

cout<<4*d<<endl;

return 0;

}

3.编写程序比较两个字符串,若相等,返回0;前字符串大,返回1;否则,返回-1;请完成子函数。#include<iostream.h>

int stringCompare(char s1[10],char s2[10]);

void main( )

{

char str1[10],str2[10]; int flag;

cout<<"Please input 2 strings:\n";

cin>>str1>>str2;

5

flag=stringCompare(str1,str2);

cout<<"flag= "<<flag<<endl;

}

int stringCompare(char s1[10],char s2[10])

{ int n;

for(int i=0;i<10;i++){

n=s1[i]-s2[i];

if(n==0)return 0;

else if(n>0)return 1;

else return -1;

}

}

4. 下列代码是CmyPoint类的定义,请写出类的构造函数。class CmyPoint

{

private:

int X,Y;

public:

CmyPoint(int x,int y);

CmyPoint(CmyPoint& p);

CmyPoint(){}

~CmyPoint(){}

int getX() { return X; }

int getY() { return Y; }

};

CmyPoint::CmyPoint(int x,int y){

X=x;

Y=y;

}

CmyPoint::CmyPoint(CmyPoint& p){

X=p.X;

Y=p.Y;

}

6

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

Top