还剩6页未读,继续阅读
文本内容:
指针练习题
一、选择题
2.有以下程序
1.设int x[]={1,2,3,4,5,void main6,*p=x;则值为3的表达式是A p+=2,*++pB p+=2,*p++C p+=3,*pD p+=2,++*pint a
[3]
[3],*p,i;p=a
[0]
[0];for i=0;i9;i++p[i]=i;fori=0;i3;i++printf〃%d〃,a[l][i];程序运行后的输出结果是A012B1230234D
3453.以下语句或语句组中,能正确进行字符串赋值的是A char*sp;*sp=〃right!〃;B chars
[10];s=〃right!〃;C chars
[10];*s=〃right!〃;D char*sp=〃right!〃;
4.有以下函数int funchar*x,char*y{int n=0;while*x=*y*x!=\0{x++;y++;n++;}return n}函数的功能是oA查找x和y所指字符串中是否有‘0B统计x和y所指字符串中最前面连续相同的字符个数c将y所指字符串赋给X所指存储空间D统计x和y所指字符串中相同的字符个数
5.若有定义语句inta
[2]
[3],*p
[3];,则以下语句中正确的是A p=a;B p
[0]=a;C p
[0]=a[l]
[2];D p[l]=a;
6.有程序如下#includestdio.hvoid funint*p{printfv%d\n”,p
[5];}void main;{int a
[10]={l,2,3,4,5,6,7,8,9,10};fun a
[3];程序运行后的输出结果是oA5B6C8D
97.设已有定义float x;则以下对指针变量p进行定义且赋初值的语句中正确的是A float*p=1024;B int*p=float x;C floatp=x;D float*P=x;
8.若有定义int w
[3]
[5];,则以下不能正确表示该数组元素的表达式是OA**w+3B*w+l
[4]C**w+l D*w
[0]
[0]+l
9.若有定义语句int句2]
[3],*pk
[3];,则以下语句中正确的是OA pk=k;B pk
[0]=k[l]
[2];C pk=k
[0];D pk[l]=k;
10.已定义以下函数int funint*p return*p;fun函数返回值是oA不确定的值B一个整数C形参p中存放的值D形参p的地址值
11.若有说明语句double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是A*p=a;scanf u%lf,p;B*p=a;scanf%f”,p;C p=a;scanf“机f”,*p;D p=a;scanf u%lfv,p;
13.有以下程序程序执行后的输出结果是A ProhsbnBPrphsbn CProgsbnDProgram
14.若有定义int x=0,*p=x;,则语句printf〃%d\n〃,*p;的输出结果是A随机值B0C x的地址D p的地址
15.
16.设有以下定义和语句char str
[20]=,,Program9\*p;二p str;则以下叙述中正确的是A*p与str
[0]中的值相等B str与p的类型完全相同C str数组长度和p所指向的字符串长度相等D数组str中存放的内容和指针变量p中存放的内容相同
17.设有说明int*ptr;其中标识符ptr是A是一个指向整形变量的指针B定义不合法C是一个函数名D是一个指针,它指向一个函数值是int的函数
18.设有定义int nl=0,n2,*p=n2,*q=nl;,以下赋值语句中与n2=nl;语句等价的是A*p二*q;B p=q;C*p=nl;D p=*q;
19.若有以下定义和语句int w
[2]
[3],*p
[3];p=w;则对w数组元素非法引用是OA*w
[0]+2B*p
[2]C p
[0]
[0]D*p[l]+
220.具有相同类型的指针类型变量p与数组a,不能进行的操作是A p=a;B*p=a
[0];C p=a
[0];D p=a;
21.有以下程序#include stdio.hvoid main{int a[]={2,4,6,8,10},y=0,x,*p;p=a[l];for x=l;x3;x++y+=p[x];printf〃%d\n〃,y;程序运行后的输出结果是A10B11C14D
1522.有以下程序ftinclude stdio.hvoid mainint a
[3]
[3],*p,i;p=a
[0]
[0];fori=0;i9;i++p[i]=i;fori=0;i3;i++printf〃%d程序运行后的输出结果是A012B1230234D
34523.有以下程序void prtint*叫int nint i;fori=0;in;i++m[i]++;ftinclude stdio.hvoid main{int a□二{1,2,3,4,5},i;prt a,5;fori=0;i5;i++printf〃%d,〃,a[i];程序运行后的输出结果是A1,2,3,4,5,B2,3,4,5,6,C3,4,5,6,7,D2,3,4,5,1,有以下函数
24.int funchar*a,char*bwhile*a!=,*b!=*a b{a++;b++;}=二*该函数的功能是A计算a和b所指字符串的长度之差B将b所指字符串复制到a所指字符串中C将b所指字符串连接到a所指字符串后面D比较a和b所指字符串的大小
25.有以下程序void pointchar*pp+=3;ftinclude stdio.hvoidmain charb
[4]={,a,b,,c,,,d,},*p=b;point p;printf z,%c〃,*p;}程序运行后的输出结果是A aB bC cD d
26.程序中若有如下的说明和定义语句char funchar*;main char*s=〃one〃,a
[5]={0},*f1=fun,ch;以下选项中对函数fun的正确调用语句是A*fl a;B Cfuna;D ch=*fls
二、分析下列程序的运行结果
1.#include“string.hvoid funchar*s,int p,int kinti;fori=p;ik-l;i++s[i]=s[i+2];#include stdio.hvoid mainchars[]=nabcdefgn;funs,3,strlens;putss;
2.char*sschar*schar*p,t;p=s+l;t=*s;while*p{*p-l=*p;p++;};*p-l=treturn s;#include stdio.hvoid mainchar*p,str
[10]=nabcdefghn;p=ssstr;printfn%s\nn,p;ttinclude stdio.h
3.void f int n,int*rint rl=0;if n%3==0rl=n/3;elseif n%5==0rl=n/5;else f--n,rl;*r=rl;void mainint m=7,r;f m,r;printf级d\n〃,r;
4.^include stdio.hvoid funlchar*pchar*q;q=P;while*q!=\0|*q++;q++;void main{char a口={“Program},*p;p=a
[3];funlp;printf〃%s\n〃,a;
5.#include stdio.hvoid swapchar^x,char*y{char t;t二*x;*x=*y;*y=t;}void main{char*sl=〃abc〃,*s2=〃123〃;swap si,s2;printf〃%s,%s\n〃,si,s2;
6.#include stdio.hvoid mainchar*p口={〃3697〃,〃2584〃};inti,j;long num=0;for i=0;i2;i++j=0;whilep[i][j]!=\0if p[i][j]-%2num=10*num+p[i][j]-O;j+=2;printf〃%d\n〃,num;}
7.#include stdio.h#include string.h voidf char*s,char*tchar k;k=*s;*s=*t;*t=k;s++;t if*s fs,t;一;void main{char str
[10]abcdefg*p;二〃〃,p=str+strlenstr/2+1;fP,P-2;printf z/%s\n/z,str;
8.#include stdio.h voidfint*x,int*yint t;t=*x;*x=*y;*y=t;}void main{inta
[8]={l,2,3,4,5,6,7,8},i,*p,*q;P=a;q=a
[7];whilepqfP,q;p++;q-;fori=0;i8;i++printf〃%d,〃,a[i];三.编程编写一个函数,计算二维数组中的最大元素,数组以指针方式传递
1..编写函数,通过指针将一个字符串反向输出
2.编写一个程序,用随机数的方式生成一个二维数组的元素值,然后计算每行的平3均值并输出.从键盘输入个字符串,并排序410从键盘输入个字符串,将它们合并,合并后的码值从小到大顺序排序,并删
5.2去相同的字符。