按关键词阅读: 及其 指针 实验 应用
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(ivoid swap1(int x,int y)int 。
3、 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的值=%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 。
4、所指变量的值=%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的值=%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;
c 。
5、har 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%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。
6、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 (pref) 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(ple 。
7、ase input A,B,Cs prefer:n);
scanf(%c%c%c, &prefa, &prefb, &prefc);
getchar();
a=tpre(prefa);
b=tpre(prefb);
c=tpre(prefc);
printf(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。
8、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;
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 。
9、 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:);
scanf(%d,&n);
for(i=0;
imax)max=pt;
printf(max=%d,max);
void avg(int a,int n)int avg;
avg=sum(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;
t#in 。
10、clude 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;
i#includechar *strins(char *s1,char *s2);
#define maxlen 80void main()c 。
11、har *p1,*p2;
if(p1=(char *)malloc(maxlen)=NULL)printf(worngn);
exit(0);
if(p2=(char *)malloc(maxlen)=NULL)printf(worngn);
exit(0);
printf(please input strings:n);
gets(p1);
printf(please input strings again:n);
gets(p2);
strins(p1,p2);
printf(%s,p2);
free(p1);
free(p2);
char *strins(char *s1,char *s2)int i,k,n,l 。
来源:(未知)
【学习资料】网址:/a/2021/0321/0021738480.html
标题:实验|实验8指针及其应用