C语言上机实验(指针)
目 标:
1.熟悉指针变量的含义,熟悉简单变量和指针的关系;
2.熟悉指针变量做为函数的参数;
内 容
(1)熟悉书中案例,熟悉简单变量和指针的关系,了解指针值的变化;
(2)通过指针变量访问整型变量。
解题思路:先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量,可以到它们所指向的变量,从而得到这些变量的值。
#include <stdio.h>
main()
{ int a=100,b=10;
int *pointer_1, *pointer_2;
pointer_1=&a;
pointer_2=&b;
printf(“a=%d,b=%d\n”,a,b);
printf(“*pointer_1=%d,*pointer_2=
%d\n”,*pointer_1,*pointer_2);
}
(3)输入a和b两个整数,按先大后小的顺序输出a和b。(模仿p119页3.32)
解题思路:用指针方法来处理这个问题。不交换整型变量的值,而是交换两个指针变量的值。
#include <stdio.h>
main()
{ int *p1,*p2,*p,a,b;
printf(“integer numbers:");
scanf(“%d,%d”,&a,&b);
p1=&a; p2=&b;
if(a<b)
{ p=p1; p1=p2; p2=p; }
printf(“a=%d,b=%d\n”,a,b);
printf(“%d,%d\n”,*p1,*p2);
}
(4)对输入的两个整数按大小顺序输出。(程序改错) (答案略)
现用函数处理,而且用指针类型的数据作函数参数。
解题思路:定义一个函数swap,将指向两个整型变量的指针变量作为实参传递给swap函数的形参指针变量,在函数中通过指针实现交换两个变量的值。
(1)
#include <stdio.h>
main()
{swap(int *p1,int *p2);
int a,b; int*pointer_1,*pointer_2;
printf("please enter a and b:");
scanf(“%d,%d”,&a,&b);
pointer_1=&a;
pointer_2=&b;
if (a<b) swap(pointer_1,pointer_2);
printf(“max=%d,min=%d\n”,a,b);
}
swap(int *p1,int *p2)
{ int *temp; (无确定方向)
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
(2)
#include <stdio.h>
main()
{swap(int *p1,int *p2);
int a,b; int*pointer_1,*pointer_2;
printf("please enter a and b:");
scanf(“%d,%d”,&a,&b);
pointer_1=&a;
pointer_2=&b;
if (a<b) swap(pointer_1,pointer_2);
printf(“max=%d,min=%d\n”,a,b);
}
swap(int *p1,int *p2)
{ int *temp; (只交换了指针的值)
temp=p1;
p1=p2;
p2=temp;
c语言指针实验总结}
(5)输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现。
在函数中通过指针实现交换两个变量的值。
#include <stdio.h>
main()
{ void exchange(int *q1, int *q2, int *q3);
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
exchange(p1,p2,p3);
printf(“%d,%d,%d\n",a,b,c);
}
exchange(int *q1, int *q2, int *q3)
{ void swap(int *pt1, int *pt2);
if(*q1<*q2) swap(q1,q2);
if(*q1<*q3) swap(q1,q3);
if(*q2<*q3) swap(q2,q3);
}
swap(int *pt1, int *pt2)
{ int temp;
temp=*pt1; *pt1=*pt2; *pt2=temp;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论