资源描述:
《C语言--程序设计导论 教学课件 作者 崔雅娟习题答案习题2.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章指针7.1简述指针变量基类型对指针操作的限制。(略)7.2结合本章后面习题实例,总结用指针操作数组的要点。数组名在操作中起什么作用?(略)7.3总结利用函数指针调用函数的步骤,C语言的这种机制给程序设计带来那些好处?(略)7.4比较数组名和指针作函数参数有什么不同。(略)7.5解释下面指针说明的含义:(1)int*p;(2)int*p[5];(3)int(*p)[5];(4)int*fp();(5)int(*fp)();(6)int*(*fp)();(7)void*fp();(8)int**p;解:(1)int*p;p是整型指针。(2
2、)int*p[5];p是5个元素的数组,数组元素是整型指针,(3)int(*p)[5];p是指针,指向数组,数组有5个整型元素。(4)int*fp();fp是函数,函数返回整型指针。(5)int(*fp)();fp是指针,指向返回类型为整型的函数。(6)int*(*fp)();fp是指针,指向返回类型为整型指针的函数。(7)void*fp();fp是函数,函数返回通用指针。(8)int**p;p是指针,指向一个整型指针。7.6阅读程序,给出运行结果。(1)#includemain(){inta[3][4]={1,2,3,4
3、,5,6,7,8,9,10,11,12};inti,j,*p=[&a[0][0];for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%4d”,*p++);printf(“”);}}解:123456789101112(2)#includemain(){inta=10,*p,**pp;p=&a;pp=&p;a++;printf(“%d,%d,%d”,a,*p,**pp);}解:11,11,11(3)#includemain(){char*str=”zyxwvutsrqp
4、onmlkjihgfedcba”;while(*str++!=’f’);printf(“%s”,str);}解:edcba(4)#includemain(){inti,a[7]={1,2,3,4,5,6,7};for(i=0;i<7;i+=2)printf(“%4d“,*(a+i));}解:1,3,5,77.7利用指针完成下列函数:(1)从键盘读入数组元素。解:设整型数组,参考程序如下:#include#defineN10voidinput(int*p,intn){inti;for(i=0;i5、++)scanf("%d",p++);}main(){inti,n,a[N];printf("EnterNumber:");scanf("%d",&n);input(a,n);for(i=0;iintmax(int*p,intn){inti,j,mx;mx=*p;for(i=1;imx)mx=*(p+i);returnmx;}main(){inta
6、[8]={23,4,6,12,33,55,2,45};printf("maxis%d",max(a,8));}(3)字符串拷贝。解:参考程序如下:#includechar*strcp(char*s1,char*s2){char*p;for(p=s1;*s2!=' ';s2++,s1++)*p++=*s2;*p=' ';returns1;}main(){chars1[80],s2[80];printf("Enterstring:");gets(s2);strcp(s1,s2);
printf("copystri
7、ngresultis:%s",s1);}7.8设计一个使用指针的函数,交换数组a和数组b的对应元素。解:参考程序如下:#include#includevoidchange(int*a,int*b,intn){inti,t;for(i=0;i8、ChangeBefore:");printf("Arraya:");for(i=0;i<10;i++)printf("%4d",a[i]);printf("");prin