第十章 指针练习题Word格式文档下载.docx
《第十章 指针练习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第十章 指针练习题Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
a,&
*point,point
10.3下列程序执行后的输出结果是
voidfunc(int*a,intb[])
{b[0]=*a+6;
}
main()
{inta,b[5];
a=0;
b[0]=3;
func(&
a,b);
printf("
%d\n"
b[0]);
}
A)6B)7C)8D)9
A
10.4已定义以下函数
fun(char*p2,char*p1)
{while((*p2=*p1)!
='
\0'
){p1++;
p2++;
}
函数的功能是
A)将p1所指字符串复制到p2所指内存空间
B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较
D)检查p1和p2两个指针所指字符串中是否有'
10.6下面说明不正确的是
A)chara[10]="
B)chara[10],*p=a;
p="
C)char*a;
a="
D)chara[10],*p;
p=a="
10.8执行以下程序后,a,b的值分别为
{inta,b,k=4,m=6,*p1=&
k,*p2=&
m;
a=p1==&
b=(*p1)/(*p2)+7;
printf("
a=%d\n"
a);
b=%d\n"
b);
A)-1,5B)1,6C)0,7D)4,10
C
10.10以下程序有错,错误原因是
{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;
没有意义,可能会影响后面语句的执行结果
10.11下面程序段的运行结果是
chara[]="
lanuage"
*p;
p=a;
while(*p!
=′u′){printf("
%c"
*p-32);
p++;
A)LANGUAGEB)languageC)LAND)langUAGE
10.12有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a]B)*(&
a[i])C)p[i]D)*(*(a+i))
10.13函数fun的返回值是
fun(char*a,char*b)
{intnum=0,n=0;
while(*(a+num)!
=′\0′)num++;
while(b[n]){*(a+num)=b[n];
num++;
n++;
returnnum;
A)字符串a的长度B)字符串b的长度
C)字符串a和b的长度之差D)字符串a和b的长度之和
10.15下面判断正确的是
A)char*a="
等价于char*a;
*a="
B)charstr[5]={"
};
等价于charstr[]={"
C)char*s="
等价于char*s;
s="
D)charc[4]="
abc"
d[4]="
等价于charc[4]=d[4]="
10.17有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
A)*p+9B)*(p+8)C)*p+=9D)p+8
B
10.19下列程序的运行结果是
voidfun(int*a,int*b)
{int*k;
k=a;
a=b;
b=k;
{inta=3,b=6,*x=&
a,*y=&
b;
fun(x,y);
%d%d"
a,b);
A)63B)36C)编译出错D)00
10.20若有说明语句
Itismine"
char*p="
则以下不正确的叙述是
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
10.21以下程序的运行结果是
sub(intx,inty,int*z)
{*z=y-x;
{inta,b,c;
sub(10,5,&
a);
sub(7,a,&
b);
sub(a,b,&
c);
%4d,%4d,%4d\n"
a,b,c);
A)5,2,3B)-5,-12,-7
C)-5,-12,-17D)5,-2,-7
10.23下面程序的输出结果是
#include<
stdio.h>
string.h>
{char*p1="
*p2="
ABC"
str[50]="
xyz"
strcpy(str+2,strcat(p1,p2));
%s\n"
str);
A)xyzabcABCB)zabcABC
C)xyabcABCD)yzabcABC
同步练习二
10.1b下列关于指针变量赋空值的说法错误的是
A)当赋空值的时候,变量指向地址为0的存储单元
B)赋值语句可以表达为变量名=′\0′;
C)赋值语句可以表达为变量名=0;
D)一个指针变量可以被赋空值
10.4b下列程序是用来判断数组中特定元素的位置所在。
如果输入如下整数:
876675896101301401980431451777
#include<
conio.h>
intfun(int*s,intt,int*k)
{inti;
*k=0;
for(i=0;
i<
t;
i++)
if(s[*k]<
s[i])*k=i;
returns[*k];
{inta[10]={876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a,10,&
k);
%d,%d\n"
k,a[k]);
则输出结果为
A)7,431B)6C)980D)6,980
10.6b有以下程序
{char*p="
abcde\0fghjik\0"
%d\n"
strlen(p));
程序运行后的输出结果是
A)12B)15C)6D)5
10.8b阅读下面程序,执行后的结果为
#include"
stdio.h"
voidfun(int*a,int*b)
{intk;
k=5;
*a=k;
*b=*a+k;
{int*a,*b,x=10,y=15;
a=&
x;
b=&
y;
fun(a,b);
%d,%d\n"
*a,*b);
A)10,15B)5,15C)5,10D)15,10
10.10b阅读下列程序,则执行后的结果为
{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,6B)62,5C)56,5D)3E,6
10.12b现有如下程序段
int*fun(int*a,int*b)
{intc;
c=*a%*b;
return&
c;
{inta=5,b=19,*c;
c=fun(&
++*c);
则程序段执行后的结果为
A)8B)7C)6D)5
10.13b现有inta,*b;
b=&
,则下列运算错误的是
A)*&
aB)&
*aC)*&
bD)&
*b
10.14b现有如下定义语句
int*p,s[20],i;
p=s;
表示数组元素s[i]的表达式不正确的是
A)*(s+i)B)*(p+i)
C)*(s=s+i)D)*(p=p+i)
10.15b阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是
#defineN10
int*fun(inta[N],intn)
{inti,b[N];
n;
b[i]=a[i];
return(b);
{inta[N]={12,34,45,5,6,34,4,655,2};
int*k;
k=fun(a[N],5);
*k);
A)指针k没有指向任何对象而成为“无向指针”,所以这里会产生警告
B)return语句不应该有括号,所以在这里会有警告
C)return语句的返回值类型与指针k的基类型不一致,这里会产生警告
D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告
10.16b现有如下程序段
{inta[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};
inti=0,j=5;
*(&
a[0][0]+2*i+j-2));
则程序的输出结果为
A)21B)78C)23D