生物医学工程测试(2022-1)
一. 单选题(共35 题,70.0分)
1. (单选题,2.0分)设 int a=12; 表达式a+=a-=a*=a的值是( )。
正确答案: B
2. (单选题,2.0分)以下程序段输出的结果是()
for(int i=0,m=1; i<4; i++)
for(int j=0; j m+=1;
cout<
正确答案: B
3. (单选题,2.0分)下面属于C++基本数据类型的是( )。
- A. bool
- B. []
- C. enum
- D. *
正确答案: A
4. (单选题,2.0分)若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。
- A. 数组首地址
- B. 数组元素的个数
- C. 数组中全部元素的值
- D. 数组的第一个元素值
正确答案: A
5. (单选题,2.0分)假定a为一个整型数组名,则元素a[4]的字节地址为 ( )。
- A. a+32
- B. a+16
- C. a+4
- D. a+8
正确答案: B
6. (单选题,2.0分)表达式5*2-6+’b’+3*8正确的是( )
- A. 134
- B. 98
- C. 126
- D. 78
正确答案: C
7. (单选题,2.0分)字符串char str[]=“China”在内存中占用( )个字节。
- A. 5
- B. 依编译系统而定
- C. 6
- D. 7
正确答案: C
8. (单选题,2.0分)系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()
- A. 参数个数
- B. 函数的类型
- C. 函数名称
- D. 参数的类型
正确答案: B
9. (单选题,2.0分)以下说法正确的是( )。
- A. 函数的定义可以嵌套,函数的调用也可以嵌套
- B. 函数的定义不可以嵌套,但是函数的调用可以嵌套
- C. 函数的定义不可以嵌套,函数的调用也不可以嵌套
- D. 函数的定义可以嵌套,但是函数的调用不可以嵌套
正确答案: B
10. (单选题,2.0分)下面有关重载函数的说法中正确的是( )。
- A. 重载函数必须有不同的形参列表;
- B. 重载函数必须具有不同的返回值类型;
- C. 重载函数名可以不同;
- D. 重载函数形参个数必须不同;
正确答案: A
11. (单选题,2.0分)
在C++中,表示一条语句结束的符号是 ( )。
正确答案: A
12. (单选题,2.0分)
运算符优先级按由高到低顺序排列正确的是( )。
- A. =,||, !=,%
- B. ||,!=,%,=
- C. =,%,||,!=
- D. %,!=,||,=
正确答案: D
13. (单选题,2.0分)for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是( )。
正确答案: D
14. (单选题,2.0分)下面各组语句中,不是“死循环”的是( )
A.
int a=3379;
while(a++%2+3%2)
a++;
B.
int i=0;
do
{
++i;
}while(i>=0);
C.
int j, sum=0;
for(j=1; ; j++)
sum++;
D.
int k=100;
while(1)
{
k=k%100+1;
if(k=20) break;
}
正确答案: D
15. (单选题,2.0分)下面关于循环语句的叙述中,正确的是( )。
- A. for循环与do-while循环一样,都是先执行循环体后判断条件
- B. for循环体内不能出现while语句
- C. for循环只能用于循环次数已知的情况
- D. 无论哪种循环,都可以从循环体内转移到循环体外
正确答案: D
16. (单选题,2.0分)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a
正确答案: C
17. (单选题,2.0分)
列叙述中正确的是:( )
- A. C++语言程序中,只有int类型的函数可以未经声明而出现在调用之后
- B. C++语言程序中,要调用的函数必须在main()函数中定义
- C. C++语言程序中,main()函数必须放在程序开始的部分
- D. C++语言程序必须要有return语句
正确答案: A
18. (单选题,2.0分)若给定条件表达式(M)?(a++):(a--),则其中表达式M和( )等价。
- A. M=1
- B. M!=1
- C. M==0
- D. M!=0
正确答案: D
19. (单选题,2.0分)下面( )是合乎语法要求的。
- A. int a[2][]={1,2};
- B. int a[][]={{1},{2}};
- C. int n=10, a[n];
- D. int a[]={1};
正确答案: D
20. (单选题,2.0分)下列关于指针的操作中,错误的是( )。
- A. 两个同类型的指针可以相加
- B. 可以用一个空指针赋给某个指针
- C. 两个同类型的指针可以进行比较运算
- D. 一个指针可以加上两个整数之差
正确答案: A
21. (单选题,2.0分)在C++中,源文件变为可执行程序的正确顺序是( )。
- A. 编辑,编译,链接,执行
- B. 编译,链接,编辑,执行
- C. 编辑,链接,编译,执行
- D. 编译,编辑,链接,执行
正确答案: A
22. (单选题,2.0分)所有在函数中定义的变量,都是( )。
- A. 局部变量
- B. 全局变量
- C. 寄存器变量
- D. 静态变量
正确答案: A
23. (单选题,2.0分)有如下数组声明:int values[30];,下标值引用错误的是( )。
- A. values[10]
- B. values[0]
- C. values[30]
- D. values[20]
正确答案: C
24. (单选题,2.0分)在C++中执行以下4条语句后输出rad值为:( )
static int hot=200;
int&rad=hot;
hot=hot+100;
cout<
- A. 300
- B. 100
- C. 0
- D. 200
正确答案: A
25. (单选题,2.0分)在C++中,当为一个变量定义引用时,引用类型________。
- A. 必须与变量类型一致
- B. 不一定与变量类型一致
- C. 也即变量的地址
- D. 也即变量的指针
正确答案: A
26. (单选题,2.0分)类A 的一个成员函数的说明: void Set(A &a); 则该函数的参数“ A &a ”的含义是( )
- A. 将变量a 的地址赋给类A
- B. 变量A与a按位与后作函数参数
- C. 类A 对象引用a 用作函数的形参
- D. 指向A 的指针为a
正确答案: C
27. (单选题,2.0分)下面的哪个保留字不能作为函数的返回类型?( )。
- A. long
- B. void
- C. new
- D. int
正确答案: C
28. (单选题,2.0分)在int a=3,int *p=&a;中,*p的值是( )
- A. 变量a的地址值
- B. 无意义
- C. 3
- D. 变量p的地址值
正确答案: C
29. (单选题,2.0分)不能把字符串"Hello!"赋给数组b的语句是( )。
- A. char b[10];b="Hello!";
- B. char b[10];strcpy(b,"Hello!");
- C. char b[10]="Hello!";
- D. char b[10]={'H','e','l','l','o','!'};
正确答案: A
30. (单选题,2.0分)下面对于指针的描述不正确的是( )
- A. 指针不能用除0以外的常量赋值
- B. 两个指针变量的加减法无意义
- C. 指针是地址变量
- D. 指针指向不同基类型的变量长度不同
正确答案: B
31. (单选题,2.0分)若定义“int a[]={ 1,2, 3},*p=a;”当执行p++后,下列说法错误的是( )。
- A. *p与a[1]等价
- B. p向高地址移动了一个存储单元
- C. p与a+1等价
- D. p向高地址移了一个字节
正确答案: D
32. (单选题,2.0分)若k为int类型,则while循环执行( )次。
k=2; while(k==0) cout<
正确答案: C
33. (单选题,2.0分)有定义:int a[3][4],为了完成赋值p=a,则指针p可以定义为( )。
- A. int *p[3][4];
- B. int (*p)[4];
- C. int *p[4];
- D. int **p;
正确答案: B
34. (单选题,2.0分)设有两个int型的指针p1和p2,则p1和p2__________。
- A. 可以相加,也可以相减
- B. 可以相减,但不可以相加
- C. 可以相加,但不可以相减
- D. 既不能相加,也不能相减
正确答案: B
35. (单选题,2.0分)下面关于for循环的叙述中,不正确的是( )
- A. 循环变量不必在表达式1中给出
- B. 循环变量可增可减
- C. 在执行过程中可以改变循环变量的初值和终值
- D. 在循环体中,不能改变循环控制变量的值
正确答案: C
二. 判断题(共10 题,10.0分)
1. (判断题,1.0分)某函数的实参是数组名,形参也是数组名,调用结果是形参数组会开辟一个与实参数组相同的存储单元,且存储的内容和实参数组存储的内容一样。()
正确答案: 错
2. (判断题,1.0分)指针变量所保存的是程序中一个对象的数据值,通过指针变量可以直接读取对象数值。()
正确答案: 错
3. (判断题,1.0分)While循环语句的循环体至少执行一次。()
正确答案: 错
4. (判断题,1.0分)一个数组的数组名实际上是指向该数组首元素的指针,并且允许修改它。()
正确答案: 错
5. (判断题,1.0分)若n为整型,则表达式n=2/3的值是1,表达式(float)2/3的值是1.0。()
正确答案: 错
6. (判断题,1.0分)在程序运行过程中,静态局部变量只被初始化一次。()
正确答案: 对
7. (判断题,1.0分)定义重载函数时,应在参数个数或参数类型上不同。()
正确答案: 对
8. (判断题,1.0分)假定a是一个一维数组,则a[i]的指针访问方式为 *(a+i)。()
正确答案: 对
9. (判断题,1.0分)C++语言的变量有四种存储类别∶自动的、寄存的、静态的和外部的,分别用保留字auto、register、static和extern表示。()
正确答案: 对
10. (判断题,1.0分)设a=3,b=4,c=5。则逻辑表达式: !(a+b)+c-1&&b+c/2的值为True。()
正确答案: 对
三.概念辨析题(共2题,10.0分)
1.(概念辨析题,5.0分)辨析局部变量和全局变量的作用域,如果局部变量和全局变量同名,在相同作用域范围内局部变量和全局变量会如何使用?
正确答案:
局部变量的作用域为当前函数或循环等,全局变量的作用域为整个程序。
如果局部变量和全局变量同名,则在局部变量作用域范围内使用的是局部变量,而在局部变量作用域范围之外使用的是全部变量。
2.(概念辨析题,5.0分)简述break和continue在程序运行中的区别?
正确答案:
continue语句只结束本次循环,而不是终止整个循环的执行。
break语句则是结束整个循环过程(单个循环情况),不再判断执行循环的条件是否成立。break语句可以用在循环语句和switch语句中。在循环语句中用来结束内部循环;在switch语句中用来跳出switch语句。答案解析:循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。
四.程序阅读分析题((共2题,10.0分)
1.(程序阅读分析题,5.0分)
分析下列程序输出结果,并说明指针和指向变量间的关系。
#include
using namespace std;
int main( )
{
int x=10,*p;
int y=2;
x=y++;
p=&x ;
*p+=x+y++;
cout<“,“<
return 0;
}
正确答案:结果:7,4
简述:指针和指针变量的关系,指针就是地址,地址就是指针。
地址就是内存单元的编号。指针变量就是存放内存地址的变量。指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样。
结果:
2.(程序阅读分析题,5.0分)
程序分析,写出运行结果,并简述其主要算法过程。
#include
using namespace std;
int main()
{
float fac(int n);
int n=5;
float y;
y=fac(n);
cout<
return 0;
}
float fac(int n){
float f;
if(n
cout<<" n<0, dataerror!"<
}
else
if(n==O| | n==1)
f=1;
else
f=fac (n-1)*n ;
return(f);
}
运行结果:
简述:
正确答案:
结果:5120
简述:1、每一次函数调用都会有一次返回,当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行;2、递归函数中,位于递归调用前的语句和各级被调函数具有相同的顺序;3、每一级的函数调用都有自己的私有变量;4、递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反,5、虽然每一级递归有自己的变量,但是函数代码并不会得到复制;6、递归函数中必须包含可以终止递归调用的语句。