77范文网 - 专业文章范例文档资料分享平台

C指针练习题带答案

来源:网络收集 时间:2020-08-23 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

10天师班C语言指针练习题

1、设有下列定义 char s[ ]={“12345”},*p=s,则下列表达式中不正确的是( )。 A、p+1 B、*(s+2) C、P=“abcd” D、*S=”ABC” 2、设有下列定义

static int x,*p=&x,*q; q=p;scanf(“%d,%d”,p,q); 若输入“3,4”,则x的值为( )A、3 B、4 C、0 D、无法确定 3、以下程序的运行结果是:A、6 B、6789 C、‘6’ D、789 include main()

{char b[10]={'1','2','3','4','5','6','7','8','9','\\0'},*p=b; int k; k=8;p=b+k;

printf(\

4、有以下程序的输出结果是( ) main()

{int v[]={1,3,5,7,2,4,6,8}; int I,*p;p=v;

for(i=0;i<8;i++) if(*(p+i)==i+1) printf((“%d”,*(p+i)); A、1 B、18 C、35 D、16

5、若有语句int* p,a=4;p=&a;下面均代表地址的一组选项是 A.a,p,*&a B.&*a,&a,*p C.*&p,*p,&a D.&a,&*p,p 6.若有说明int* p,m=5,n;以下正确的程序段是 A.p=&n;scanf(\B.p=&n; scanf(\C.scanf(\D.p=&n; *p=m;

7.下列程序的运行结果是: swap(int *pt1,int *pt2) {int p;

p=*pt1;*pt1=*pt2;*pt2=p;} main()

{int a=5,b=7,*p1,*p2; p1=&a;p2=&b; swap(p1,p2);

printf(\printf(\

A、*p1=7,*p2=5 B、*p1=7,*p2=5 C、*p1=7,*p2=7 D、*p1=5,*p2=5 a=5,b=7 a=7,b=5 a=5,b=5 a=5,b=7 (7)下列程序的运行结果是: main()

{void swap1(); void swap2(); int a=3,b=4;

swap1(a,b);printf(“%d,%d\\n”,a,b); a=3,b=4;

swap2(&a,&b);printf(“%d,%d”,a,b);} void swap1(x,y) int x,y;

{int t;t=x;x=y;y=t;} void swap2(x,y) int *x,*y;

{int t;t=*x;*x=*y;*y=t;}

A、3,4 B、4,3 C、3 4 D、4 3 4,3 3,4 4 3 3 4

8.若有定义int a[]={2,4,5,8,10,12},*p=a;则*(p+1)的值是( )*(a+5)的值是( )*p+1的值是( )。已知char s1[10],*s2=”abc\\0def”;则执行语句strcpy(s1,s2);之后,变量strlen(s1)的值是 。若有一下定义char* s=\则指针变量s与指向的字符串所占的字节数分别是( )。若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是___4___. *(a+5)的值是_____12____.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8___. *(*(a+1)+0)的值是____8____.若有以下定义int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是( ),*(*(a+1))的值是( )。

9、若有定义“int a[9],*p=a;”,并在以后的语句中未改变p的值,不能表示a[2]地址的表达式是: 。 A、p+2 B、a+2 C、a++ D、++(++p)

10.若有“char a[4]={‘A’,’\\0’,’D’},*p=a,i=2,j=4;”,则下列表达式值不是1的有: A、strlen(a); B、j||j C、*(p+2) D、--i

11.以下程序的输出结果是 。A、Afgh123456 B、Abfhd C、Afghd D、Afgd #include main()

{char *p1,*p2,ch[20]=”AbCdEfG123456”; p1=”abcd”;p2=”efgh”;

strcpy(ch+1,p2+1);strcpy(ch+3,p1+3); printf(“%s\\n”,ch);} 12.下面程序运行结果:cde char* s=\ s+=2;

printf(\

第 1 页 共 4 页?

10天师班C语言指针练习题

13.下面程序把数组元素中的最小值放入a[0]中。则在if语句中条件表达式应该是 . main()

{int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I; for(i=0;i<10;i++,p++) if( ) *a=*p; printf(“%d”,*a);}

A、p>a B、*p

while(*p!='u')

{ printf(\(14)以下程序的输出结果是 。 main()

{char c[3][4]={“asd”,”GHJ”,”78”},*p[3]; int i;

for(i=0;i<3;i++) p[i]=c[i];

for(i=0;i<3;i++) printf(“%s”,p[i]);}

A、GHJ78 B、asdGHJ78 C、asdGHJ D、ASDGHJ78

15.以下程序段的输出结果是 A) 68 B) 0 C) 字符D的地址 D) 不确定的值 char str[]=\ printf(\

16. 变量的指针,其含义是指该变量的( )。

A)值 B)地址 C)名 D)一个标志

17. .已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 。

A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) (17) 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( )。A)c=*p1+*p2 B)p2=c C)p1=p2 D)c=*p1*(*p2) 18. 下面判断正确的是 。

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”; 等价于 char c[4]=d[4]=”abc” ; (18) 以下说明不正确的是 。

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”; 19. 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结( )。

void print_value(int *x)

{ printf(“%d\\n”,++*x); }

A)23 B)24 C)25 D)26

