C语言指针经典练习题-及答案.doc

上传人:hw****26 文档编号:2125380 上传时间:2019-04-29 格式:DOC 页数:11 大小:133KB
下载 相关 举报
C语言指针经典练习题-及答案.doc_第1页
第1页 / 共11页
C语言指针经典练习题-及答案.doc_第2页
第2页 / 共11页
C语言指针经典练习题-及答案.doc_第3页
第3页 / 共11页
C语言指针经典练习题-及答案.doc_第4页
第4页 / 共11页
C语言指针经典练习题-及答案.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、C 语言指针练习题及答案一、选择题1. 变量的指针,其含义是指该变量的_. a)值 b)地址c)名 d)一个标志2若有语句 int *point,a=4;和 point=下面均代表地址的一组选项是_ _.a)a,point,*int *p,m=5,n;以下正确的程序段的是_.a)p= b)p=scanf(“%d“, scanf(“%d“,*p);c)scanf(“%d“, d)p=*p=n; *p=m;4. 以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是_ _.main()int *p,*q,a,b;p=printf(“input a:”);scanf(“%d

2、”,*p);a)*p 表示的是指针变量 p 的地址b)*p 表示的是变量 a 的值,而不是变量 a 的地址c)*p 表示的是指针变量 p 的值d)*p 只能用来说明 p 是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value( 下面函数的正确输出结果是_.void print_value(int *x) printf(“%dn”,+*x);a)23 b)24 c)25 d)266.若有说明:long *p,a;则不能通过 scanf 语句正确给输入项读入数据的程序段是A) *p=r=p;p=q;q=r;printf(“%d,%d,%d,%dn“,m,n,*p

3、,*q);程序运行后的输出结果是 A)1,2,1,2 B)1,2,2,1C)2, 1,2,1 D)2,1 ,1,28. 有以下程序main() int a=1, b=3, c=5;int *p1=*p =*p1*(*p2);printf(“%dn“,c);执行后的输出结果是 A)1 B)2 C)3 D)49. 有以下程序main() int a,k=4,m=4,*p1=a=p1= printf(“%dn“,a);程序运行后的输出结果是( )A)4 B)1 C)0 D)运行时出错,无定值10. 在 16 位编译系统上,若有定义 int a=10,20,30, *p=,当执行 p+;后,下列说法错

4、误的是( )A)p 向高地址移了一个字节 B)p 向高地址移了一个存储单元C)p 向高地址移了两个字节 D)p 与 a+1 等价11.有以下程序段 int a10=1,2,3,4,5,6,7,8,9,10,*p= b=p5; b 中的值是( )A)5 B)6 C)8 D)912.若有以下定义,则对 a 数组元素的正确引用是_.int a5,*p=a;a)*a)元素 a5的地址 b)元素 a5的值c)元素 a6的地址 d)元素 a6的值14.设已有定义: int a10=15,12,7,31,47,20,16,28,13,19,*p; 下列语句中正确的是( )A) for(p=a;aint ma

5、in() int x = 10, 20, 30;int *px = x;printf(“%d,“, +*px); printf(“%d,“, *px);px = x;printf(“%d,“, (*px)+); printf(“%d,“, *px);px = x;printf(“%d,“, *px+); printf(“%d,“, *px);px = x;printf(“%d,“, *+px); printf(“%dn“, *px);return 0;程序运行后的输出结果是( ) A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,1

6、1,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义则程序段的输出结果为 int arr=6,7,8,9,10;int *ptr;ptr=arr;*(ptr+2)+=2;printf (“%d,%dn“,*ptr,*(ptr+2); A)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a=2,4,6,8,10,12,*p=a;则*(p+1)的值是_4_. *(a+5)的值是_12_. 18.若有以下说明和语句,int c45,(*p)5;p=c;能正确引用 c 数组元素的是_ _.A) p+1 B) *(p+3) C

7、) *(p+1)+3 D) *(p0+2) 19若有定义:int a23,则对 a 数组的第 i 行 j 列元素地址的正确引用为 _ _.a)*(ai+j) b)(a+i) c)*(a+j) d)ai+j20若有以下定义:int a23=2,4,6,8,10,12;则 a10的值是_8_. *(*(a+1)+0)的值是_ _8.21.有以下定义 char a10,*b=a; 不能给数组 a 输入字符串的语句是()A)gets(a) B)gets(a0) C)gets( D)gets(b);22.下面程序段的运行结果是_ _.char *s=“abcde“;s+=2;printf(“%d“,s)

8、;a)cde b)字符c c)字符c 的地址 d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )A) char s10=“abcdefg“; B) char t=“abcdefg“,*s=t;C) char s10;s=“abcdefg“; D) char s10;strcpy(s,“abcdefg“);24.设已有定义: char *st=“how are you“; 下列程序段中正确的是( )A) char a11, *p; strcpy(p=a+1,B) char a11; strcpy(+a, st);C) char a11; strcpy(a,

9、 st);D) char a, *p; strcpy(p=25.有以下程序 输出结果是( )main()char a=“programming“,b=“language“;char *p1,*p2;int i;p1=a;p2=b;for(i=0;i#include main() char *s1=“AbDeG“;char *s2=“AbdEg“;s1+=2;s2+=2;printf(“%dn“,strcmp(s1,s2);a)正数 b)负数 c)零 d)不确定的值30.有以下程序运行后的输出结果是_。void f(int *x,int *y) int t; t=*x;*x=*y;*y=t; m

10、ain() int a8=1,2,3,4,5,6,7,8,i=0,*p,*q; p=a;q= while(*p!=*q s+=bij; return s; main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf(“%dn“,f(a) ); 执行后的输出结果是A) 12 B) 11 C) 18 D) 1633.若有以下函数首部则下面针对此函数的函数声明语句中正确的是 int fun(double x10, int *n)A)int fun(double x, int *n); B)int fun(double , int );C)int

