C语言学习知识指针习题集附规范标准答案.doc
/*一、选择题1. 变量的指针,其含义是指该变量的_________. a值 b地址 c名 d一个标志2若有语句int *point,a4;和point下面均代表地址的一组选项是_____. aa,point,*int *p,m5,n;以下正确的程序段的是________. ap bp scanfd, scanfd,*p; cscanfd, dp *pn; *pm;4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.mainint *p,*q,a,b;pprintf“ a”;scanf“d”,*p;a*p表示的是指针变量p的地址b*p表示的是变量a的值,而不是变量a的地址c*p表示的是指针变量p的值d*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句int a25; print_value 下面函数的正确输出结果是________.void print_valueint *x printf“dn”,*x;a23 b24 c25 d266.若有说明long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A *p rp;pq;qr; printfd,d,d,dn,m,n,*p,*q;程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28. 有以下程序main int a1, b3, c5; int *p1 *p *p1**p2; printfdn,c;执行后的输出结果是A)1B)2C)3D)49. 有以下程序 main int a,k4,m4,*p1ap1 printfdn,a;程序运行后的输出结果是()A)4B)1 C)0 D)运行时出错,无定值10. 在16位编译系统上,若有定义int a10,20,30, *p,当执行p;后,下列说法错误的是()A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a1等价11.有以下程序段 int a101,2,3,4,5,6,7,8,9,10,*pbp5;b中的值是() A5 B6 C8 D912.若有以下定义,则对a数组元素的正确引用是_________. int a5,*pa; a* a元素a5的地址 b元素a5的值 c元素a6的地址 d元素a6的值14.设已有定义 int a1015,12,7,31,47,20,16,28,13,19,*p; 下列语句中正确的是() A forpa;ap10;a; B forpa;pa10;p; C forpa,aa10;pa;p;D forpa;ap10; a;15.有以下程序段 include stdio.hint main int x 10, 20, 30; int *px x; printfd,, *px; printfd,, *px; px x; printfd,, *px; printfd,, *px; px x; printfd,, *px; printfd,, *px; px x; printfd,, *px; printfdn, *px; return 0;程序运行后的输出结果是 A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义int arr6,7,8,9,10; int *ptr; ptrarr; *ptr22; printf d,dn,*ptr,*ptr2;则程序段的输出结果为A8,10 B6,8 C7,9 D6,1017.若有定义int a2,4,6,8,10,12,*pa;则*p1的值是______. *a5的值是_________. 18.若有以下说明和语句,intc45,*p5;pc;能正确引用c数组元素的是______.Ap1 B*p3 C*p13 D*p02 19若有定义int a23,则对a数组的第i行j列元素地址的正确引用为______. a*aij bai c*aj daij20若有以下定义int a232,4,6,8,10,12;则a10的值是_____. **a10的值是________.21.有以下定义char a10,*ba;不能给数组a输入字符串的语句是()Agetsa Bgetsa0 Cgets Dgetsb;22.下面程序段的运行结果是_________. char *sabcde; s2;printfd,s; acde b字符c c字符c的地址 d无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()A char s10abcdefg; B char tabcdefg,*st;C char s10;sabcdefg; D char s10;strcpys,abcdefg;24.设已有定义 char *sthow are you; 下列程序段中正确的是() A char a11, *p; strcpypa1, B char a11; strcpya, st; C char a11; strcpya, st;D char a, *p; strcpyp25.有以下程序mainchar aprogramming,blanguage;char *p1,*p2;int i;p1a;p2b;fori0;i7;iif*p1i*p2iprintfc,*p1i;输出结果是()Agm Brg Cor Dga26设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.ac*p1*p2; bp2c cp1p2 dc*p1**p2;27以下正确的程序段是_________. achar str20; bchar *p; scanfs, scanfs,p; cchar str20; dchar str20,*pstr;scanfs, scanfs,p2;28若有说明语句 char aIt is mine; char *pIt is mine; 则以下不正确的叙述是________. aa1表示的是字符t的地址 bp指向另外的字符串时,字符串的长度不受限制 cp变量中存放的地址值可以改变 da中只能存放10个字符29下面程序的运行结果是_______. include stdio.h include string.h main char *s1AbDeG; char *s2AbdEg; s12;s22; printfdn,strcmps1,s2; a正数 b负数 c零 d不确定的值30.有以下程序 void fint *x,int *y int t; t*x;*x*y;*yt; main int a81,2,3,4,5,6,7,8,i,*p,*q; pa;q while*p*qfp,q;p;q--; fori0;i8;i printfd,,ai; 程序运行后的输出结果是______。A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4, C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1,31. 已定义以下函数 fun (int*p) return*p; 该函数的返回值是A) 不确定的值 B) 形参p中存放的值C) 形参p所指存储单元中的值 D) 形参p的地址值32.有以下程序 int fint b4 int i,j,s0; forj0;j4;j ij; ifi2 i3-j; sbij; return s; main int a441,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printfdn,fa ; 执行后的输出结果是A12 B11 C18 D1633.若有以下函数首部int fundouble x10, int *n则下面针对此函数的函数声明语句中正确的是A)int fundouble x, int *n;B)int fundouble , int ;C)int fundouble *x, int n;D)int fundouble *, int *;34.有以下程序 void sumint *a a0a1;main int aa101,2,3,4,5,6,7,8,9,10,i;fori2;i0;i-- sumprintfdn,aa0; 执行后的输出结果是()A4 B3 C2 D135.下段代码的运行结果是 int mainchar a;char *strstrcpystr,hello;printfstr;return 0;Ahello Bnull Ch D发生异常36.下段程序的运行结果是 void mainchar *p,*q;char strHello,Worldn;q p str;p;printq;printp;void printchar *sprintf“s”,s;AH e BHello,World ello,WorldCHello,World Hello,World Dello,World ell,World37.有以下程序 void funchar *c,int d*c*c1;dd1;printfc,c,,*c,d;void mainchar aA,ba;fun printfc,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*pint, int B、int *pint, int C、两者都是 D、两者都不是39、若有函数maxa,b,并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是_______.A*pmaxa,b; B*pmaxa,b;C *pa,b; D *pa,b;40、下面几个选项中的代码能通过编译的是 Aint* funint s31,3,4;;return s;int mainint * result;result fun;forint i 0;i3;iprintfdn,resulti;return 0;Bint;return s;int mainint * result;result fun;forint i 0;i3;iprintfdn,resulti;return 0;Cint* funint s31,3,4;;return int mainint * result;result fun;forint i 0;i3;iprintfdn,resulti;return 0;Dint;return int mainint * result;result fun;forint i 0;i3;iprintfdn,resulti;return 0;41、下列选项中声明了一个指针数组的是Aint *p2; Bint *p2; Ctypedef int* intPtr; intPtr p2;DA和BEA和CFB和C42、下面代码能通过编译的是Aint mainint a31,2,3;int *b3int **p b;return 0;Bint mainint a31,2,3;int *b3a1,a2,a3;int **p b;return 0;Cint mainint a31,2,3;int *b3int *p b;return 0;Dint mainint a31,2,3;int *b3int *p return 0;43、对于语句int *pa5;下列描述中正确的是_______.A pa是一个指向数组的指针,所指向的数组是5个int型元素B pa是一个指向某数组中第5个元素的指针,该元素是int型变量C pa 5表示某个元素的第5个元素的值 D pa是一个具有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 *a3; D int b10, *a b;46、若有以下说明语句char *language “FORTRAN”,”BASIC”,PASCAL”,JAVA”,”C”;char **q;q language 2;则语句printf“on”, *q 输出的是_______.A language2元素的地址; B)字符串PASCALC language2元素的值,它是字符串PASCAL的首地址D)格式说明不正确,无法得到确定的输出47、若有以下程序void main char *a3 I,love,China; char **ptr a; printfc s , **a11, *ptr1 ;这段程序的输出是() A I lB o oCo loveD I love二、程序题1、计算字符串中子串出现的次数。要求用一个子函数subString实现,参数为指向字符串和要查找的子串的指针,返回次数。2、 加密程序由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。 算法明文中的字母转换成其后的第4个字母,例如,A变成Ea变成e,Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China转换成密文为G l m r e。要求在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。3、 字符替换。要求用函数replace将用户输入的字符串中的字符tT都替换为eE,并返回替换字符的个数。 4、 编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求利用字符串指针和指针数组实现。6、 定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。 7、 实现模拟彩票的程序设计随机产生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.D34.A35.D36.B37.D38.D39.C40.A41.E42.A43.D44.B 45.D46.C47.C