《C程序设计》期末模拟试题
一、单选题(每小题2分,共20分)
1、在C语言中,正确的int类型的常数是________。
[A]-2U [B]059 [C]3a [D]0xAF 2、已知:char a; int b; float c; double d; 执行语句c=a+b+c+d;后,变量c的数据
类型是________。
[A]int [B]char [C]double [D]float 3、假设定义变量如下:
int x; float y;
以下输入语句中________是正确的。 [A]scanf(“%f%f”,&y,&x);
[B]scanf(“%f%d”, y, x);
[C]scanf(“%f%d”,&y,&x); [D]scanf(“%5.2f-”,&y,&x); 4、已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为________。 [A]p[0] [B]*p [C]&*a [D]*&a 5、在C语言中,引用数组元素时,其数组下标的数据类型允许是________。
[A]整型常量 [B]整型表达式
[C]整型常量或整型表达式 [D]任何类型的表达式
6、以下能对外部的二维数组a进行正确初始化的语句是________。 [A]int a[2][]={{1,0,1},{5,2,3}}; [B]int a[3][]={{1,2,3},{4,5,6}};
[C]int a[2][4]={{1,2,3},{4,5},{6}}; [D]int a[][3]={{1,0,1},{ },{1,1}}; 7、设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句________。 if (x=y) printf(\[A]语法错 [B]不能判断x和y是否相等
[C]编译出错
[D]能判断x和y是否相等
8、若用数组名作为函数调用时的参数,则实际上传递给形参的是________。 [A]数组元素的个数 [B]数组的第一个元素值
[C]数组中全部元素的值 [D]数组首地址
9、若有定义char x[ ]= \;则 。 [A]x数组与y数组的长度相同 [B]x数组长度大于y的长度
[C]x 数组长度小于y数组长度 [D]x数组等价于y 数组 10、以下正确的函数说明是________。 [A]float add(int x,y)
[B]int add(int x;int y)
[C]char add( ) [D]int add(char x[ ] [ ])
二、程序填空题(阅读以下程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确的答案。每小题2分,共30分)
1、 【程序说明】求s=1-1/2+1/3-1/4+…+1/19-1/20的值。 运行示例: sum=0.668771
【程序】
# include
void main(){ int i;
(11) fh=1; (12) for (i=2;i<=20;i++){ (13) s= (14) }
printf( (15) _,s); }
【供选择的答案】
(11)[A]float s; [B]float s;int [C]float s, [D]int s,
(12)[A]s= 0; [B]s=1; [C]s=0.5;
[D]s=2;
(13)[A]fh=-1; [B]fh=fh/i; [C]fh=1/i; [D]
fh=-fh;
(14)[A] s+fh/i; [B]s+fh [C]fh/i [D] s=s+1/i;
(15)[A] \
[B] \ [C] \ [D] \2、 【程序说明】以下函数用于找出一个2×4矩阵中的最大元素值。
【程序】
# include
{
int max_num(int str[][4]);
int str[][4]={{-1,4,3,5},{7,8,9,0}}; printf(\ }
int max_num(int str[ ][4]) {
int i,j,max;
max= (17) ; for(i=0; (18) ;i++) for(j=0; (19) ;j++)
if (str[i][j]>max) max= (20) ; return(max); }
【供选择的答案】
(16)[A] max_num(str[][4])
[B] max_num(str)
[C] max_num [D] max_num(int str[][4]) (17)[A]str [B] str[0][0] [C]0 [D]str[][4]
(18)[A] i<2 [B]i<=2 [C]i=2 [D] i>2 (19)[A]j<=4 [B]j>4 [C] j<=3
[D] j=3
(20)[A] str[][j] [B] str[j] [C] str[i] [D] str[i][j]
3、 【程序说明】输入a和b两个整数,按先大后小的顺序输出a和b,用函数处理,并用指
针类型的数据作函数参数。 【程序】
#include
void main()
{ void swap(int * p1,int * p2);
int a,b;
(21)
scanf(\
(22) /*把变量a、b的地址分别赋给pointer_1、pointer_2 */
if (a
void swap(int *p1,int * p2) {
int temp;
temp= (24)
(25)
*p2=temp;
}
【供选择的答案】
(21)[A] int * pointer_1,* pointer_2; [B] [C] float * pointer_1,* pointer_2; pointer_2;
(22)[A] pointer_1=a; pointer_2=b; pointer_2;
[C] pointer_1=&a; pointer_2=&b; [D]pointer_2; (23)[A]a,b
[B] pointer_1,pointer_2
[C]p1,p2 [D] * pointer_1,* pointer_2 (24)[A]a [B]p1 [C] *p2 [D] *p1 (25)[A] a=b [B] p1=p2 [C] *p1=*p2
int pointer_1, pointer_2; [D] float pointer_1, a = pointer_1; b = a =& pointer_1; b =& p2 = *p1 [D]*
[B]