C语言程序设计26指针习题课课件_第1页
C语言程序设计26指针习题课课件_第2页
C语言程序设计26指针习题课课件_第3页
C语言程序设计26指针习题课课件_第4页
C语言程序设计26指针习题课课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1.假如p是一个指针变量,下列表达式中正确的是_____。

A*(p--)-=2B(++p)++C++(p++)D++p++2.假定有数组a[3][7],下列表达式中_____是错误的。

A*(*a+2)B*(*(a+1))C*(&a[0][0]+2)D*(a+2)[5]答案:A答案:

D练习题3.对表达式double(*f)(int,char*)的正确理解为_____。

Af是一个返回双精度指针的函数

Bf是一个需要两个参数的函数,该函数为double型

C该函数是一个返回double型的需要两个参数的双精度指针

Df是一个需要两个参数的返回double型的函数指针答案:

D4.设有inta,*p=&a;下列表达式中,不正确表达式是()A&(*p)B&(*a)C*(&p)D*(&a)5.已知inta[5][5],int(*pa)[5];正确赋值语句是()

Apa=a[1];Bpa=*(a+1);Cpa=&(a+1);Dpa=a+1;答案:B答案:

D6.假定有数组inta[4][4],下列表达式中_____不是a[2][3]的地址。

Aa[2]+3B*(a+2)+3C&a[2][3]D*(a[2]+3)答案:

D7.已知函数fp原型是:int

fp(double*(*)[10]),下列数组_____可作为参数:Adouble*arr[10];Bdouble*arr[5][10];Cdoublearr[5][10];Ddouble**arr[10];8.假定有inta[3][7],*pt,(*pa)[7];下列语句_____是错误的。

Apt=&a[0][0];Bpt=a[0];Cpa=a;Dpt=a;答案:B答案:

D9.对表达式char*(*pa[3])(char*)的正确理解为_____。

Apa是一个返指针的函数数组,需要一个字符指针参数

Bpa是一个需要字符指针参数的函数,该函数返回char*型

C该函数是一个返回char*型的需要一个char*参数指针数组

D由3个指针组成的数组,每个指针指向返回char*型,需要char*型参数的函数答案:

D10.假如有语句char*s1=“abc”;chars2[]=“xyz”;下列_____语句是错误的。

A*s1++;B*s2++;C*(s1+1);D*(s2+1);11.执行下列语句后,屏幕上输出的是_____。

#defineTESTchars[]=“xyz”,*p=s;#ifndefTESTwhile(*p++);while(--p>=s)printf(“%c”,*p);#elsewhile(*p)printf(“%c”,*p++);#endifAxyzBzyxC无输出D乱码答案:B答案:

A12.对表达式int*(*fp[5])(char*)的正确理解为_____。

Afp

是一个返指针的函数,需要一个字符型指针参数

Bfp

是一个需要字符型指针参数的函数,该函数返回int*型

Cfp是一个指向一个返回int*型的需要一个char*参数的函数指针

Dfp

是一个指针数组、数组的元素是指向返回int*,需要char*做参数的函数的指针答案:D13.已知函数fn原型是:char*fn(char*(*)(char),char*[]),且有char**v1;char*v2[];char*fp(char);正确的函数调用语句是()

Afn(fp(3),v2);Bfn(v1,v2);Cfn(fp,&v2);Dfn(fp,v1);答案:

D14.设有intarr[3][3],*p,(*pa)[3];表达式()的类型是int*型:AarrB&arr[0] C&arr[0][0]; Dpa答案:C改错1./*strcmp:return<0ifs<t,0ifs==t,>0ifs>t*/#include<string.h>int

strcmp(char*s,char*t){for(;*s==*t;s++,t++)if(*s=‘\0’)return0;return*(s–t);}答案:9./*strcmp:return<0ifs<t,0ifs==t,>0ifs>t*/#include<string.h>int

strcmp(char*s,char*t){for(;*s==*t;s++,t++)if(*s=‘\0’)return0;if(*s==0)return*(s–t);}return*s–*t;改错2.下列函数的功能是用冒泡法对6个字符串由小到大排序。voidbubblesort(int*a[6]){int

i,j;char*p;for(j=0;j<5;j++){

for(i=j+1;i<6;i++)

if(strcmp(*(a+j),a+i)>0){{p=*(a+j);*(a+j)=a+i;*(a+I)=p;}}}答案:voidbubblesort(char

*a[6]){int

i,j;char*p;for(j=0;j<5;j++){

for(i=j+1;i<6;i++)

if(strcmp(*(a+j),a+i)>0){

if(strcmp(*(a+j),*(a+i))>0){p=*(a+j);*(a+j)=a+i;*(a+i)=p;}*(a+j)=*(a+i);}}改错3.函数revs将一个字符串反转voidrevs(char*s){chart,*p=s;while(*p++);p--;

while(p-->s){t=*p;*p=*s;*s=t;}}答案:voidrevs(char*s){chart,*p=s;

while(*p++);p--;

while(p-->s){改为――>(--p>s)t=*p;*p=*s;*s=t;}}――>*s++=t;或*s=t;s++;改错4.下列程序的功能是将两个字符串链接起来#include<string.h>voidstrcat(char*s,char*t){for(;*s++;);s++;while(*s==*t)s++;t++;}答案:#include<string.h>voidstrcat(char*s,char*t){for(;*s++;);s++; 删除该行while(*s==*t) 将s++;t++;用{}扩起来

s++;t++;}改错5.函数doublefn(int*x)的功能是计算整型数组x中所有正数的平均值并返回。该数组用0作为结束标志。doublefn(int*x){intsum=0.0;intc=0; while(*x){ if(*x>0){sum+=*x;c++;} x++;}sum\=c;returnsum;}

答案:doublefn(int*x){intsum=0.0;intc=0;floatsum=0.0; while(*x){ if(*x>0){sum+=*x;c++;} x++;}sum\=c;returnsum;}sum/=c;分析下面程序的运行结果inta[3][3]={10,9,8,7,6,5,4,3,2};int*pa[3]={a[0],a[1],a[2]};int*p=a[0];main(){inti;for(i=0;i<3;i++)

printf("%d\t%d\t%d\n",*a[i],*(*(pa+i)),p[i]);}1010

10779448六.假定内存的初始分配如下图左方所示,执行下述语句后,分析内存分配情况,将结果写在右边内存示意图相应位置。short*pi,*pj,t;long*pl;double*pd;*pd+=(double)*pi;pi=&t;*pi=(short)*pl;pj=pi;*pj/=3;++pj;++*pj;

六.假定内存的初始分配如下图左方所示,执行下述语句后,分析内存分配情况,将结果写在右边内存示意图相应位置。short*pi,*pj,t;long*pl;double*pd;*pd+=(double)*pi;pi=&t;*pi=(short)*pl;pj=pi;*pj/=3;++pj;++*pj;

编写一个函数delodds。功能是从字符串s中删除所有ASCII码位奇数的字符,串中剩余字符形成一个新串放在t所指的数组中。函数原型如下:(10分)voiddelidds(char*s,chart[])voiddelodds(char*s,chart[]){

int

i,j=0,n; n=strlen(s);

for(i=0;i<n;i++)

if(s[i]%2==0)

t[j++]=s[i];

t[j]='\0';}六.分析下面程序的运行结果(10分)#include<stdio.h>voidmain(){chars1[]=“gawsie”;chars2[]=“b

温馨提示

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

评论

0/150

提交评论