《C语言(本科)》22年6月课程考核-00001
试卷总分:100 得分:100
一、单选题 (共 30 道试题,共 60 分)
1.对于C语言的函数,下列叙述中正确的是()
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
2.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量()
A.为全局变量,在本程序文件范围内有效
B.为局部变量,只在该函数内有效
C.为局部变量,只在该复合语句中有效
D.定义无效,为非法变量
3.当调用函数时,实参是一个数组名,则向函数传送的是()
A.数组的长度
B.数组的首地址
C.数组每一个元素的地址
D.数组每个元素中的值
4.以下数组定义中不正确的是()
A.int a[2][3];
B.int b[][3]={0,1,2,3};
C.int c[100][100]={0};
D.int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
5.在C语言中,合法的长整型常数是()
A.0L
B.4962710
C.0.054838743
D.2.1869e10
6.C语言中,凡未指定存储类别的局部变量的隐含存储类别是()
A.auto
B.static
C.extern
D.register
7.下述对C语言字符数组的描述中错误的是()
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
8.以下程序的输出结果是() main() {int x=10,y=10; printf(“%d %d\n”,x--,--y); }
A.10 10
B.9 9
C.9 10
D.10 9
9.若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是()
A.i=*p;
B.*p=*&j;
C.i=&j;
D.i=**p;
10.下面程序输出的结果是()
{图}
A.0
B.1
C.3
D.3.333333
11.在下列选项中,不正确的赋值语句是()
A.t;
B.n1=(n2=(n3=0));
C.k=i==j;
D.a=bc=1;
12.以下选项中,非法的字符常量是()
A.'\t'
B.'\17'
C."n"
D.'\xaa'
13.有如下函数调用语句 func(rec1,rec2+rec3,(rec4, rec5));该函数调用语句中,含有的实参个数是()
A.3
B.4
C.5
D.有语法错误
14.为表示关系x≥y≥z,应使用C语言表达式()
A.(x>=y)&&(y>=z)
B.(x>=y)AND(y>=z)
C.(x>=y>=z)
D.(x>=y)&(y>=z)
15.若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()
A.&t[3][2]
B.t[3][2]
C.t[1][0]
D.t[2]+1
16.在C语言中,数字009是一个()
A.八进制数
B.十六进制数
C.十进制数
D.非法数
17.已知有声明语句char s1[10]="abcde",s3[10];以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是()
A.s3=s1,s1=s2,s2=s3;
B.s3[0]=s1[0],s1[0]=s2[0],s2[0]=3[0];
C.strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]);
D.strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,s3);
18.在宏定义 #define PI 3.14159中,用宏名PI代替一个:()
A.常量
B.单精度数
C.双精度数
D.字符串
19.以下选项中,不能正确赋值的是()
A.char s1[10];s1="Ctest";
B.char s2[]={'C', 't', 'e', 's', 't'};
C.char s3[20]="Ctest";
D.char *s4="Ctest\n"
20.设有如下定义: int x=10,y=3,z; 则语句 printf(“%d\n”,z=(x%y,x/y)); 的输出结果是()
A.1
B.0
C.4
D.3
21.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回实参
D.传递方式由用户指定
22.下面程序段的运行结果是()
{图}
A.12345
B.1234
C.15
D.无限循环
23.函数pi的功能是根据以下近似公式求π值:()
{图}
A.1/i*i
B.1.0/i*i
C.1.0/(i*i)
D.1.0/(n*n)
24.以下程序段的输出结果是() int x=3; do {printf(“%3d”,x-=2);} while(!(--x));
A.1
B.3 0
C.1 -2
D.死循环
25.对于for(表达式1;;表达式3)可理解为()
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
26.表达式:10!=9的值是()
A.TRUE
B.非零值
C.0
D.1
27.若有声明语句int a[10],b[3][3];则以下对数组元素赋值的操作中,不会出现越界访问的是()
A.a[-1]=1
B.a[10]=0
C.b[3][0]=0
D.b[0][0]=0
28.调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是()
A.实参将其地址传递给形参,并释放原先占用的存储单元
B.实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C.实参将其值传递给形参,调用结束时形参再将其值回传给实参
D.实参将其值传递给形参,调用结束时形参并不将其值回传给实参
29.有如下说明: int a[10]={0,1,2,3,4,5,6,7,8,9};则数值不为9的表达式是()
A.a[10-1]
B.a[8]
C.a[9]-0
D.a[9]-a[0]
30.设有说明语句:char a= '\72';则变量a()
A.包含3个字符
B.包含2个字符
C.包含1个字符
D.说明不合法
二、判断题 (共 10 道试题,共 20 分)
31.数组的大小是可变的,但所有数组元素的类型必须相同。()
32.用scanf输入字符时,字符串中不能包含空格。()
33.自动变量属于局部变量。()
34.在C语言的复合语句中,只能包含可执行语句。()
35.若将C源程序经过编译、连接后生成可执行文件,则可直接在DOS系统下输入可执行文件名执行。()
36.在main函数体内定义的变量是全局变量。()
37.在程序运行过程中,系统分配给实参和形参的内存单元是不同的。()
38.字符常量的长度肯定为1。()
39.只能在循环体内和switch语句体内使用break语句()
40.使用float b定义的外部变量存放在内存中的动态存储区。()
三、简答题 (共 2 道试题,共 20 分)
41.阅读下列程序段,写出程序运行结果:
{图}
42.阅读下列程序段,写出程序运行结果:
{图}