全国计算机等级考试二级C语言指针测试题Word文档下载推荐.docx
《全国计算机等级考试二级C语言指针测试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言指针测试题Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
![全国计算机等级考试二级C语言指针测试题Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/9/543d007f-263d-4c64-ac73-d6b073b690df/543d007f-263d-4c64-ac73-d6b073b690df1.gif)
p=&
q=&
b;
r=p;
p=q;
q=r;
printf("
%d,%d,%d,%d\n"
*p,*q,a,b);
}
程序运行后的输出结果是
A)8,7,8,7
B)7,8,7,8
C)8,7,7,8
D)7,8,8,7
(5)设有定义:
inta,*pa=&
以下scanf语句中能正确为变量a读入数据的是
A)scanf(“%d”,pa);
B)scanf(“%d”,a);
C)scanf(“%d”,&
pa);
D)scanf(“%d”,*pa);
(6)设有定义:
intn=0,*p=&
n,**q=&
p;
则以下选项中,正确的赋值语句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
(7)有以下程序
以下是引用片段:
void
fun(char
*a,
char
*b)
{
a=b;
(*a)++;
}
main
()
c1=’A’,
c2=’a’,
*p1,
*p2;
p1=&
c1;
p2=&
c2;
fun(p1,p2);
printf(“%c%c\n”,c1,c2);
A)Ab
B)aa
C)Aa
D)Bb
(8)若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是
A)int
*i=NULL;
B)float
*f=NULL;
scanf("
&
d"
f);
*f=10.5;
C)char
t="
m"
*c=&
t;
D)long
*L;
*c=&
L=‘\0’;
(9)有以下程序
#inc1ude
main()
printf("
NULL);
}
A)0
B)1
C)-1
D)NULL没定义,出错
(10)已定义以下函数
intfun(int*p)
{return*p:
}
该函数的返回值是
A)不确定的值
B)形参p中存放的值
C)形参p所指存储单元中的值
D)形参p的地址值
(11)下列函数定义中,会出现编译错误的是
A)max(int
x,int
y,int
*z)
B)int
max(int
x,y)
{*z=x>
y
?
x:
y;
}
int
z;
z=x>
return
}
C)max(int
x,int
y)
D)int
y)
{
int
z;
{
return(x>
y?
x:
y);
z=x>
return(z);
(12)有以下程序段
int
a=5,
*b,
**c;
c=&
b=&
……
程序在执行了c=&
b:
语句后,表达式:
**c的值是
A)变量a的地址
B)变量b中的值
C)变量a中的值
D)变量b的地址
(13)有以下程序
a,b,c,*d;
a=’\’;
b=‘\0xbc’;
c=‘\xab’;
d="
\0127"
%c%c%c%c\n"
a,b,c,*d);
编译时出现错误,以下叙述中正确的是
A)程序中只有a=’\’;
语句不正确
B)b=‘\0xbc’;
C)d="
D)a=’\’;
和c=‘\0xab’;
语句都不正确
(14)若有以下定义和语句
#include
int
a=4,b=3,*p,*q,*w;
w=q;
q=NULL;
则以下选项中错误的语句是
A)*q=0;
B)w=p;
C)*p=a;
D)*p=*w;
(15)有以下程序
*f(int
*x,int
*y)
if(*x<
return
else
}
a=7,b=8,*p,*q,*r;
p=&
q=&
r=f(p,q);
printf(“%d,%d,%d”,*p,*q,*r);
执行后输出结果是
A)7,8,8
B)7,8,7
C)8,7,7
D)8,7,8
(16)若有说明:
intn=2,*p=&
n,*q=p;
,则以下非法的赋值语句是
A)p=q;
B)*p=*q;
C)n=*q;
D)p=n;
(17)有以下程序
*c,int
d)
*c=*c+1;
d=d+1;
printf(“%c,%c,”,*c,d);
a=’A’,b=’a’;
fun(&
b,a);
printf(“%c,%c\n”,a,b);
A)B,a,B,a
B)a,B,a,B
C)A,b,A,b
D)b,B,A,b
(18)若有说明语句:
inta,b,c,*d=&
c;
,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
A)scanf("
%d%d%d"
&
a,&
b,d);
B)scanf("
b,&
d);
C)scanf("
a,b,d);
D)scanf("
a,b,*d);
(19)若定义:
inta=511,*b=&
则printf("
*b);
的输出结果为
A)无确定值
B)a的地址
C)512
D)511
(20)若有说明:
inti,j=2,*p=&
i;
,则能完成i=j赋值功能的语句是
A)i=*p;
B)p*=*&
j;
C)i=&
D)i=**p;
(21)下列程序段的输出结果是
A)2143
B)1212
C)1234
D)2112
fun(int
*x,
printf(“%d
%d”,
*y);
*x=3;
*y=4;
x=1,y=2;
y,&
x);
printf(“%d
%d”,x,
y);
(22)下列程序的运行结果是
A)63
B)36
C)编译出错
D)00
*k;
k=a;
b=k;
a=3,
b=6,
*x=&
a,
*y=&
fun(x,y);
b);
(23)有如下程序段
int*p,a=10,b=1
a=*p+b;
执行该程序段后,a的值为
A)12
B)11
C)10
D)编译出错
(24)有以下函数
charfun(char*p)
{returnp;
A)无确切的值
B)形参p中存放的地址值
B)一个临时存储单元的地址
D)形参p自身的地址值
(25)请选出正确的程序段
*p;
B)int
*s,k;
scanf("
%d"
p);
*s=100;
…
…
C)int
D)int
char*p,c;
char*p,e;
s=&
k;
p=&
p=&
*p='
a'
s=p;
…
*s=1;
…
(26)若有以下定义和语句:
doubler=99,*p=&
r;
*p=r;
则以下正确的叙述是
A)以下两处的*p含义相同,都说明给指针变量p赋值
B)在"
doubler=99,*p=&
"
中,把r的地址赋值给了p所指的存储单元
C)语句"
*p