11、fun(double *x, int n); D)int fun(double *, int *);34.有以下程序执行后的输出结果是( ) void sum(int *a) a0=a1;main( ) int aa10=1,2,3,4,5,6,7,8,9,10,i;for(i=2;i=0;i-) sum(printf(“%dn“,aa0); A)4 B)3 C)2 D)135.下段代码的运行结果是: int main()char a;char *str=strcpy(str,“hello“);puts(str);return 0;A)hello B)null C)h D)发生异常36.下段程

12、序的运行结果是 void main()char *p,*q;char str=“Hello,Worldn“;q = p = str;p+;print(q);print(p);void print(char *s)printf(“%s”,s);A)H e B)Hello,World ello,WorldC)Hello,World Hello,World D)ello,World ell,World37.有以下程序 void fun(char *c,int d)*c=*c+1;d=d+1;printf(“%c,%c,“,*c,d);void main()char a=A,b=a;fun( prin

13、tf(“%c,%cn“,a,b);程序运行后的输出结果是_。A) B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b38、下面选项属于函数指针的是: A、(int*)p(int, int) B、int *p(int, int) C、两者都是 D、两者都不是39、若有函数 max(a,b),并且已使函数指针变量 p 指向函数 max,当调用该函数时,正确的调用方法是_ _.A)(*p)max(a,b); B)*pmax(a,b);C) (*p)(a,b); D) *p(a,b);40、下面几个选项中的代码能通过编译的是 :A)int* fun()int s3=1,3

14、,4;return s;int main()int * result;result = fun();for(int i =0;i3;i+)printf(“%dn“,resulti);return 0;B)int;return s;int main()int * result;result = fun();for(int i =0;i3;i+)printf(“%dn“,resulti);return 0;C)int* fun()int s3=1,3,4;return int main()int * result;result = fun();for(int i =0;i3;i+)printf(“

15、%dn“,resulti);return 0;D)int;return int main()int * result;result = fun();for(int i =0;i3;i+)printf(“%dn“,resulti);return 0;41、下列选项中声明了一个指针数组的是: A)int *p2; B)int (*p)2; C)typedef int* intPtr; intPtr p2;D)A 和 BE)A 和 CF)B 和 C42、下面代码能通过编译的是: A)int main()int a3=1,2,3;int *b3=int *p = b;return 0;B)int ma

16、in()int a3=1,2,3;int *b3=a1,a2,a3;int *p = b;return 0;C)int main()int a3=1,2,3;int *b3=int *p = b;return 0;D)int main()int a3=1,2,3;int *b3=int *p = return 0;43、对于语句 int *pa5;下列描述中正确的是_ _.A) pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素 int (*p)5B) pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量C) pa 5表示某个元素的第 5 个元素的值 D) p

17、a 是一个具有 5 个元素的指针数组,每个元素是一个 int 型指针44、若有以下定义,且 0i4,则不正确的赋值语句是 _ _.int b46, *p, *q4;A) qi = bi; B) p = b;C) p = bi D) qi = 45、若要对 a 进行+ 运算,则 a 应具有下面说明_.A) int a32; B) char *a = “12”,”ab”;C) char (*a)3; D) int b10, *a = b;46、若有以下说明语句:char *language = “FORTRAN”,”BASIC”,PASCAL”,JAVA”,”C”;char *q;q = lang

18、uage + 2;则语句 printf(“%on”, *q) 输出的是_ _.A) language2元素的地址; B)字符串 PASCALC) language2元素的值,它是字符串 PASCAL 的首地址D)格式说明不正确,无法得到确定的输出47、若有以下程序:void main()char *a3 = “I“,“love“,“China“;char *ptr = a;printf(“%c %s“ , *(*(a+1)+1), *(ptr+1) );这段程序的输出是() A) I lB) o oC)o loveD) I love二、程序题1、计算字符串中子串出现的次数。要求:用一个子函数

19、subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。 算法:明文中的字母转换成其后的第 4 个字母,例如,A 变成 E(a 变成 e),Z 变成 D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China 转换成密文为 G l m r e。要求:在函数 change 中完成字母转换,在函数 insert 中完成增加空格,用指针传递参数。字符替换。要求用函数 replace 将用户输入的字符串中的字符 t(T)都替换为 e(E),并返回替换字符的个数。 编写一个程序,输入星期,输出该星期的英文

20、名。用指针数组处理。5、有 5 个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格) 。要求:利用字符串指针和指针数组实现。定义一个动态数组,长度为变量 n,用随机数给数组各元素赋值,然后对数组各单元排序,定义 swap 函数交换数据单元,要求参数使用指针传递。 实现模拟彩票的程序设计:随机产生 6 个数字,与用户输入的数字进行比较,输它们相同的数字个数(使用动态内存分配) 。题号 答案1 B2 D3 D4 B5 D6 A7 B8 C9 C10 A11 D12 D13 A14 B15 A16 D17 4,1218 D19 D 20 8,821 B22 C23 C24 A25 D26 B27 C28 D29 B30 C31 C32 D33 D

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课程笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。