-
第十章
指针
一.选择题
1.
变量的指针,其含义是指该变量的
。
A
)值
B
)地址
C
)名
D
)一个标志
2.
已有定义
int
k=2;int
*ptr1,*ptr2;
且
ptr1
和
ptr2
均已指向变量
k
,下面不能正确执行
的赋值语句是
。
A
)
k=*ptr1+*ptr2
B
)
ptr2=k
C
)
ptr1=ptr2
D
)
k=*ptr1*(*ptr2)
3.
若有说明:
int *p,m=5,n;
以下程序段正确的是
。
A
)
p=&n
B
)
p = &n
scanf(
“
%d
”
,&p);
scanf(
“
%d
”
,*p);
C
)
scanf(
“
%d
”
,&n);
D
)
p = &n
*p=n
*p = m
4.
已有变量定义和函数调用语句:
int a=25;print_value(&a);
下面函数的输出结果
是
。
void print_value(int *x)
{
printf(
“
%dn
”
,++*x); }
A
)
23
B
)
24
C
)
25
D
)
26
5.
若有说明:
int *p1, *p2,m=5,n;
以下均是正确赋值语句的选项是
。
A
)
p1=&m; p2=&p1
B
)
p1=&m; p2=&n; *p1
=*
p2
C
)
p1=&m; p2=p1
D
)
p1=&m; *p1=*p2
6.
若有语句:
int *p,a=4;
和
p=&a
;下面均代表地址的一组选项是
。
A
)
a,p,*&a
B
)
&*a,&a,*p
C
)
*&p,*p,&a
D
)
&a,&*p,p
7.
下面判断正确的是
。
A
)
char *a=
”
china
”
;
等价于
char *a; *a=
”
china
”
B
)
char str[10]={
“
china
”
};
等价于
char str[10]; str[ ]={
“
china
”
;}
C
)
char *s=
”
china
”
;
等价于
char *s; s=
”
china
”
D
)
char c[4]=
”
abc
”
,d[4]=
”
abc
”< br>;
等价于
char c[4]=d[4]=
”
abc
”
8.
下面程序段中,
for
循环的执行次数是
。
char *s=
”
ta018bc
”
for (
; *s!=
’
0
’
s++)
printf(
“
*
”
)
A
)
9
B
)
7
C
)
6
D
)
5
9.
下面能正确进行字符串赋值操作的是
。
A
)
char s[5]={
“
ABCDE
”
};
B
)
char s[5]={
‘
A
’
,
’
B
’
,
’
C
’
,
’
D
’
,
’
E
’
};
C
)
char *s s=
”
ABCDE
”
;
D
)
char *s; scanf(
“
%s
”
,s)
10.
下面程序段的运行结果是
。
char *s=
”
abcde
”
s+=2 printf(
“
%d
”
,s);
A
)
cde
B
)字符
’
c
’
C
)字符
’
c
’
的地址
D
)不确定
11.
设
p1
和
p2
是指向同一个字符串的指针变量,
c
为字符变量,则以下不能正确执行 的赋
值语句是
。
A
)
c=*p1+*p2
B
)
p2=c
C
)
p1=p2
D
)
c=*p1*(*p2)
12.
设有程序段
:
char s[ ]=
”
china
”
; char *p p=s ;
则下面叙述正确的是
。
A
)
s
和
p
完全相同
B
)数组
s
中的内容和指针变量
p
中的内容相等
C
)
s
数组长度和
p
所指向的字符串长度相等
D
)
*p
与
s[0]
相等
13.
以下与库函数
strcpy(char *p1,char *p2)
功能不相等的程序段是
。
A
)
strcpy1(char *p1,char *p2)
{ while ((*p1++=*p2++)!=
’
0
’
) }
B
)
strcpy2(char *p1,char *p2)
{ while ((*p1=*p2)!=
’
0
’
) { p1++; p2++ } }
C
)
strcpy3(char *p1,char *p2)
{ while (*p1++=*p2++) }
D
)
strcpy4(char *p1,char *p2)
{ while (*p2) *p1++=*p2++ }
14.
下面程序段的运行结果是
。
char a[ ]=
”
language
”
, *p
p=a
while (*p!=
’
u
’
) { printf(
“
%c
”
,*p-32); p++ }
A
)
LANGUAGE
B
)
language
C
)
LANG
D
)
langUAGE
15.
若有语句:
char s1[ ]=
”
string
”
,s2[8],*s3,*s4=
”
string2
”
;
则库函数
strcpy
的错误调用是
。
A
)
strcpy(s1,
”
string2
”
) ;
B
)
strcpy(s4,
”< br>string1
”
);
C
)
strcpy(s3,
”
string1
”
);
D
)
strcpy(s1,s2);
16.
以下与库函数
strcmp(char *s,char *t)
功能相等的程序段是
。
A
)
strcmp1(char *s,char *t)
{
for ( *s++=*t++; )
if (*s= =
’
0
’
) return 0
return (*s
-
*t)
}
B
)
strcmp2(char *s,char *t)
{
for ( *s++=*t++; )
if (!*s) return 0
return (*s
-
*t)
}
C
)
strcmp3(char *s,char *t)
{
for ( *t= =*s; )
{ if (!*t) return 0 t++ s++ }
return (*s
-
*t)
}
D
)
strcmp4(char *s,char *t)
{
for ( *s==*t; s++, t++ )
if (!*s) return 0
return (*t
-
*s)
}
17.
以下说明不正确的是
。
A
)
char a[10]=
”
china
”
B
)
char a[10],*p=a; p=
”
china
”
;
C
)
char *a; a=
”
china
”
D
)
char a[10],*p; p=a=
”
china
”
;
18.
设有说明语句:
char a[]=
”
It is mine
”
;char *p=
”
It is mine
”
;
则以下不正确的叙
述是
。
A
)
a+1
表示的是字符
t
的地址
B
)
p
指向另外的字符串时,字符串的长度不受限制
C
)
p
变量中存放的地址值可以改变
D
)
a
中只能存放
10
个字符
19.
若已定义
char s[10]
;则在下面表达式中不表示
s[1]
的地址是
。
A
)
s+1
B
)
s++
C
)
&s[0]+1
D
)
&s[1]
20.
若有定义:
int a[5],*p=a;
则对
a
数组元素的正确引用是
。
A
)
*&a[5]
B
)
a+2
C
)
*(p+5)
D
)
*(a+2)
21.
若有定义:
int a[5],*p=a;
则对
a
数组元素地址的正确引用是
。
A
)
p+5
B
)
*a+1
C
)
&a+1
D
)
&a[0]
22.
若有定义
:int a[5];
则
a
数组中首元素的地址可以表示为
。
A
)
&a
B
)
a+1
C
)
a
D
)
&a[1]
23.
以下与
int *q[5];
等价的定义语句是
。
A
)
int q[5]
B
)
int *q
C
)
int *(q[5])
D
)
int (*q)[5]
24.
以下选项中,对指针变量
p
的不正确操作是
。
A
)
int a[3], *p;
B
)
int a[5], *p;
C
)
int a[5];
D
)
int a[5]
p=&a;
p=a;
int *p=a;
int *p1,*p2=a;
*p1=*p2;
25.
若有定义
:int
x[10]={0,1,2,3,4,5,6,7 ,8,9},*p1;
则数值不为
3
的表达式是
。
A
)
x[3]
B
)
p1=x+3,*p1++
C
)
p1=x+2,*(p1++)
D
)
p1=x+2,*++p1
26.
若有说明:
char *language[]={
“
FOR TRAN
”
,
”
BASIC
”
,
”
PAS CAL
”
,
”
JA
V
A
”
,
”< br>C
”
};
则
language[2]
的值是
。
A
)一个字符
B
)一个地址
C
)一个字符串
D
)一个不定值
27.
设有定义:
char *cc[2 ]={
“
1234
”
,
”
5678
”
};
则正确的叙述是
。
A
)
cc
数组的两个元素中各自存放了字符串
”
1234
”
和
”
5678
”
的首地址
B
)
cc
数组的两个元素分别存放的是含有
4
个字符的一维 字符数组的首地址
C
)
cc
是指针变量,它指向含有两个数组元素的字符型一维数组
D
)
cc
数组元素的值分别维
”
1234
”
和
”
5678
”
28.
已有定义
int (*p)( );
指针
p
可以
。
A
)代表函数的返回值
B
)指向函数的入口地址
C
)表示函数的类型
D
)表示函数返回值的类型
29.
已有函数
max(a,b)
,为了让函数指针变量
p
指向函数
max
,正确的赋值方法是
。
A
)
p=max;
B
)
p=max(a,b);
C
)
*p=max;
D
)
*p=max(a,b);
30.
若有函数
max(a,b)
,并且已使函数指针变量
p
指向函数
max
,当 调用该函数时,正确的
调用方法是
。
A
)
(*p)max(a,b)
B
)
*pmax(a,b);
C
)
(*p)(a,b);
D )*p(a,b);
31.
以下正确的叙述是
。
A
)< br>C
语言允许
main
函数带形参,且形参个数和形参名均可由用户指定
B
)
C
语言允许
main
函数带形参,形参名只能是
argc
和
argv
C
)当
main
函数带有形参时,传给形参的值只能从命令行中得到
D
)若有说明
: int main(int argc,char *argv[]),
则
argc
的值必须大于
1
-
-
-
-
-
-
-
-
本文更新与2021-01-26 08:54,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/570982.html
-
上一篇:C试题附答案
下一篇:相关分析作业试题及答案