




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言指针练习题及答案一、选择题.变量的指针,其含义是指该变量的.a)值b)地址c)名d)一个标志.若有语句int*point,a=4;ffpoint=&a;下面均代表地址的一组选项是a)a,point,*&ac)*&point,*point,&ab)&*a,&a,*pointd)&a,&*point,pointa)a,point,*&ac)*&point,*point,&ab)&*a,&a,*pointd)&a,&*point,point.若有说明;int*p,m=5,n;以下正确的程序段的是,a)p=&n;scanf("%d",&p);c)scanf("%d",&n);a)p=&n;scanf("%d",&p);c)scanf("%d",&n);*p=n;b)p=&n;scanf("%d",*p);d)p=&n;*p=m;.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是main(){int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量.已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是.voidprint_value(int*x){printf(“%d\n”,++*x);}a)23b)24c)25d)26.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是*p=&a;scanf("%ld",p);p=(long*)malloc(8);scanf("%ld",p);scanf("%ld",p=&a);scanf("%ld",&a);有以下程序#include<stdio.h>main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是
B)1,2,2,1D)B)1,2,2,1D)2,1,1,2D)4C)2,1,2,1有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1B)2C)3有以下程序main(){inta,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是()A)4B)1C)0D)运行时出错,无定值.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是()A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价.有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()A)5B)6C)8D)9.若有以下定义,则对a数组元素的正确引用是.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2).若有以下定义,则p+5表示.inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值.设已有定义:inta[10]={15,12,7,31,47,20,16,28,13,19},*p;下列语句中正确的是()for(p=a;a<(p+10);a++);for(p=a;p<(a+10);p++);C)for(p=a,a=a+10;p<a;p++);D)for(p=a;a<p+10;++a);.有以下程序段#include<stdio.h>intmain(){intx[]={10,20,30};int*px=x;printf("%d,",++*px);printf("%d,",*px);px=x;
printf("%d,",(*px)++);pxprintf("%d,",(*px)++);px=x;printf("%d,",*px++);px=x;printf("%d,",*++px);return0;}程序运行后的输出结果是(A)11,11,11,12,12,20,20,20C)11,11,11,12,12,13,20,20printf("%d,",*px);printf("%d\n",*px);)B)20,10,11,10,11,10,11,10D)20,10,11,20,11,12,20,20.设有如下定义则程序段的输出结果为intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;printf("%d,%d\n",*ptr,*(ptr+2));A)8,10B)6,8C)7,9D)6,10.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是_4_*(a+5)的值是__12__.18若有以下说明和语句,ntc[4][5],(*p)[5喃P正确引用c数组元素的是―A)p+1B)*(p+3)C)*(p+1)+3D)*(p[0]+2)).若有定义:inta[2][3],则对a数组的第i行j列元素地址的正确引用为.a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j.若有以下定义:inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是_8_.*(*(a+1)+0)的值是__8..有以下定义chara[10],*b=a;不能给数组a输入字符串的语句是()A)gets(a)B)gets(a[0])C)gets(&a[0]);D)gets(b);.下面程序段的运行结果是.char*s="abcde";s+=2;printf("%d",s);a)cdeb)字符'c'c)字符'c'的地址d)无确定的输出结果.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()A)chars[10]="abcdefg";B)chart[]="abcdefg",*s=t;C)chars[10];s="abcdefg";D)chars[10];strcpy(s,"abcdefg");.设已有定义:char*st="howareyou";下列程序段中正确的是()chara[11],*p;strcpy(p=a+1,&st[4]);chara[11];strcpy(++a,st);chara[11];strcpy(a,st);chara[],*p;strcpy(p=&a[1],st+2);.有以下程序输出结果是()main(){chara[]="programming",b[]="language";char*p1,*p2;
inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}A)gmB)rgC)orD)gaA)gmB)rgC)orD)ga26.设pl和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是26.设pl和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是.a)c=*p1+*p2;b)p2=cc)p1=p227.以下正确的程序段是.a)charstr[20];scanf("%s",&str);c)charstr[20];scanf("%s",&str[2]);d)c=*p1*(*p2);b)char*p;scanf("%s",p);d)charstr[20],*p=str;scanf("%s",p[2]);28.若有说明语句则以下不正确的叙述是.chara[]="Itismine";char*p="Itismine";a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是___#include<stdio.h>#include<string.h>main(){char*s1="AbDeG";char*s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数b)负数c)零d)不确定的值30.有以下程序运行后的输出结果是。voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i=0,*p,*q;p=a;q=&a[7];while(*p!=*q&&i<8){f(p,q);p++;q--;i++;}for(i=0;i<8;i++)printf("%d,",a[i]);}A)8,2,3,4,5,6,7,1,}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的地址值.有以下程序intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}执行后的输出结果是A)12B)11C)18D)16.若有以下函数首部则下面针对此函数的函数声明语句中正确的是intfun(doublex[10],int*n)A)intC)intfun(doublex,int*n);fun(double*x,intn);A)intC)intfun(doublex,int*n);fun(double*x,intn);D)intfun(double*,int*);.有以下程序执行后的输出结果是()voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}A)4B)3C)2D)1.下段代码的运行结果是:intmain(){chara;char*str=&a;strcpy(str,"hello");puts(str);
return0;}A)helloB)nullC)hD)发生异常.下段程序的运行结果是voidmain(){char*p,*q;charstr[]="Hello,World\n";q=p=str;p++;print(q);print(p);}voidprint(char*s){printf(“%s”,s);}ello,ello,WorldHello,Worldell,WorldB)Hello,WorldC)Hello,WorldD)ello,World37.有以下程序voidfun(char*c,intd)*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}voidmain(){chara='A',b='a';fun(&b,a);printf("%c,%c\n",a,b);}程序运行后的输出结果是___。A)B,a,B,aB)a,B,a,BC)A,b,A,bD)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()ints[3]={1,3,4};;returns;}intmain(){int*result;result=fun();for(inti=0;i<3;i++)printf("%d\n",result[i]);return0;}B)int&fun(){ints[3]={1,3,4};;returns;}intmain(){int*result;result=fun();for(inti=0;i<3;i++)printf("%d\n",result[i]);return0;}C)int*fun(){ints[3]={1,3,4};;return&s;}intmain(){int*result;result=fun();for(inti=0;i<3;i++)printf("%d\n",result[i]);return0;}D)int&fun(){ints[3]={1,3,4};;return&s;}intmain()
int*result;result=fun();for(inti=0;i<3;i++)printf("%d\n",result[i]);return0;}41、下列选项中声明了一个指针数组的是:A)int*p[2];B)int(*p)[2];C)typedefint*intPtr;intPtrp[2];D)A和BE)A和CF)B和C42、下面代码能通过编译的是:A)intmain(){inta[3]={1,2,3};int*b[3]={&a[1],&a[2],&a[3]};int**p=b;return0;}B)intmain(){inta[3]={1,2,3};int*b[3]={a[1],a[2],a[3]};int**p=b;return0;}C)intmain(){inta[3]={1,2,3};int*b[3]={&a[1],&a[2],&a[3]};int*p=b;return0;}D)intmain(){inta[3]={1,2,3};int*b[3]={&a[1],&a[2],&a[3]};int*p=&b;return0;}int(*p)[5]43、对于语句int*pa[5];下列描述中正确的是___.int(*p)[5]pa是一个指向数组的指针,所指向的数组是5个int型元素pa是一个指向某数组中第5个元素的指针,该元素是int型变量pa[5]表示某个元素的第5个元素的值pa是一个具有5个元素的指针数组,每个元素是一个int型指针44、若有以下定义,且0Wi<4,则不正确的赋值语句是.intb[4][6],*p,*q[4];A)q[i]=b[i];B)p=b;C)p=b[i]D)q[i]=&b[0][0];45、若要对a进行++运算,则a应具有下面说明—.A)inta[3][2];B)char*a[]={“12”,”ab”};C)char(*a)[3];D)intb[10],*a=b;46、若有以下说明语句:char*language[]={“FORTRAN”,”BASIC”,’’PASCAL”,’’JAVA”,”C”};char**q;q=language+2;则语句printf(%o\n,*q)输出的是.A)language[2]元素的地址;B)字符串PASCALlanguage⑵元素的值,它是字符串PASCAL的首地址D)格式说明不正确,无法得到确定的输出47、若有以下程序:voidmain(){char*a[3]={
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年蚌埠市城市投资控股集团有限公司社会招聘11人笔试参考题库附带答案详解
- 诊所前台服务流程
- 备战2025年高考化学纠错笔记系列专题08常见无机物及其应用含解析
- 投资学模拟试题含答案
- 2025国网内蒙古东部电力有限公司高校毕业生招聘约638人(第一批)笔试参考题库附带答案详解
- 认知知觉障碍的作业治疗(作业治疗技术课件)
- 压力治疗-压力垫和支架制作(作业治疗技术)
- 2025年经济与商务咨询服务项目合作计划书
- 2025届湖北省云学名校联盟高三下学期2月联考地理试题及答案
- 制定我国动物福利法的思考
- 心衰4级病人护理常规
- 标准化法及相关知识课件
- 《合同法违约责任》课件
- 2024建筑消防设施维护保养技术规范
- 医院装修改造项目投标方案(技术标)
- 新视野大学英语(第四版)读写教程1(思政智慧版)课件 Unit 6 Winning is not everything Section B
- 【历年真题】2018年4月00040法学概论自考试卷(含答案)
- 个人项目投资合作协议书范本
- 新媒体营销全套教学教案
- 厨房设备备品备件、易损件明细
- 工厂组织架构图
评论
0/150
提交评论