2008-2009第一学期《面向对象程序设计2-1》期末试卷(A卷)
南开大学理科《面向对象程序设计2-1》 2008级期末考试试卷(A卷)2009年1月
任课教师______学院________系别(班级)_________姓名________学号_______
题 目 一四 卷面成绩 二 三 分 数 得 分 (注 1 11 一、单项选择(每空1分,共20分)
意选项填写到下面表格中!) 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 1.将小写字母n赋值给字符变
量
one_char,正确的操作
是
( )
A) one_char='\\n'; B) one_char=\
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]={\ B) char str[4]={ 'w', 'o', 'r', 'd', '\\0'}; C) char str[6]=\ D) char str[5]; str=\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; A卷 第1页 (共9页) 2008-2009第一学期《面向对象程序设计2-1》期末试卷(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++) { if(i%3!=0) continue; cout< A) 45 B) 457810 C) 69 D) 45678910 A卷 第2页 (共9页) 2008-2009第一学期《面向对象程序设计2-1》期末试卷(A卷) 19.已知:char *s=\则cout< A) abcde B) cde C) c D) abc 20.已知:char *s=\则cout<<*(s+2);输出为( ) A) abcde B) cde C) c D) abc 二、填空题(每空1分,共20分) (注意将结果填写到下面相应横线上!) 得 分 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ 1.已知:char *p=\char s[10]=\则strlen(p)的值为 ① ,strlen(s)的值为 ② , sizeof(s)的值为 ③ , sizeof(\的值为 ④ 2.已知:int x=10; 则表达式 50<=x<=100的值为 ⑤ 3.已知: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]=\则cout< 三、读程序写结果(每空3分,共30分) (注意将结果写在下面相应横线上!) 得 分 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 1. 写出下面程序的运行结果。 #include A卷 第3页 (共9页) 2008-2009第一学期《面向对象程序设计2-1》期末试卷(A卷) { int x=5,y,k; float z=15,w; y=x++; w=z/y+7%x; k=x||w++; cout<<\ cout<<\ } 运行结果为:___①___ ___②___ 2. 写出下面程序的运行结果。 #include 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<<\} } 运行结果为:___③ ④ 3. 写出下面程序的运行结果。 #include int a[10]={876,675,896,101,301,401,980,431,451,777},k; fun(a,10,&k); A卷 第4页 (共9页) 2008-2009第一学期《面向对象程序设计2-1》期末试卷(A卷) cout<<\} 运行结果为: ⑤ 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<<\} 运行结果为: ___⑥ 5. 写出下面程序的运行结果。 #include int a,p=1,s=0; for(a=1;a<=5;a++) { p=p*a; s=s+p; } cout<<\ cout<<\ } 运行结果为: ⑦ ⑧ 6. 写出下面程序的运行结果。 A卷 第5页 (共9页)