免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指针练习题一、选择题:题10.1若有定义:int x, *pb; 则以下正确的赋值表达式是( )a) pb=&x b) pb=x c) *pb=&x d) *pb=*x题10.2执行语句 int i=10, *p=&i; 后,下面描述错误的是()a)p的值为 b)p指向整型变量ic)*p表示变量i的值 d)p的值是变量i的地址题10.3. 执行语句int a = 5, b = 10 , c ; int *p1 = &a , *p2 = &b ; 后下面不正确的赋值语句是()a) *p2 = b; b) p1 = a;c) p2 = p1; d) c = *p1 * (*p2);题10.4若有语句int *point, a=4; point=&a; 下面均代表地址的一组选项是_. a) a, point, *&a b) &*a, &a, *pointc) *&point, *point, &a d) &a, &*point , point 题10.5若有说明int *p, m=5, n; 以下正确的程序段的是_a) p=&n; b) p=&n;scanf(%d,&p); scanf(%d,*p); c) scanf(%d,&n); d) p=&n;*p=n; *p=m;题10.6、以下程序的输出结果是( )A、5,2,3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7#include void sub (int x, int y, int *z) *z=y-x; int main() int a, b, c;sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf(%d,%d,%dn,a,b,c); return 0;题10.7、以下程序的输出结果是( )A、4 B、6 C、8 D、10#include stdio.hint main( ) int k=2, m=4, n=6;int *pk=&k, *pm=&m, *p; *(p=&n)=*pk*(*pm); printf(%dn, n); return 0;提示:*(p=&n)=*pk*(*pm);语句可拆分成:p=&n; *p=(*pk)*(*pm);题10.8、以下程序的输出结果是( )A、4,3 B、2,3 C、3,4 D、3,2#include stdio.hvoid fun(float *a, float *b) float w; *a=*a+*a; w=*a; *a=*b; *b=w;int main() float x=2.0,y=3.0; float *px=&x,*py=&y; fun(px,py); printf(%2.0f,%2.0fn,x,y); getch(); return 0;题10.9、以下程序的输出结果是( )A、9.000000 B、1.500000 C、8.000000 D、10.500000#include Stdio.h#include Conio.hvoid sub(float x,float *y,float *z) *y=*y-1.0; *z=*z+x;int main() float a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b; sub(b-a,pa,pb); printf(%fn,a); getch(); return 0;题10.B、void swap(int *, int *);int main() int a=10,b=20; swap(&a,&b); printf(%d,%dn,a,b); return 0;void swap(int *p,int *q) int t; t=*p; *p=*q; *q=t; A、void swap(int *, int *);int main() int a=10,b=20;swap(&a,&b);printf(%d,%dn,a,b); return 0;void swap(int *p, int *q) int *t, a; t=&a; *t=*p; *p=*q; *q=*t; C、void swap(int *,int *);int main()int *a=0,*b=0; /*未指向任何变量*/*a=10;*b=20;/*指针未指向任何变量前,不能随意赋值*/ swap(a,b); printf(%d,%dn,*a,*b); return 0;void swap(int *p,int *q) int t; t=*p; *p=*q; *q=t;D、void swap(int *,int *);int main() int a=10,b=20,*x=0,*y=0; *x=&a,*y=&b; swap(x,y); printf(%d,%dn,a,b); return 0;void swap(int *p,int *q) int t; t=*p; *p=*q; *q=t;10、以下4个程序中不能对两个整型值进行交换的是( )题10.11、若有定义char s1 = “student”, s28, *s3, *s4= “student”; 则错误的是 。A. strcpy(s1, “hello1”); B. strcpy(s2, “hello2”); C. strcpy(s3, “hello3”); D. strcpy(s4, “hello4”);题10.12、若有定义和语句char *a, b5; a=(char *)malloc(80); 则正确的是 A. scanf( “%s”,*a); B. b=a; C. a=“good”; D. b= “good”;提示:scanf函数需要地址。数组名是常量。题10.13 下面程序的运行结果是 #includess(char *s) char *p=s; while( *p) p+; return (p-s);main( ) char *a= “abcde”;int i;i=ss(a);printf(“%dn”,i);A. 7 B. 6 C. 5 D. 8题10.14 下面程序的输出结果是86main( ) int a5=2,4,6,8,10, *p,*k; p=a; k=&p; printf(“%d,”, *(p+) ); printf(“%dn”, *k); A. 4,4 B.2,2 C. 2,4 D.无答案题10.15 若有定义int a34, (*p)4=a; 要引用a23用91;A. *(p+1) B. *(p+2+3) C. *(*(p+2)+3) D. *(*(p+2+3)题10.16 若有定义语句int t23, *p3,k;for(k=0;k2;k+) pk=&tk0; 则*(*(p+1)+2) 表示的数组元素是;A. t20 B. t22 C. t12 D. t21题10.17下程序的输出结果:main() static int a3=1,2,3,4,5,6,7,8;123450678a0a1a2appapp int *p=a0;int *pa3=a0,a1,a2;int *pp=pa; printf( %dn, *(a0+2); /*输出1*/ printf( %dn, *(*(a+1)+2); /*输出2*/printf( %dn, *(pa1+4); /*输出3*/printf( %dn, p4); /*输出4*/printf( %dn, pp20); /*输出5*/1 A)1 B) 2 C) 3 D) 42 A)5 B)4 C) 0 D) 63 A)5 B)6 C)7 D)84 A)2 B)4 C)5 D)65 A)4 B)5 C)6 D)0题10.18、下面程序的输出结果为。f(int *s, int p23) *s=p11; main( ) int a23=1,3,5,7,9,11, *p; p=(int *) malloc(sizeof(int); f(&p, a); printf(“%dn”, *p);A)1 B)7 C)9 D)11题10.19 在以下定义中,标识符p-int (*p)3;A)定义不合法 B)是一个指针数组名,每个元素是一个指向整数变量的指针C)是一个指针,它指向一个具有三个元素的一维数组D)是一个指向整型变量的指针题10.20 以下程序输出两个整数中较大的数,两个数由键盘输入。请根据需填空的项目顺序从对应的选择项顺序组中选择正确内容填入程序的横线内,使其能完成这一操作。#include#includevoid main() int *p1,*p2, a,b; p1=(int *)malloc(sizeof(int);p2= 1 malloc(sizeof(int); scanf(“%d,%d”, 2 );if(*p1*p1) *p1=*p2;printf( “max=%dn”, 3 );free(p1); free(p2);1 A)int B) int * C) (int) D)(int *)2 A)*p1, *p2 B)p1,p2 C)&p1,&p2 D)&a, &b3 A)*p1 B)*p2 C)p1 D)p2题10.21、int (*f)( ); 的含义是( )A)函数f( )返回一个指向int型数据的指针B) 函数f( )为int型C) f为指向函数的指针变量,该函数返回一个int型值D) 函数f( )为int指针二、填空题:题10.22、以下程序的输出结果是( )#include stdio.h#include conio.hint main(void) int *var,ab; ab=100; var=&ab; ab=*var+10; printf(%dn,*var); getch(); return 0;题10.23、以下程序的输出结果是()#include stdio.h#include conio.hvoid ast(int x, int y, int *cp, int *dp) *cp=x+y; *dp=x-y; int main(void) int a,b,c,d; a=4; b=3; ast(a, b, &c,&d); printf(%d,%dn,c,d); getch( ); return 0;题10.24、若有定义 char ch;(1)使指针p可以指向变量ch的定义语句是( ).(2)使指针p可以指向变量ch的赋值语句是( ).(3)通过指针p给变量ch读入字符的scanf函数调用语句是().(4)通过指针p给变量ch赋字符的语句是().(5)通过指针p输出ch中字符的语句是( ).题10.25 程序运行结果是。#includemain() int f( );int (*i)( ); /*i为指向无参的返回值为int类型函数的指针*/int a=100, b=500, c;i=f; /*i指向函数f的首地址*/c=(*i)(b,a); /*利用指针变量调用函数*/printf(“%d-%d=%dn”, b,a,c);三、编程题:题10.26、编写一个函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传送回调用函数。#include stdio.h#include conio.hvoid f(float x, float y, float *ps, float *pd) return;int main(void) float x, y, sum, diff; printf(input x,y=?); scanf(%f,%f, &x, &y); f(x, y, &sum, &diff); printf(%f+%f=%f %f-%f=%f,x,y,sum,x,y,diff); getch();return 0;评析:此题要求编写的函数需要返回两个结果(和值和差值),而函数的返回值只能返回一个值。因此使用指针作为函数参数,题目要求编写的函数没有返回值,即类型为void。注意实参与形参的对应关系。题10.27、编写一个函数,对传送过来的三个数求出最大和最小数,并通过形参传送回调用函数。#include stdio.h#include conio.hvoid f(int a, int b, int c, int *pmax, int *pmin) return;int main(void) int a,b,c,max,min; printf(input a,b,c=?); scanf(%d,%d,%d,&a,&b,&c); f(a,b,c, &max, &min); printf(max=%d min=%d,max, min); getch(); return 0; 评析:此题与上题类似,关键在于使用指向整型变量的指针作为函数的参数,这样即可以在一个函数中同时解决多个问题。注意:当使用指针作为函数的参数时,在函数中应使用间接引用符*才能改变指针所指向的变量的值。注意实参与形参的对应关系。参考解答:题10.1A 题10.2A 题10.3B 题10.4D 题10.5D题10.6B 题10.7C 题10.8C 题10.9B 题10.10.CD题10.11C 题10.12C 题10.13C 题10.14C 题10.15C题10.16C 题10.17CCCCC 题10.18C 题10.19C 题10.20.DBA题10.21. C题10.22110 题10.237,1题10.24char *p=&chchar *p; p=&ch;p=&ch; scanf(%c, p);*p=+ 或其它字符常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 26324-2025羟基亚乙基二膦酸
- 2020-2025年教师资格之中学教育学教育心理学能力提升试卷A卷附答案
- 大脑中动脉狭窄的护理
- 雨课堂学堂在线学堂云《编译技术(大连理大 )》单元测试考核答案
- 2025湖口县公开选调殡仪馆事业编制工作人员5人备考题库附答案解析
- 北京医院面向社会招聘2人历年真题汇编及答案解析(夺冠)
- 关于公开考调政协青川县委员会宣教中心工作人员备考题库含答案解析(夺冠)
- 仪陇县2025年公开考核招聘卫生事业单位工作人员(24人)历年真题汇编带答案解析
- 南昌市产投集团2025年下半年公开招聘历年真题汇编及答案解析(夺冠)
- 2026年质量员之土建质量专业管理实务考试题库200道及参考答案【考试直接用】
- 米-伊林《十万个为什么》阅读练习+答案
- 服装流行与设计-知到答案、智慧树答案
- 教师校园网络安全培训
- 2024年全国社会保障基金理事会招聘18人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 数形结合思想在小学数学高段教学中的融合 论文
- 弘扬宪法精神建设法制校园课件
- 如何做设备二级保养
- 花卉创业培训课件
- 碳捕集 利用和封存技术发展现状及应用展望
- 康复心理学题库(90道)
- 拟投入本项目的主要施工设备表
评论
0/150
提交评论