南开大学]《程序设计基础(上)》19秋期末考核(答案参考Word格式文档下载.docx
《南开大学]《程序设计基础(上)》19秋期末考核(答案参考Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《南开大学]《程序设计基础(上)》19秋期末考核(答案参考Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
B.提高运算的精度C.减少存储空间
D.与手工运算方式保持一致答案:
4.已知函数定义“voidfun(int&
a,intb){b++;
a++;
}”,则执行“intx=2,y=3;
fun(x,y);
”后,变量x、y的值分别为##。
A.3,4
B.3,3
C.2,4
D.2,3
B
5.默认形参值不可以是##。
A.静态全局变量
B.局部变量C.函数调用
D.全局变量答案:
6.已知“inta[]={1,2,3,4,5},*p=a;
”,则以下各选项中对数组元素访问错误的是##。
A.p[p-a]
B.*(p+2)
C.a[5]
D.a[3]
C
7.已知字母“a”的ASCII码是97,则字母“f”的ASCII码是()。
A.103
B.102C.101D.100
8.在32位计算机系统中,已知“inta[2][3];
fun(a);
”,fun函数的形参变量名为p,则在fun()函数体中通过sizeof(p)计算得到的结果为##。
A.6
B.4C.24D.12
9.已知程序段:
inta[3][4],*p[3]={a[0],a[1],a[2]},**pp=p,i;
for(i=0;
i<
12;
i++)a[i/4][i%4]=i;
则pp[1][2]的值是##。
B.5
C.4
D.3
10.二进制数1001101011转换为等值的八进制数是()。
A.9AC
B.4651
C.26BD.1153
D
11.字符的ASCII码的表示方法是:
使用8位二进制码并且()。
A.最高位为1
B.最高位为0
C.最低位为1
D.最低位为0
12.下面的描述,不正确的是##。
A.语句for(i=0;
i++)表示无限循环
B.语句for(;
)表示无限循环
C.语句for()表示无限循环D.while
(1)表示无限循环答案:
13.已知“chara[]="
abcd”,*p=a+2;
"
则语句“cout<
<
p;
”会在屏幕上输出##。
A.dB.cdC.cD.bcd答案:
14.下面关于循环语句的叙述中,正确的是##。
A.无论哪种循环,都可以从循环体内转移到循环体外B.for循环只能用于循环次数已知的情况
C.for循环体内不能出现while语句
D.for循环与while循环一样,都是先执行循环体后判断条件答案:
15.已知“inta=5,b,*p=&
a;
”,则下列语句中正确的是##。
A.b=p;
B.b=*p;
C.*p=&
b;
D.&
b=a;
答案:
二、判断题(共20道试题,共40分)
16.在C++中,要对int型的一般数组进行访问,必须逐个元素进行。
正确
17.无参宏定义和条件编译结合使用可以解决头文件重复包含问题。
18.负数的补码就是原码逐位取反后的结果。
错误
19.若函数类型为void,则函数体内不能有return语句。
20.二维数组中的所有元素必须具有相同的数据类型。
21.已知函数原型“doublefun();
”,要定义一个函数指针变量p指向该函数的首地址,则其定义语句为“double(*p)()=fun;
”。
22.在计算机中因为采用的均是二进制数,所以包括数的正负性都只能用二进制数来表示。
23.在C++中,如果在函数调用之后再进行函数定义的话,就需要在调用之前给出函数原型。
24.如果函数没有形参,则函数定义时形参列表可以省略,即函数定义“intfun{…}”是正确的。
25.在日常生活中完成一项较复杂的任务时,我们通常会将任务分解成若干个子任务,通过完成这些子任务逐步实现任务的整体目标。
26.switch语句中的各的值可以相同,与条件表达式应为同一数据类型。
27.当输出汉字时,输出的是汉字机内码。
28.标识符是指由程序员定义的词法符号,用来给变量、函数、数组、类、对象、类型等命名。
29.在整数的反码的表示方法中,0的表示均是唯一的,即0只有一种表示形式。
30.表达式“x+1>
y-2”是算数表达式。
31.?
高维数据都可以使用一维数组进行存储。
32.静态局部变量在定义时若没有初始化,则自动初始化为0。
33.语句for(i=0;
i++)和for(;
)都表示一次也不循环。
34.使用全局变量会降低函数之间的独立性,在编写程序时尽量减少全局变量的使用。
35.将浮点型赋值给整型时,转换后的值可能丢失小数部分,原来的值也可能超出目标类型的取值范围导致结果错误。
三、问答题(共2道试题,共20分)36.下面程序的运行结果是什么?
#include<
iostream>
usingnamespacestd;
intmain()
{
chara[2][10]={"
Xyccw"
"
XYcCw"
};
inti;
for(i=0;
5;
i++)
if(a[0][i]!
=a[1][i])break;
}
if(i==5)
cout<
两个字符串相同"
endl;
else
if(a[0][i]>
a[1][i])
较大的字符串为:
a[0]<
return0;
a[1]<
Xyccw
37.下面程序的运行结果是什么?
voidfun(inta,intb,int&
sum,intsub)
sum=a+b;
sub=a-b;
intmain()
inta=5,b=10,sum=0,sub=0;
fun(a,b,sum,sub);
cout<
sum<
sub<
return0;
150
四、简答题(共1道试题,共10分)
38.请设计“求斐波那契数列”的递归算法,并用C++代码写出求前10
项斐波那契数列的完整程序。
求斐波那契数列(1,1,2,3,5,8,13,……,)第n项的的值的递归算法如下:
如果n=1或n=2斐波那契数列的值为1否则斐波那契数列的值为第n-1项与第n-2项和C++参考程序如下:
intFib(intn)//函数定义{if(n==1、、n==2)return1;
elsereturnFib(n-1)+Fib(n-2);
//函数的递归调用}intmain(){for(inti=1;
i&
lt;
=10;
i++)cout&
&
Fib(i)&