广东技术师范学院实验报告学院:广东技术师范学院专业:软件工程班级:09软件成绩:姓名:林楚金学号:2009034743005组别:组员:实验地点:工业中心203实验日期:2010.6.29指导教师签名:实验6项目名称:指针的应用1、实验目的通过编程训练,熟练掌握指针的基本使用方法和应用技巧。2、实验内容题目1:将实验4中题目1的功能使用指针实现。输入两个整数分别赋给a和b,输出其中的较大数。#includestdio.hvoidmain(){inta,b;int*p1,*p2;p1=&a;p2=&b;scanf(%d%d,&a,&b);if(*p1*p2)printf(最大的数是:%d\n,*p1);elseprintf(最大的数是:%d\n,*p2);}题目2:从键盘输入3个整数分别赋给3个整型变量,用指针变量指向其中最大数。#includestdio.hint*q;intdiao(inta,intb){inty;if(ab){q=&a;y=a;}else{q=&b;y=b;预习情况操作情况考勤情况数据处理情况}returny;}voidmain(){inta,b,c;scanf(%d%d%d,&a,&b,&c);diao(diao(a,b),c);printf(%d\n,*q);}题目3:从键盘输入两个整型数,设计一个函数分别求它们的和与差。要求每个变量都使用指针访问。#includestdio.hvoiddiao(int*pointer1,int*pointer2){ints1,s2;s1=*pointer1;s2=*pointer2;*pointer1=s1+s2;*pointer2=s1-s2;}voidmain(){inta,b;int*pointer1,*pointer2;pointer1=&a;pointer2=&b;scanf(%d%d,&a,&b);diao(pointer1,pointer2);printf(两书之和:%d\n两数之差:%d\n,*pointer1,*pointer2);}题目4:从键盘输入圆半径,设计一个函数计算圆周长和圆面积,利用指针传递计算结果。#includestdio.h#includemath.h#defineT3.14voiddiao(float*pointer1,float*pointer2,float*pointer3){*pointer2=(*pointer1)*(*pointer1)*T;*pointer3=2*T*(*pointer1);}voidmain(){floata,b,c;float*pointer1,*pointer2,*pointer3;pointer1=&a;pointer2=&b;pointer3=&c;printf(请输入圆的半径:);scanf(%f,&a);diao(pointer1,pointer2,pointer3);printf(面积:%.2f周长:%.2f\n,*pointer2,*pointer3);}题目5:输入x、y和z值,编写函数,交换变量x、y和z中值,交换顺序是y的值传送给x,z的值传送给y,x的值传送给z。#includestdio.h#includemath.hvoiddiao(float*x,float*y,float*z){floatp=*x,q=*y,r=*z;*x=r;*y=p;*z=q;}voidmain(){floatx,y,z;scanf(%f%f%f,&x,&y,&z);diao(&x,&y,&z);printf(%.0f%.0f%.0f\n,x,y,z);}题目6:输入任意3个数,调用函数实现从小到大的排序。要求利用指针完成对变量的操作。#includestdio.h#includemath.hvoiddiao(int*a,int*b,int*c){intt;if(*a*b){t=*a;*a=*b,*b=t;}if(*a*c){t=*a;*a=*c,*c=t;}if(*b*c){t=*b;*b=*c,*c=t;}}voidmain(){inta,b,c;scanf(%d%d%d,&a,&b,&c);diao(&a,&b,&c);printf(从小到大:%d%d%d\n,a,b,c);}题目7:输入任意n个字母,调用函数将它们统一为小写字母,并按从大到小的顺序排序。#includestdio.h#includestring.hvoiddiao(chara[5]){inti,j;chart;for(i=0;i5;i++)if(a[i]='A'&&a[i]='Z')a[i]=a[i]+32;for(i=0;i4;i++)for(j=0;j4-i;j++)if(a[j]a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidmain(){chara[5];scanf(%s,a);diao(a);printf(%s,a);printf(\n);}题目8:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。#includestdio.h#includemath.hvoiddiao(inta[10],intn){inti,j,t=a[0],x;x=a[0];for(i=0;i10;i++)if(xa[i]){x=a[i];j=i;}a[0]=x;a[j]=t;}voiddiao2(inta[10],intn){inti,j,t=a[9],x;x=a[0];for(i=0;i10;i++)if(xa[i]){x=a[i];j=i;}a[9]=x;a[j]=t;}voidmain(){inti,a[10];for(i=0;i10;i++)scanf(%d,&a[i]);diao(a,10);diao2(a,10);for(i=0;i10;i++)printf(%d,a[i]);printf(\n);}题目9:将n个数按输入顺序的逆序排列,用函数实现。#includestdio.hvoiddiao(inta[11],intn){intt,i,j;for(i=0,j=10;i=n/2;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}}voidmain(){inti,a[11];for(i=0;i11;i++)scanf(%d,&a[i]);diao(a,11);for(i=0;i11;i++)printf(%d,a[i]);printf(\n);}