C语言程序设计(慕课版 第3版) 测试题10.doc
C程序设计实用教程
第十章自测题
PAGE170
PAGE169
PAGE167
一、选择题
1.设有如下程序段:
chars[20]=Bejing,*p;
p=s;
则执行p=s;语句后,以下叙述正确的是()。
A可以用*p表示s[0]Bs数组中元素的个数和p所指字符串长度相等
Cs和p都是指针变量D数组s中的内容和指针变量p中的内容相等
2.有以下程序
#includestdio.h
main()
{
intm=1,n=2,*p=m,*q=n,*r;
r=p;
p=q;
q=r;
printf(“%d,%d,%d,%d\n”,m,n,*p,*q);
}
程序运行后的输出结果是()
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
3.有以下程序:
#includestdio.h
main()
{
intn,*p=NULL;
*p=n;
printf(inputn:);
scanf(%d,p);
printf(outpubn:);
printf(%d\n,p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()。
Aintn,*p=NULL;B*p=n;
Cscanf(%d,p)Dprintf(d\n,p);
4.若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是()。
A.*pB.x[5]C.*(p+1)D.*x
5.若有语句:char*line[5];,以下叙述中正确的是()。
A.定义linc是一个数组,每个数组元素是一个基类型为char的指针变量
B.定义linc是一个指针变量,该变量可以指向一个长度为5的字符型数组
C.定义linc是一个指针数组,语句中的*号称为间址运算符
D.定义linc是一个指向字符型函数的指针
6.设有如下定义:
int(*ptr)();
则以下叙述中正确的是()。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针;该函数返回一个int型数据
D.ptr是一个函数名;该函数的返回值是指向int型数据的指针
7.若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,
正确的调用方法是()。
A.(*p)max(a,b);B.*pmax(a,b);C.(*p)(a,b);D.*p(a,b);
8.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()。
A.p=max;B.*p=max;C.p=max(a,b);D.*p=max(a,b);
9.已有定义int(*p)();指针p可以()。
A.代表函数的返回值B.指向函数的入口地址
C.表示函数的类型D.表示函数返回值的类型
10.若有以下说明和定义
fun(int*c){}
voidmain()
{
int(*a)()=fun,*b(),w[10],c;
…
}
在必要的赋值之后,对fun函数的正确调用语句是()。
A.a=a(w);B.(*a)(c);C.b=*b(w);D.fun(b);
二、填空题
1.若有定义:charch;
?(1)使指针p指向变量ch的定义语句是()。
?(2)若已定义char*p;,使指针p指向变量ch的赋值语句是()。
?(3)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是()。
?(4)在(1)的基础上,通过指针p给变量ch赋字符’a’的语句是()。
?(5)在(1)的基础上,通过指针p用格式输出函数输出ch中字符的语句是()。
2.有以下程序
#includestdio.h
voidf(int*p,int*q);
main()
{
intm=1,n=2,*r=m;
f(r,n);
printf(“%d,%d”,m,n);
}
voidf(int*p,int*q)
{
p=p+1;
*q=*q+1;
}
程序运行后输出的结果是()。
3.有以下程序
#includestdio.h
vo