第八章 对指针变量的操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章、对指针变量的操作
例8.1、
用指针指向两个变量,通过指针运算选出值小的那个数。
#include"stdio.h"
main()
{
int a,b,min,*pa,*pb,*pmin;
pa=&a;pb=&b;pmin=&min;
scanf("%d%d",pa,pb);
printf("a=%d b=%d\n",a,b);
*pmin=*pa;
if(*pa>*pb)pmin=pb;
printf("min=%d\n",min);
}
例8.2、
编写函数myadd(int *a,int *b),函数中把指针a和b所指的存储单元中的两个值相加,然后将和值作为函数值返回。在主函数中输入两个数,给变量,把变量地址作为实参,传送给对应形参。
#include"stdio.h"
int myadd(int *a,int *b)
{
int z;
z=*a+*b;
return z;
}
main()
{
int x,y,z;
printf("Enter x,y:\n");
scanf("%d%d",&x,&y);
z=myadd(&x,&y);
printf("%d+%d=%d\n",x,y,z);
}
例8.3、
调用swap函数,交换主函数中变量x和y中的数据。
#include"stdio.h"
void swap(int *a,int *b)
{
int t;
printf("(2)a=%d b=%d\n",*a,*b);
t=*a;*a=*b;*b=t;
printf("(3)a=%d b=%d\n",*a,*b);
}
main()
{
int x=30,y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(&x,&y);
printf("(4)x=%d y=%d\n",x,y);
}
例8.4、
编写函数,使调用函数中的第一个实参总是存放两个数中最小的一个,第二个参数存放两个数中较大的一个数。
#include"stdio.h"
void swap(int *x1,int *x2)
{
int t;
t=*x1;*x1=*x2;*x2=t;
}
void order(int *a,int *b)
{
if(*a>*b)swap(a,b);
}
main()
{
int x,y;
printf("Enter x,y:\n");
scanf("%d%d",&x,&y);
printf("x=%d y=%d\n",x,y);
order(&x,&y);
printf("x=%d y=%d\n",x,y);
}
#include"stdio.h"
void order(int *a,int *b)
{
int t;
if(*a>*b)
{
t=*a;*a=*b;*b=t;
}
}
main()
{
int x,y;
printf("Enter x,y:\n");
scanf("%d%d",&x,&y);
printf("x=%d y=%d\n",x,y);
order(&x,&y);
printf("x=%d y=%d\n",x,y);
}
例8.5
以下函数把主函数中变量i和j中存放较大数的那个地址作为函数值传回。
#include"stdio.h"
int *fun(int *a,int *b)
{
if(*a>=*b)return a;
return b;
}
main()
{
int *p,i,j;
printf("Enter i,j:\n");
scanf("%d%d",&i,&j);
p=fun(&i,&j);
printf("i=%d j=%d *p=%d\n",i,j,*p);
}
编程
8.17
请编写函数,其功能是对传送过来的两个浮点数,求出和值与差值,并通过形参传送回调用函数。
#include"stdio.h"
float fun(float *a,float *b,float *p,float *q)
{
*p=*a+*b;
*q=*a-*b;
}
main()
{
float x,y,c,d;
scanf("%f%f",&x,&y);
printf("x=%f y=%f\n",x,y);
fun(&x,&y,&c,&d);
printf("c=%f d=%f\n",c,d);
}
8.18
请编写函数,对传送过来的三个数,选出最大数和最小数,并通过形参传回调用函数。
#include"stdio.h"
int fun(int *a,int *b,int *c,int *p,int *q)
{
if(*a>=*b&&*a>=*c)*p=*a;
else if(*b>=*a&&*b>=*c)*p=*b;
else if(*c>=*a&&*c>=*b)*p=*c;
if(*a<=*b&&*a<=*c)*q=*a;
else if(*b<=*a&&*b<=*c)*q=*b;
else if(*c<=*a&&*c<=*b)*q=*c;
}
main()
{
int x,y,z,max,min;
scanf("%d%d%d",&x
,&y,&z);
printf("x=%d y=%d z=%d\n",x,y,z);
fun(&x,&y,&z,&max,&min);
printf("max=%d min=%d\n",max,min);
}