《程序设计基础(上)》19秋期末考核-0001
一、单选题 (共 15 道试题,共 30 分)
1.一个浮点法表示的数值由( )两部分组成。
A.阶码和尾数
B.整数和小数
C.指数和基数
D.尾数和小数
2.已知“char s[]=”南开大学”;”,则数组s的长度为##。
A.9
B.8
C.5
D.4
3.计算机系统中采用补码运算的目的是( )。
A.简化计算机的设计
B.提高运算的精度
C.减少存储空间
D.与手工运算方式保持一致
4.已知函数定义“void fun(int &a, int b) { b++; a++;}”,则执行“int x=2,y=3; fun(x,y);”后,变量x、y的值分别为##。
A.3,4
B.3,3
C.2,4
D.2,3
5.默认形参值不可以是##。
A.静态全局变量
B.局部变量
C.函数调用
D.全局变量
6.已知“int a[]={1,2,3,4,5},*p=a;”,则以下各选项中对数组元素访问错误的是##。
A.p[p-a]
B.*(p+2)
C.a[5]
D.a[3]
7.已知字母“a”的ASCII码是97,则字母“f”的ASCII码是( )。
A.103
B.102
C.101
D.100
8.在32位计算机系统中,已知“int a[2][3]; fun(a);”,fun函数的形参变量名为p,则在fun()函数体中通过sizeof(p)计算得到的结果为##。
A.6
B.4
C.24
D.12
9.已知程序段: int a[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]的值是##。
A.6
B.5
C.4
D.3
10.二进制数1001101011转换为等值的八进制数是( )。
A.9AC
B.4651
C.26B
D.1153
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.已知“char a[]=”abcd”,*p=a+2;”,则语句“cout<<p;”会在屏幕上输出##。
A.d
B.cd
C.c
D.bcd
14.下面关于循环语句的叙述中,正确的是##。
A.无论哪种循环,都可以从循环体内转移到循环体外
B.for循环只能用于循环次数已知的情况
C.for循环体内不能出现while语句
D.for循环与while循环一样,都是先执行循环体后判断条件
15.已知“int a=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.已知函数原型“double fun();”,要定义一个函数指针变量p指向该函数的首地址,则其定义语句为“double (*p)()=fun;”。
22.在计算机中因为采用的均是二进制数,所以包括数的正负性都只能用二进制数来表示。
23.在C++中,如果在函数调用之后再进行函数定义的话,就需要在调用之前给出函数原型。
24.如果函数没有形参,则函数定义时形参列表可以省略,即函数定义“int fun {…}”是正确的。
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>
using namespace std;
int main()
{
char a[2][10]={“Xyccw”,” XYcCw “};
int i;
for (i=0; i<5; i++)
{
if(a[0][i]!=a[1][i])
break;
}
if (i==5)
cout<<“两个字符串相同”<<endl;
else
if (a[0][i]>a[1][i])
cout<<“较大的字符串为:”<<a[0]<<endl;
else
cout<<“较大的字符串为:”<<a[1]<<endl;
return 0;
}
37.下面程序的运行结果是什么?
#include <iostream>
using namespace std;
void fun(int a, int b, int &sum, int sub)
{
sum = a+b;
sub = a-b;
}
int main()
{
int a=5, b=10, sum=0, sub=0;
fun(a, b, sum, sub);
cout<<sum<<endl;
cout<<sub<<endl;
return 0;
}
四、简答题 (共 1 道试题,共 10 分)
38.请设计“求斐波那契数列”的递归算法,并用C++代码写出求前10项斐波那契数列的完整程序。