当前位置:文档之家› 南开大学08-09C++试卷(A)

南开大学08-09C++试卷(A)

南开大学理科《面向对象程序设计2-1》 2008级期末考试试卷(A 卷)2009年1月

任课教师______学院________系别(班级)_________姓名________学号_______

一、单项选择(每空1分,共20分)

(注意选项填写到下面表格中!)

1.将小写字母n 赋值给字符变量one_char ,正确的操作是( ) A) one_char='\n'; B) one_char="n"; C) one_char=110; D) one_char='N'; 2.已知:char ch=049; cout<

A) 49 B) 1 C) 41 D) 程序报错 3.已知:int x=2; 则cout<<(x<<2);的输出结果为( ) A) 4 B) 8 C) 0 D) 1 4.在C++语言中,自定义的标识符( ) A) 能使用关键字并且不区分大小写 B) 不能使用关键字并且不区分大小写 C) 能使用关键字并且区分大小写 D) 不能使用关键字并且区分大小写

5.判断字符变量c 不是字母的逻辑表达式为( ) A) c>='a'&&c<='z'||c>='A'&&c<='Z' B) c<'a'||c>='z'&&c<'A'||c>'Z'

C) c<'A'||c>'z' D) !(c>='a'&&c<='z'||c>='A'&&c<='Z') 6.下列语句正确的是( )

A) char str[4]={"word"}; B) char str[4]={ 'w', 'o', 'r', 'd', '\0'}; C) char str[6]="wo\0rd"; D) char str[5]; str="word"; 7.已知:int a=10,*p=&a; 则p 的值为( )

A) 10 B) a 的值 C) a 的地址 D) 随机值

8.下列语句正确的是()

A) int a,*p; *p=&a; B) int a,*p; p=&a;

C) int a,*p; &a=p; D) int a,*p; a=*p;

9.已知定义:int a[5],*p;则下列描述错误的是()

A) 表达式p=p+1是合法的B) 表达式a=a+1是合法的

C) 表达式p-a是合法的D) 表达式a+2是合法的

10.下列程序段执行后,x的值为()

x=0;

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

if(i) x++;

A) 0 B) 30 C) 89 D) 90

11.一个指针类型的变量占用内存的字节数是()

A) 1 B) 4 C) 8 D) 由指向地址的类型决定

12.当函数定义时指定的函数返回值类型为void时,表示()

A) 函数没有返回值B) 函数肯定没有return语句

C) 函数肯定含有return; D) 函数返回任意类型的值

13.函数原型中,不必要给出的是()

A) 函数参数的类型和参数名B) 函数名

C) 函数的类型D) 函数体

14.一个函数的参数的默认值应该在()中给出

A) 函数定义B) 函数原型C) 函数定义或原型D) 函数调用

15.下列关于函数的描述正确的是()

A) 函数必须要有参数和返回值

B) 函数体中只能含有一条return语句

C) 函数通过return语句至多能够返回一个值

D) 函数必须定义在先,调用在后

16.关于内联函数的描述错误的是()

A) 函数定义或函数原型前加上关键字“inline”,该函数成为内联函数

B) 内联函数一般是一个小函数

C) 内联函数在编译时进行内联置换,减少了调用的开销

D) 内联函数在运行时仍然被调用

17.有关函数的形参和实参描述错误的是()

A) 函数调用时,实参的值传递给相应的形参,形参在函数体内的改变并不影响实参

B) 因为可以设定函数的默认参数值,所以调用函数时,实参的个数可以少于形参

C) 调用重载函数时,根据参数的不同决定去调用哪一个重载函数

D) 实参是数组名时,表示将数组的所有元素的值都传递到了函数中

18.下面程序段的输出结果为()

for(int i=4;i<=10;i++)

{

continue; cout<

A) 45 B) 457810 C) 69 D) 45678910 19.已知:char *s="abcde";则cout<

二、填空题(每空1分,共20分) (注意将结果填写到下面相应横线上!)

① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇

1.已知:char *p="abcde"; char s[10]="abcde"; 则strlen(p)的值为 ① ,strlen(s)的值为 ② , sizeof(s)的值为 ③ ,sizeof("abcde")的值为 ④ 2.已知:int x=10; 则表达式 50<=x<=100的值为 ⑤

3.已知:int x=15; cout<

4.已知:int x= -15; cout<

5.已知:int *p; 为p 动态分配内存且为该内存赋值为整数10的语句是: ⑩ 。 6.具有相同函数名但参数表不完全相同的函数称为 ⑾ 。