(19)若有以下定义语句:int a[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是 。 20. 若有说明:int i,j=9,*p1=&j;则与i=j;等价的语句是: A、i=*p1 B、*p1=*&j C、i=&j D、i=**p1

21. 若有以下定义,则不能表示a数组元素的表达式是 。 int a[10]={5,1,3,4,2,6,7,8,9,11},*p=a; A、*p B、a[10] C、*a D、a[p-a]

22. 写出下列程序的运行结果:A、6 B、0 C、4 D、2 main()

{int a[]={2,4,6},*pr=&a[0],x=6,y,z; for(y=0;y<4;y++)

z=(*(pr+y)

23. 写出下列程序的运行结果: main()

{static char a[]=”abcdefGH”,b[]=”abCDefGh”; char *pt1,*pt2;int k; pt1=a;pt2=b;

for(k=0;k<=7;k++) if(*(pt1+k)==*(pt2+k)) printf(“%c”,*(pt1+k));printf(“\\n”);}

24. 设有说明语句:char a[]=”It is mine”;char *p=”It is mine”;则以下不正确的叙述是 ( )。

A)a+1表示的是字符t的地址 B)p指向另外的字符串时,字符串的长度不受限制 C)p变量中存放的地址值可以改变 D)a中只能存放10个字符

25. 若已定义char s[10];则在下面表达式中不表示s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 26. 若有定义:int a[5],*p=a;则对a数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 27. 若有定义:int a[5],*p=a;则对a数组元素地址的正确引用是 。 A)p+5 B)*a+1 C)&a+1 D)&a[0]

28. 若有定义:int a[2][3];则对a数组的第i行第j列元素值的正确引用是 。 A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j 29. 若有定义:int a[2][3];则对a数组的第i行第j列元素地址的正确引用是 。 A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j 30.若有程序段:int a[2][3],(*p)[3]; p=a;则对a数组元素地址的正确引用是 。

第 2 页 共 4 页?

10天师班C语言指针练习题

A)*(p+2) B)p[2] C)p[1]+1 D)(p+1)+2 31.若有程序段:int a[2][3],(*p)[3]; p=a;则对a数组元素的正确引用是 。 A)(p+1)[0] B)*(*(p+2)+1) C)*(p[1]+1) D)p[1]+2 32.若有定义:int a[5];则a数组中首元素的地址可以表示为 。 A)&a B)a+1 C)a D)&a[1] 33. 若有定义:int (*p)[4];则标识符p 。 41.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是 。 A)p=max; B)p=max(a,b); C)*p=max; D)*p=max(a,b);

42. 若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是_______.

A)(*p)max(a,b); B)*pmax(a,b); C) (*p)(a,b); D) *p(a,b);

43. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________. A)是一个指向整型变量的指针 B)是一个指针数组名 main()

C)是一个指针,它指向一个含有四个整型元素的一维数组 {int *p,*q,a,b; D)定义不合法

p=&a;

34.下列程序的运行结果是: A、3 B、6 C、8 D、12 printf(“input a:”); f(char *s)

scanf(“%d”,*p); {char *p=s; while(*p!=’\\0’) p++;return(p-s);} ??}

main()

a)*p表示的是指针变量p的地址

{pritf(“%d\\n”,f(“abcdefhjkljl”}

b)*p表示的是变量a的值,而不是变量a的地址 35. 以下选项中,对指针变量p的正确操作是 。

c)*p表示的是指针变量p的值

