实验8 指针及其应用.doc

上传人:bao****ty 文档编号:143985301 上传时间:2020-09-04 格式:DOC 页数:15 大小:64.50KB
返回 下载 相关 举报
实验8 指针及其应用.doc_第1页
第1页 / 共15页
实验8 指针及其应用.doc_第2页
第2页 / 共15页
实验8 指针及其应用.doc_第3页
第3页 / 共15页
实验8 指针及其应用.doc_第4页
第4页 / 共15页
实验8 指针及其应用.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《实验8 指针及其应用.doc》由会员分享,可在线阅读,更多相关《实验8 指针及其应用.doc(15页珍藏版)》请在金锄头文库上搜索。

1、实验八 指针及其应用【实验目的】1理解指针概念、求变量地址和指针寻址操作,掌握指针的各种运算方法。2掌握指针作为函数参数,实现函数与被调用函数之间数据传递的方法。3理解指针与数组的关系,掌握运用指针访问数组元素的方法。4理解指针与字符串的关系,掌握运用指针处理字符串的方法。【实验内容】一、读程序,运行程序,解释程序结果。程序1:#include main()int x,y,*pt1,*pt2,t1,t2,t3;x=8;y=4;pt1=&x;pt2=&y;t1=*pt1*pt2 -11;t2=3*-*pt2+*pt1+5;printf(Address of x =%un,pt1);printf(

2、Address of y =%un,pt2);printf(n);printf(x=%d,y=%dn,x,y);printf(t1=%d,t2=%dn,t1,t2);*pt1=*pt2+7;*pt2=*pt1-6;t3=*pt1*pt2+3;printf(n);printf(x=%d,y=%dn,x,y);printf(t3=%dn,t3);程序2:#include main()int *pt, tot=0,i;int x5=6,7,8,9,10;i=0;pt=x;printf(Element Value Addressnn);while(i5)printf( x%d %d %un,i,*pt

3、,pt);tot=tot+*pt;i+;pt+;printf(n Total = %dn,tot);printf(n &x0 = %un,&x0);printf(n &x = %un,&x);printf(n x = %un,x);printf(n pt = %un,pt);程序3:#include void swap1(int x,int y)int t;printf(swap1:n);printf(x的地址=%d,x的地址=%dn,&x,&y);printf(swap1交换后:x的值=%d,y的值=%dn,x,y);t=x;x=y;y=t;printf(swap1交换后:x的值=%d,y的

4、值=%dn,x,y);void swap2(int *x,int *y)int t;printf(swap2:n);printf(x的地址=%d,x的地址=%dn,x,y);printf(swap2交换前:x所指变量的值=%d,y所指变量的值=%dn,*x,*y);t=*x;*x=*y;*y=t;printf(swap2交换前:x所指变量的值=%d,y所指变量的值=%dn,*x,*y);void main()int a,b;scanf(%d%d,&a,&b);printf(n);printf(a的地址=%d,b的地址=%dn,&a,&b);printf(调用swap1前:a的值=%d,b的值=

5、%dn,a,b);swap1(a,b);printf(调用swap1后:a的值=%d,b的值=%dn,a,b);swap2(&a,&b);printf(调用swap2后:a的值=%d,b的值=%dn,a,b);二、 修改程序中的错误,并解释。对于教材中的例9.1,编写如下程序:程序1:#include char *a;char *b;char *c;char x,y,z;void assp(char *p, char pref);int main() char prefa, prefb, prefc;printf(please input A,B,Cs prefer:n);scanf(%c%c

6、%c, &prefa, &prefb, &prefc);getchar();assp(a, prefa);assp(b, prefb);assp(c, prefc);printf(please input female X,Y,Zs prefer:n);scanf(%c%c%c, &x, &y, &z);if (*a = a) printf(A is lucky!n);if (*b = b) printf(B is lucky!n);if (*c = c) printf(C is lucky!n);return 0;void assp(char *p, char pref)switch (pr

7、ef) case x: p=&x; break;case y: p=&y; break;case z: p=&z; break;程序2:#include char *a, *b, *c;char *x, *y, *z;char *tpre(char pref);int main() char prefa, prefb, prefc;printf(please input A,B,Cs prefer:n);scanf(%c%c%c, &prefa, &prefb, &prefc);getchar();a=tpre(prefa);b=tpre(prefb);c=tpre(prefc);printf

8、(please input female X,Y,Zs prefer:n);scanf(%c%c%c, &prefa, &prefb, &prefc);x=tpre(prefa);y=tpre(prefb);z=tpre(prefc);if (&a = *a) printf(A is lucky!n);if (&b = *b) printf(B is lucky!n);if (&c = *c) printf(C is lucky!n);return 0;char *tpre(char pref)switch (pref) case x: return &x;case y: return &y;

9、case z: return &z;case a: return &a;case b: return &b;case c: return &c;return null;三、 编程题:1. 编写程序,用指针实现读入一行数列,求数列的和,平均值,最大、最小值,并且打印它们。#includevoid max(int a,int n);void avg(int a,int n);void min(int a,int n);int sum(int a,int n);void main()int x10,n;int i=0;int *p;p=x;printf(please input a number:)

10、;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&xi);sum(x,n);max(x,n);min(x,n);avg(x,n);int sum(int a,int n)int t,temp=0;int sum=0;for(t=0;tn;t+)sum=sum+at;printf(sum=%d,sum);return sum;void max(int a,int n)int t;int *p;p=a;int max=a0;for(t=0;tmax)max=pt;printf(max=%d,max);void avg(int a,int n)int avg;avg=sum

11、(a,n)/n;printf(avg=%d,avg);void min(int a,int n)int t;int *p;p=a;int min=a0;for(t=0;tn;t+)if(ptmin)min=pt;printf(min=%d,min);2. 编写字符串插入函数char *strins(char *s1, char *s2),将字符串s2的内容插入到字符串s1之前,参数s1, s2为指向字符串的指针。函数执行后,返回值为结果字符串的首地址(即原s1),参数s1为结果字符串中原来子串s1的首地址(即返回值加字符串s2的长度),参数s2不变。例如:s1=”world”, s2=hell

12、o”, 结果字符串为”helloworld”,s1指向字符w。#include #include int strlength( char *s ) int i; for( i=0; *s!=0; i+, s+ ); return i;char *strins( char *s1, char *s2 ) int l1, l2; int i; char *p1, *p2; l1 = strlength( s1 ); l2 = strlength( s2 ); p1 = s1+l1-1; p2 = s1 + l1+l2; *p2 = 0; p2 -; for( i=0; il1; i+ ) *p2 = *p1; p2 -; p1 -; p1 = s1; p2 = s2; for( i=0; il2; i+ ) *p1 = *p2; p1 +; p2 +; return s1; void main() char s150; char *s2 = hello; strcpy( s1, world ); printf( %sn, strin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号