7.已知:void fun(int a,int b=2,int c=3){cout<

9.C++源程序的扩展名是.cpp ,经过 ⒃ 生成目标文件的扩展名是 ⒄ ,再经过 ⒅ 生成可执行程序,最终执行的是.exe 文件。

10.已知:char a[7]="abcedf",b[4]="123"; strcpy(a,b); 则cout<

三、读程序写结果(每空3分,共30分) (注意将结果写在下面相应横线上!)

①②③④⑤

⑥⑦⑧⑨⑩

1. 写出下面程序的运行结果。

#include

void main()

{ int x=5,y,k;

float z=15,w;

y=x++;

w=z/y+7%x;

k=x||w++;

cout<<"w="<

cout<<"k="<

}

运行结果为:___①___

___②___

2. 写出下面程序的运行结果。

#include

int f(int n)

{

if(n==1||n==2) return 2;

else return f(n-1)+f(n-2);

}

void main()

{

int i,j=0;

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

{

j+=f(i);

cout<<"j="<

}

}

运行结果为:___③

3. 写出下面程序的运行结果。

#include

int fun(int *s, int t, int *k)

int i;

*k=0;

for(i=0;i

if(s[*k]

return s[*k];

}

void main()

{

int a[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

cout<<"a["<

}

运行结果为:⑤

4. 写出下面程序的运行结果。

#include

double fun(double a,double b,char c='*')

{

double d;

switch(c)

{

case '+': d=a+b;break;

case '-': d=a-b;break;

case '*': d=a*b;break;

case '/': d=a/b;break;

}

return d;

}

void main()

{

double d=1.0;

d-=fun(fun(2.5,3.5, '+'),fun(3,5), '/');

cout<<"d="<

}

运行结果为:___⑥

5. 写出下面程序的运行结果。

#include

void main()

int a,p=1,s=0;

for(a=1;a<=5;a++)

{

p=p*a;

s=s+p;

}

cout<<"p="<

cout<<"s="<

}

运行结果为:⑦

6. 写出下面程序的运行结果。

#include

void main()

{

void f(int,int);

int x=1,y=2;

f(x,y);

cout<

}

void f(int x,int y)

{

int z=x;

x=y;

y=z;

cout<

}

运行结果为:⑨

(注意将结果写在下面相应横线上!)

①②③④⑤

⑥⑦⑧⑨⑩

1.下面函数fun()的功能是返回二维数组中大于本行平均值的所有元素之和。

#include

double fun( ①)

{

double sum2=0.0;

for(int i=0;i<5;i++)

{

double sum1=0.0;

int j=0;

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

sum1+=B[i][j];

sum1/=5;

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

if( ②) sum2+=B[i][j];

}

return sum2;

}

void main()

{

double A[5][5] ={ {4431.3, 45.56, 5697.65, 768.678, 122.45},

{444.4, 34.545, 5667.656, 2548.678, 1562.45},

{537.3, 655.5456, 5677.65, 7168.678, 1242.45},

{134.3, 454.5486, 5637.65, 7687.678, 1322.45},

{189.3, 445.5786, 5677.65, 7528.678, 142.45}};

cout<

}

2. 冒泡法从小到大排序,第一轮最小的元素向上“浮”到最上面,第二轮次小的元素“浮”到

最小元素的后面,依次类推。//一维数组气泡排序

#include

void main()

{

int a[5]={55,2,6,4,32},i,temp;

for(int pass=0 ; pass<4; pass++)

for(i=4;③; i--)

if(④)

{

temp=a[i];

a[i]=a[i-1];

a[i-1]=temp;

}

}

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

cout <

}

3. 对二维数组a[4][4],求出下三角元素的和(包括对角元素),并输出结果。

#include

void main()

{

double a[4][4]=

{{10,11,12,13},{20,21,22,23},{30,31,32,33},{40,41,42,43}};

int i,j;

double s=0;

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

for(j=0; ⑤;j++)

⑥;

cout<<”s=”<

}

4.根据需要,从键盘输入n值,为n个元素组成的整型数组动态分配存储空间,从键盘输入元素值后,逆序重排,最后将重排后的元素值输出。

#include

#include

#include

void main()

{

int n,i,t;

cout<<"input n:";

cin>>n;

int *p;

⑦; //为数组分配存储空间

for( i=0;i

cin>>p[i];

for( i=0;⑧;i++)

for(i=0;i

cout<

cout<

delete p;

}

5.下面函数的功能是将第二个字符串内容连接到第一个字符串的末尾,将程序填写完整。

#include

char *strcat(char *s1, char *s2)

{

int i=0;

char *s=s1;

while(*s1)

⑨;

while(*s2)

*s1++=*s2++;

*s1=0;

return ⑩;

}

void main()

{

char str1[20]="abcd",str2[20]="de",*str3;

str3=strcat(str1,str2);

cout<<"str3:"<

}

相关主题
文本预览
相关文档 最新文档