A)int a[3], *p; B)int a[5], *p; C)int a[5]; D)int a[5] d)*p只能用来说明p是一个指针变量 p=&a; p=a; int *p=a=100; int *p1,*p2=a; 44有以下程序

*p1=*p2;

#include 36. 若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是 。 main()

A)x[3] B)p1=x+3,*p1++ { int m=1,n=2,*p=&m,*q=&n,*r; C)p1=x+2,*(p1++) D)p1=x+2,*++p1

r=p;p=q;q=r;

37. 执行以下程序后,y的值是 。 A、305 B、301 C、278 D、347 printf(\main()

程序运行后的输出结果是:

{char ch[ ]={‘a’,’f’,’b’,’d’,’h’,’c’},*p; A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2 int y=1,j; p=&ch[1];

45. 有以下程序 for a(j=0;j<3;j++) y+=*(p+j); main()

printf(“%d\\n”,y);}

{ int a=1, b=3, c=5;

38. 若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则 int *p1=&a, *p2=&b, *p=&c; language[2]的值是 。

*p =*p1*(*p2); A)一个字符 B)一个地址 C)一个字符串 D)一个不定值 printf(\

39.设有定义:char *cc[2]={“1234”,”5678”};则正确的叙述是 。 执行后的输出结果是: A)1 B)2 C)3 D)4 A)cc数组的两个元素中各自存放了字符串”1234”和”5678”的首地址 46. 若有以下定义,则p+5表示_______. B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 int a[10],*p=a;

C)cc是指针变量,它指向含有两个数组元素的字符型一维数组 a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)D)cc元素的值分别维”1234”和”5678”

47. 以下程序的输出结果是 。 40.已有定义int (*p)( );指针p可以 。

main()

A)代表函数的返回值 B)指向函数的入口地址 {char *p1=”abc12”,*p2=”ABC34”; C)表示函数的类型 D)表示函数返回值的类型

char str[30]=”EFG”;

第 3 页 共 4 页?

元素a[6]的值 10天师班C语言指针练习题

strcpy(str+1,strcat(p1,p2)); printf(“%s\\n”,str);}

48. 有以下程序 main()

{char a[]=\char *p1,*p2; int i; p1=a;p2=b;

for(i=0;i<7;i++) if(*(p1+i)==*(p2+i)) printf(\输出结果是()

A)gm B)rg C)or D)ga

48. 下面程序的运行结果是_______. a)正数 b)负数 c)零 d)不确定的值 #include #include main()

{ char *s1=\

char *s2=\ printf(\

49.设static int a[][4]={1,3,5,7,9,11,12,14,16,18,20,23};int *p=&a[1][2],则*(p+2)的值是 。

50、以下程序的执行结果是 。A、24 B、25 C、21 D、26 main()

{int a[]={2,3,4,6,8};int t,j,*p; t=1;p=a;

for(j=0;j<5;j++)t+=*(p+j);

printf(“%d\\n”,t);}

51. 下面选项属于函数指针的是:

A、(int*)p(int, int) B、int *p(int, int) C、两者都是 D、两者都不是 52、main()

{cahr *a[]={“AB”,”cd”,”EF”,”gh”,”IJ”,”ko”}; int I;

for(i=0;i<4;i++) printf((“%s”,a[i]); printf(“\\n”);}

53、下列程序的输出结果是 。 main()

{int i=3,j=5;

char *a=”SCBAYGDFJ”;

printf(“%c%c\\n”,a[i],a[j]);} 53. #include main() {int a,b;

int *pointer_1,*pointer_2; a=100;b=10; pointer_1=&a; pointer_2=&b;

printf(\

printf(\

54. #include 输入8,10,结果是 。 main()

{int *p1,*p2,*p,a,b; scanf(\p1=&a;p2=&b;

if(a

printf(\

55. #include 输入8,10,结果是 。 main()

{void swap(int *p1,int *p2); int a,b;

int *pointer_1,*pointer_2; scanf(\

pointer_1=&a;pointer_2=&b;

if(a

temp=*p1;*p1=*p2;*p2=temp;}

第 4 页 共 4 页?

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库C指针练习题带答案在线全文阅读。

C指针练习题带答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1144854.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: