资源描述:
《湖北理工学院c语言实验报告实验六》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六指针实验课程名:高级语言程序设计专业班级:学号:姓名:实验时间:12.3-12.9实验地点:K4-202指导教师:冯珊一、实验目的和要求1.通过实验进一步掌握指针的概念,会定义和使用指针变量;2.能正确使用数组的指针和指向数组的指针变量;3.能正确使用字符串的指针和指向字符串的指针变量;4.能正确使用指向函数的指针变量;5.了解指向指针的指针的概念及其使用方法。二、实验内容1.上机验证以下程序的运行结果#includevoidmain(){inti,j,*pi,*pj;pi=&i;pj=&j;i=5;j=7;printf("%dt%dt%d
2、t%d",i,j,pi,pj);printf("%dt%dt%dt%d",&i,*&i,&j,*&j);}解答:(1)源代码:#includevoidmain(){inti,j,*pi,*pj;pi=&i;pj=&j;i=5;j=7;printf("%dt%dt%dt%d",i,j,pi,pj);printf("%dt%dt%dt%d",&i,*&i,&j,*&j);}(2)运行结果:(3)运行结果分析:用十进制输出ij的值或地址2.上机验证以下程序的运行结果#includevoidmain(){inti,a
3、[]={1,2,3},*p;p=a;/*将数组a首地址赋给指针p*/for(i=0;i<3;i++)printf("%d,%d,%d,%d",a[i],p[i],*(p+i),*(a+i));}解答:(1)源代码:#includevoidmain(){inti,a[]={1,2,3},*p;p=a;/*将数组a首地址赋给指针p*/for(i=0;i<3;i++)printf("%d,%d,%d,%d",a[i],p[i],*(p+i),*(a+i));}(2)运行结果(3)运行结果分析:用指针和下标不同形式表示输出3.调试下列程序,使之具有如下功能
4、:用指针法输入12个数,然后按每行4个数输出。写出调试过程。#includevoidmain(){intj,a[12],*p=a;for(j=0;j<12;j++)scanf("%d",p++);p=a;for(j=1;j<=12;j++){printf("%4d",*p++);if(j%4==0)printf("");}} 解答:(1)源代码:#includevoidmain(){intj,a[12],*p=a;for(j=0;j<12;j++)scanf("%d",p++);p=a;for(j=1;j<=12;j++){pri
5、ntf("%4d",*p++);if(j%4==0)printf("");}}(2)运行结果:(3)运行结果分析:指针法输入12个数,然后按每行4个数输出4.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴2个数的和, ⑵2个数交换值。#includevoidmain(){inta,b,c,*p=&c;voidsum(int,int,int*);voidswap(int*,int*);scanf("%d,%d",&a,&b);sum(a,b,p);swap(&a,&b);printf("sum=%d",c);print
6、f("a=%d,b=%d",a,b);}voidsum(inta,intb,int*c){*c=a+b;}voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}解答:(1)源代码:#includevoidmain(){inta,b,c,*p=&c;voidsum(int,int,int*);voidswap(int*,int*);scanf("%d,%d",&a,&b);sum(a,b,p);swap(&a,&b);printf("sum=%d",c);printf("a=%d,b=%d",a,b);}voidsum
7、(inta,intb,int*c){*c=a+b;}voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}(2)运行结果:(3)运行结果分析:引用sum和swap函数,,用指针得出结果5.下面的程序是用来从键盘输入10个整数,然后求出其中的最小值。填写空缺部分。#includeinttable[10];voidlookup(int*t,int*a,intn){intk;*a=t[0];for(k=1;k