第九章测试
1【判断题】 (10分)
若有下列语句:
int a[4]={1,2,3,4},*p;
p=&a[2];
则*p的值是3
A.
错
B.
对
参考答案:B
2【判断题】 (10分)
int p;此时是一个运算符号,表示间接访问p所指向的变量。
A.
错
B.
对
参考答案:A
3【判断题】 (10分)
有下列程序段,程序段运行后的输出结果是10( )。
int *p,n;
n=10; p=&n; n=*p+10;
printf("%d\n", *p);
A.
错
B.
对
参考答案:A
4【单选题】 (10分)
若有说明:int a=2,*p=&a,*q=p;,则以下非法的赋值语句是( )。
A.
q=a
B.
*p=*q
C.
p=q
D.
a=*q
参考答案:A
5【单选题】 (10分)
变量的指针是指该变量的( )。
A.
名
B.
首地址
C.
别名
D.
值
参考答案:B
6【单选题】 (10分)
若已定义int a=5; 下列对(1)、(2)两个语句的正确解释是( )
(1) int *p=&a; (2) *p=a;
A.
语句(1)和语句(2)语句都是把变量a的地址值赋给指针变量p。
B.
语句(1)是对p进行说明的同时进行初始化,使p指向a;语句(2)是将a的值赋给指针变量p。
C.
语句(1)是对p进行说明的同时进行初始化,使p指向a;语句(2)是将a的值赋给p指的空间。
D.
语句(1)和语句(2)中的*p含义相同,都表示给指针变量p赋值。
参考答案:C
7【单选题】 (10分)
下列程序中,主函数调用findmax函数返回数组中的最大值。在下划线处应填入的是( )。
#include <stdio.h>
findmax( int *a, int n)
{
int *p, *s;
for (p=a, s=a; p-a<n; p++)
if(__________) s=p;
return (*s);
}
int main()
{
int x[5]={12,21,13,6,18};
printf("%d\n", findmax(x,5));
return 0;
}
A.
p-a>p-s
B.
a[p]>a[s]
C.
p>s
**D.
p>s
参考答案:D
8【单选题】 (10分)
有下列程序,程序运行后的输出结果是( )。
#include <stdio.h>
void fun( int *x,int *y);
int main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d %d",x,y);
return 0;
}
void fun( int *x,int *y)
{
printf("%d%d",*x,*y);
*x=3;*y=4;
}
A.
121 2
B.
123 4
C.
214 3
D.
211 2
参考答案:C
9【单选题】 (10分)
有下列程序段,程序段运行后的输出结果是( )。
int t[]={0,1,2,3,4,5,6,7,8,9}, *p;
p=t;
printf(“%d\n”, *p+9);
A.
1
B.
10
C.
0
D.
9
参考答案:D
10【判断题】 (10分)
若有下列语句:
int a[4]={1,2,3,4},*p;
p=a;
则*p的值是3。
A.
对
B.
错
参考答案:B