第六章试题归类Word格式文档下载.docx
《第六章试题归类Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第六章试题归类Word格式文档下载.docx(34页珍藏版)》请在冰点文库上搜索。
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("
%d\n"
*(p+2));
A)3
B)4
C)1
D)2
(271)有如下程序
inta[10]={1,2,3,4,5,6,7,8,9,10};
int*p=&
a[3],b;
b=p[5];
则b的值是
A)5
B)6
C)9
D)8
(426)现有如下定义:
inta,b,*p,*q;
,则下列赋值语句错误的是
B)q=&
b;
C)p=q;
D)p=a;
(427)现有如下程序段
#include"
stdio.h"
int*fun(int*a,int*b)
{intc;
c=*a%*b;
return&
c;
{inta=5,b=19,*c;
c=fun(&
b);
++*c);
则程序段执行后的结果为
A)8
B)7
C)6
D)5
(428)现有inta,*b;
b=&
,则下列运算错误的是
A)*&
a
B)&
*a
C)*&
b
D)&
*b
(430)现有如下定义语句
int*p,s[20],i;
p=s;
表示数组元素s[i]的表达式不正确的是
A)*(s+i)
B)*(p+i)
C)*(s=s+i)
D)*(p=p+i)
(436)有下面程序段
#include"
string.h"
{chara[3][20]={{"
},{"
isa"
bigcountry!
"
}};
chark[100]={0},*p=k;
inti;
for(i=0;
i<
3;
i++)
{p=strcat(p,a[i]);
i=strlen(p);
i);
}
则程序段的输出结果是
A)18
B)19
C)20
D)21
B
(465)下列不合法的指针变量的定义是
A)int*_k;
B)char*_245;
C)int*p;
D)double*5_is
D
(466)下列关于指针变量赋空值的说法错误的是
A)当赋空值的时候,变量指向地址为0的存储单元
B)赋值语句可以表达为变量名=′\0′;
C)赋值语句可以表达为变量名=0;
D)一个指针变量可以被赋空值
(468)阅读下面程序,则输出结果是
voidfun(int*a,int*b)
{intc=20,d=25;
*a=c/3;
*b=d/5;
{inta=3,b=5;
fun(&
%d,%d\n"
a,b);
A)6,5
B)5,6
C)20,25
D)3,5
(474)现有如下程序段
voidfun(int*a,int*b,int*c)
{*c=*a+*b;
{inta[2]={12,23},c;
fun(a,a+1,&
c);
c);
则程序的输出结果为
A)23
B)12
C)0
D)35
(477)阅读下面程序,则执行后的结果为
{
char*str="
abcdefghijklmnopq"
while(*str++!
=′e′);
printf("
%c\n"
*str);
A)f
B)a
C)e
D)q
(503)现有定义inta=10,*p=&
则不能使a的内容增1的语句是
A)*p++;
B)*p=*p+1;
C)++*p;
D)*p+=1;
(510阅读下面程序,则程序的输出结果为
{intc[]={1,2,3,4,5,6};
int*p;
p=c;
%d,"
*++p);
A)1,2
B)2,1
C)1,1
D)2,2
145下面程序的输出结果是____。
#include<
stdio.h>
char*p="
;
main()
{inti=0;
while(*p++!
='
e'
);
printf("
%c\n"
*p);
}
A)cB)dC)eD)f
146下面程序的输出结果是____。
f(intx,inty)
{return(y-x);
{inta=5,b=6,c;
intf(),(*g)()=f;
printf("
%d\n"
(*g)(a,b));
A)1B)2C)3D)前面三个参考答案均是错误的
147下面程序的输出结果是____。
{inta=1,*p,**pp;
pp=&
p;
p=&
a++;
printf("
%d,%d,%d\n"
a,*p,**pp);
A)2,1,1B)2,1,2C)2,2,2D)程序有错误
148下面程序的输出结果是____。
main()
{char*alpha[7]={"
ABCD"
"
EFGH"
IJKL"
MNOP"
QRST"
UVWX"
YZ"
};
char**p;
inti;
p=alpha;
for(i=0;
4;
%c"
*(p[i]));
\n"
);
A)AEIMB)BFJNC)ABCDD)DHLP
149下面程序的输出结果是____。
char*pp[2][3]={"
abc"
"
defgh"
ijkl"
mnopqr"
stuvw"
xyz"
main()
{printf("
***(pp+1));
/*①*/
**pp[0]);
/*②*/
(*(*(pp+1)+1))[4]);
/*③*/
*(pp[1][2]+2));
/*④*/
%s\n"
**(pp+1));
/*⑤*/
①A)aB)dC)iD)m
②A)aB)dC)iD)m
③A)hB)lC)qD)w
④A)kB)oC)uD)z
⑤A)ijklB)mnopqrC)stuvwD)xyz
DADDB
(530下面函数的功能是
char*fun(char*str1,char*str2)
{while((*str1)&
&
(*str2++=*str1++));
returnstr2;
}
A)求字符串的长度
B)比较两个字符串的大小
C)将字符串str1复制到字符串str2中
D)将字符串str1接续到字符串str2中
C
(277)执行以下程序后,a,b的值分别为
{inta,b,k=4,m=6,*p1=&
k,*p2=&
m;
a=p1==&
b=(*p1)/(*p2)+7;
a=%d\n"
a);
b=%d\n"
b);
A)-1,5
B)1,6
C)0,7
D)4,10
(247)以下程序的输出结果是
#include
voidprt(int
*x,int
*y,int
*z)
{printf("
%d,%d,%d\n"
++*x,++*y,*(z++));
{inta=10,b=40,c=20;
prt(&
b,&
A)11,42,31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
(254)设有如下定义:
strucksk
{inta;
floatb;
}data;
若要使P指向data中的a域,正确的赋值语句是
B)p=data.a;
C)p=&
data.a;
D)*p=data.a;
‘
(262)以下程序的输出是
structst
{intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&
dt[0],60,&
dt[0]};
{p=aa;
++(p->
x));
A)10
B)11
C)51
D)60
(275)下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;
return(b);
{inta=2,res=2;
res+=func(&
a);
res);
A)4
C)8
D)10
(276)下面能正确进行字符串赋值操作的是
A)chars[5]={"
ABCDE"
B)chars[5]={′A′,′B′,′C′,′D′,′E′};
C)char*s;
s="
D)char*s;
chara;
scanf("
%s"
s)
(292)以下程序有错,错误原因是
{int*p,i;
char*q,ch;
p=&
i;
q=&
ch;
*p=40;
*p=*q;
......
A)p和q的类型不一致,不能执行*p=*q;
语句
B)*p中存放的是地址值,因此不能执行*p=40;
C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;
没有意义,可能会影响后面语句的执行结果
(304)若有说明:
int*p,m=5,n;
以下正确的程序段是
A)p=&
B)p=&
*p)
C)scanf("
n);
*p=n;
D)p=&
*p=m;
(331)下面判断正确的是
A)char*a="
等价于char*a;
*a="
B)charstr[5]={"
等价于charstr[]={"
C)char*s="
等价于char*s;
D)charc[4]="
d[4]="
等价于charc[4]=d[4]="
(356)若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
i)
p[i]=&
a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1]
B)a[10]
C)p[3][1]
D)*(*(p+2)+2)
(363)有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。
则不能把结点b连接到结点a之后的语句是
structnode
{chardata;
structnode*next;
}a,b,*p=&
a,*q=&
A)a.next=q;
B)p.next=&
C)p->
next=&
D)(*p).next=q;
(281)若有以下程序
#include
inta[]={2,4,6,8};
{inti;
int*p=a;
i++)a[i]=*p;
a[2]);
上面程序输出结果是
A)6
B)8
C)4
(315)下面程序段的运行结果是
chara[]="
lanuage"
*p;
p=a;
while(*p!
=′u′){printf("
*p-32);
p++;
A)LANGUAGE
B)language
C)LAN
D)langUAGE
(316)下面程序段的运行结果是
charstr[]="
ABC"
*p=str;
printf("
*(p+3));
A)67
B)0
C)字符′C′的地址
D)字符′C′
(328)下列程序的输出结果是
main()
{inta[5]={2,4,6,8,10},*p,**k;
k=&
*(p++));
**k);
}
A)4
B)22
C)24
D)46
(330)下面程序段的运行结果是
char*p="
abcdefgh"
p+=3;
strlen(strcpy(p,"
)));
A)8
B)12
C)4
D)7
142下面程序的输出结果是____。
{inta[]={1,2,3,4,5};
intx,y,*p;
a[0];
x=*(p+2);
y=*(p+4);
*p,x,y);
A)1,3,5B)1,2,3C)1,2,4D)1,4,5
143下面程序的输出结果是____。
voidive(x,n)
intx[],n;
{intt,*p;
p=x+n-1;
while(x<
p)
{t=*x;
*x++=*p;
*p--=t;
}
return;
{inti,a[]={1,2,3,4,5,6,7,8,9,0};
ive(a,10);
10;
%d"
a[i]);
}
A)1234567890B)0987654321
C)1357924680D)0864297531
(337)以下定义中,标识符prtint(*prt)[3]
A)定义不含法
B)是一个指针数组名,每个元素都是一个指向整数变量的指针
C)是一个指针,它指向一个具有三个元素的一维数组
D)是一个指向整型变量的指针
338函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。
能正确执行此功能的函数是()。
A)funa(int*x,int*y){B)funb(intx,inty){
intt;
*t=x;
x=y;
y=*t;
t=x;
y=t;
}}
C)func(int*x,int*y){D)func(int*x,int*y){
*x=*y;
*y=*x;
*x=*x+*y;
*y=*x-*y;
*x=*x-*y;
(392)已知inta;
则下面的说明指针变量p的语句正确的是
A)intp=&
B)int*p=a
C)int*p=&
D)int*p=*a
(400)阅读下列程序,则执行后的结果为
{intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
%x,%x\n"
c[2][2],*(*(c+1)+1));
A)3e,6
B)62,5
C)56,5
D)3E,6
(535)设有如下定义
char*s[2]={"
abcd"
则下列说法错误的是
A)s数组元素的值分别是"
和"
两个字符串的首地址
B)s是指针数组名,它含有两个元素分别指向字符型一维数组
C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素
D)s数组的两个元素中分别存放了字符′a′和′A′的地址
(544)下列程序的运行结果是
{int*k;
k=a;
a=b;
b=k;
{inta=2004,b=9,*x=&
a,*y=&
fun(x,y);
%d%d"
A)20049
B)92004
C)00
D)编译时出错
619已知:
inta,*y=&
则下列函数调用中错误的是____。
A)scanf("
&
B)scanf("
y);
C)printf("
a);
D)printf("
621设有说明int(*p)[4];
其中的标识符p是____。
A)4个指向整型变量的指针变量
B)指向4个整型变量的函数指针
C)一个指向具有4个整型元素的一维数组的指针
D)具有4个指向整型变量的指针元素的一维指针数组
624已知:
chars[6],*ps=s;
则正确的赋值语句是____。
A)s="
12345"
B)*s="
C)ps="
D)*ps="
622已知:
chars[10],*p=s,则在下列语句中,错误的语句是____。
A)p=s+5;
B)s=p+s;
C)s[2]=p[4];
D)*p=s[0];
625已知:
chara[3][10]={"
BeiJing"
ShangHai"
TianJin"
},*pa=a;
不能正确显示字符串"
的语句是____。
A)printf("
a+1);
B)printf("
*(a+1));
*a+1);
a[1][0]);
626已知:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是____。
A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2])
627已知:
inta[