二级C指针练习题_第1页
二级C指针练习题_第2页
二级C指针练习题_第3页
二级C指针练习题_第4页
二级C指针练习题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、指针练习题1对于基类型相同的两个指针变量,不能进行的运算是_。A) B)= C)+ D)-正确答案:C(知识点:指针变量的运算)试题分析:基类型相同的两个指针变量可以进行比较、赋值及相减运算。2若有说明int n=2,*p=&n,*q=p;,则以下非法的赋值语句为_。A)p=q B)*p=*q C)n=*q D)p=n正确答案:D(知识点:指针与指针变量的概念、指针变量的运算)试题分析:赋值运算必须遵循类型相同或类型兼容原则。 3以下程序的输出结果是_。main() char p=abcdefgh,r; long *q; q=(long*)p; q+; r=(char*)q; printf(%

2、sn,r);正确答案:efgh(知识点:指针变量的概念、用指针处理字符串)4设有以下程序:main() int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1= =&m; b=(*p1)/(*p2)+7; printf(a=%dn,a); printf(b=%dn,b);执行该程序后,a的值为_,b的值为_。正确答案:0 7(知识点:指针与指针变量的概念、指针变量的运算)试题分析:a的值是两个指针值p1与&m进行比较运算=的结果,p1的值为&k,不等于&m,a的值为0;b的值为(*p1)/(*p2)+7,即k/m+7,为7。5若有以下定义和语句double r=99,*p=&r

3、;*p=r;则以下正确的叙述是_。A)以上两处的*p含义相同,都说明给指针变量p赋值B)在“double r=99,*p=&r; ”中,把r的地址赋值给p所指向的存储单元C)语句“*p=r;”把变量r的值赋给指针变量pD)语句“*p=r;”把变量r的值放回r 中正确答案:D(知识点:指针与指针变量的概念)6有以下程序:main() int a33,*p,i; p=&a00; for(i=0;i9;i+) pi=i+1; printf(%dn,a12);程序运行后的输出结果是_。正确答案:6(知识点:二维数组元素的地址、指向二维数组元素的指针变量 7下列程序的输出结果是_。main() char

4、 a10=9,8,7,6,5,4,3,2,1,0,*p=a+5; printf(%dn,*-p);正确答案:5(知识点:一维数组的地址、指向一维数组的指针变量)8有以下程序:main() int a3=1,2,3,4,5,0,(*pa)3,i; pa=a; for(i=0;i3;i+) if(i2) pa1i=pa1i-1; else pa1i=1; printf(%dn,a01+a11+a12);执行后输出结果是_。正确答案:7(知识点:二维数组的地址、指向二维数组的指针变量、数组指针)试题分析:程序中定义了一个数组指针pa指向二维数组a,paij即为aij。 9以下程序通过函数指针p调用函

5、数fun,请在填空栏内写出定义变量p的语句。void fun(int *x, int *y)main() int a=10,b=20; _; p=fun; p(&a,&b); .正确答案:void (*p)()(知识点:函数指针)试题分析:函数指针的定义形式如下:类型标识符 (*标识符)( );10有以下程序段:main() int a=5,*b,*c; c=&b;b=&a;程序执行c=&b;b=&a;语句后,表达式*c的值是_。正确答案:变量a的值(知识点:指向指针的指针)试题分析:程序中定义了指向指针的指针变量c来指向指针变量b,指针变量b再指向整型变量a,*c是取其指向存储单元所指向的存

6、储单元的值,即变量a的值。11假定下列程序的可执行文件名为prg.exe, 则在该程序所在的子目录下输入命令行:prg hello good后,程序的输出结果是_。main(int argc,char *argv) int i; if(argc=0) return ; for(i=1;iargc;i+) printf(%c,*argvi);正确答案:hg(知识点:命令行参数、指针数组)12不合法的main函数命令行参数形式是_。A)main(int a ,char *c )B)main(int arc ,char *arc)C)main(int argc ,char *argv)D)main(

7、int argv ,char *argc )正确答案:C(知识点:命令行参数)(1) 有以下程序void f( int y,int *x)y=y+*x; *x=*x+y;main( ) int x=2,y=4; f(y,&x); printf(“%d %dn”,x,y);执行后输出的结果是【1】 。 (2) 下面程序的运行结果是: 2 。void swap(int *a,int *b) int *t;t=a; a=b; b=t;main() int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf(“%d%dn”,*p,*q); (3) 设有以下程序:main() in

8、t a, b, k=4, m=6, *p1=&k, *p2=&m;a=pl=&m;b=(*p1)(*p2)+7;printf(“a=%dn”,a);printf(“b=%dn”,b);执行该程序后,a的值为【3】 ,b的值为【4】 。 (4) 下列程序的输出结果是 【5】 。void fun(int *n) while( (*n)-); printf(“%d”,+(*n);main() int a=100; fun(&a);(5) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。void func(int x,int y, 6 z) *z=x+y; (6) 函数 void fun(f

9、loat *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。 void fun( float *sn, int n) float s=0.0, w, f=-1.0; int i=0; for(i=0; i=n; i+) f= 7 * f; w=f/(2*i+1); s+=w; 8 =s; (7) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 exchange(int *x, int *y) int t; t=*y; *y= 【9】 ; *x= 【10】 ; (8) 下面函数要求用来求出两个整数之和,并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论