c语言china转密码指针,C语言指针习题附答案.doc

C语言指针习题附答案.doc

一、一、选择题选择题 1. 变量的指针,其含义是指该变量的_. a值 b地址 c名 d一个标志 2若有语句 int *point,a4;和 point下面均代表地址的一组选项是_. aa,point,*int *p,m5,n;以下正确的程序段的是. ap bp scanf“d“, scanf“d“,*p; cscanf“d“, dp *pn; *pm; 4. 以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是 . main int *p,*q,a,b; p printf“ 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 d26 6.若有说明long *p,a;则不能通过 scanf 语句正确给输入项读入数据的程序段是 A *p rp;pq;qr; printf“d,d,d,dn“,m,n,*p,*q; 程序运行后的输出结果是 A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2 8. 有以下程序 main int a1, b3, c5; int *p1 *p *p1**p2; printf“dn“,c; 执行后的输出结果是 A)1 B)2 C)3 D)4 9. 有以下程序 main int a,k4,m4,*p1 ap1 printf“dn“,a; 程序运行后的输出结果是() A)4 B)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,*p bp5; b 中的值是() A5 B6 C8 D9 12.若有以下定义,则对 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;a int main 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,10 C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,20 16.设有如下定义 int arr6,7,8,9,10; int *ptr; ptrarr; *ptr22; printf “d,dn“,*ptr,*ptr2; 则程序段的输出结果为 A8,10 B6,8 C7,9 D6,10 17.若有定义int a2,4,6,8,10,12,*pa;则*p1的值是_4_. *a5的值是 _12. 18.若有以下说明和语句,int c45,*p5;pc;能正确引用 c 数组元素的是 . A p1 B *p3 C *p13 D *p02 19 若有定义 int a23,则对 a 数组的第 i 行 j 列元素地址的正确引用为. a*aij bai c*aj daij 20 若有以下定义int a232,4,6,8,10,12;则 a10的值是8_. **a10 的值是8. 21.有以下定义 char a10,*ba; 不能给数组 a 输入字符串的语句是() Agetsa Bgetsa0 Cgets Dgetsb; 22.下面程序段的运行结果是_. char *s“abcde“; s2;printf“d“,s; acde b字符c c字符c的地址 d无确定的输出结果 23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是() A char s10“abcdefg“; B char t“abcdefg“,*st; C char s10;s“abcdefg“; D char s10;strcpys,“abcdefg“; 24.设已有定义 char *st“how are you“; 下列程序段中正确的是() A char a11, *p; strcpypa1, B char a11; strcpya, st; C char a11; strcpya, st; D char a, *p; strcpyp 25.有以下程序 main char a“programming“,b“language“; char *p1,*p2; int i; p1a;p2b; fori0;i include main char *s1“AbDeG“; char *s2“AbdEg“; s12;s22; printf“dn“,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;i2 i3-j; sbij; return s; main int a441,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf“dn“,fa ; 执行后的输出结果是 A 12 B 11 C 18 D 16 33.若有以下函数首部 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 sum printf“dn“,aa0; 执行后的输出结果是() A4 B3 C2 D1 35.下段代码的运行结果是 int main char a; char *str strcpystr,“hello“; printfstr; return 0; Ahello Bnull Ch D发生异常 36.下段程序的运行结果是 void main char *p,*q; char str“Hello,Worldn“; q p str; p; printq; printp; void printchar *s printf“s”,s; AH e BHello,World ello,World CHello,World Hello,World Dello,World ell,World 37.有以下程序 void funchar *c,int d *c*c1; dd1; printf“c,c,“,*c,d; void main char aA,ba 程序运行后的输出结果是。 A B,a,B,a B a,B,a,B C A,b,A,b D b,B,A,b 38、下面选项属于函数指针的是 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* fun int s31,3,4 return s; int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return 0; Bint; return s; int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return 0; Cint* fun int s31,3,4 return int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return 0; Dint; return int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return 0; 41、下列选项中声明了一个指针数组的是 Aint *p2; Bint *p2; Ctypedef int* intPtr; intPtr p2; DA 和 B EA 和 C FB 和 C 42、下面代码能通过编译的是 Aint main int a31,2,3; int *b3 int p b; return 0; Bint main int a31,2,3; int *b3a1,a2,a3; int p b; return 0; Cint main int a31,2,3; int *b3 int *p b; return 0; Dint main int a31,2,3; int *b3 int *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)字符串 PASCAL C language2元素的值,它是字符串 PASCAL 的首地址 D)格式说明不正确,无法得到确定的输出 47、若有以下程序 void main char *a3 “I“,“love“,“China“; char ptr a; printf“c s“ , **a11, *ptr1 ; 这段程序的输出是() A I l B o o Co love D 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. B 2. D 3. D 4. B 5. D 6. A 7. B 8. C 9. C 10. A 11. D 12. D 13. A 14. B 15. A 16. D 17. 4,12 18. D 19. D 20. 8,8 21. B 22. C 23. C 24. A 25. D 26. B 27. C 28. D 29. B 30. C 31. C 32. D 33. D 34. A 35. D 36. B 37. D 38. D 39. C 40. A 41. E 42. A 43. D 44. B 45. D 46. C 47. C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值