实验7 指针及其运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七指针及其运算

实验目的

理解指针的概念,会定义和使用指针变量,掌握指针的运算规则,学会使用数组的指针和指向数组的指针变量。

要点提示

1.变量在内存单元的地址称为该变量的“指针”。

2.指针变量是用来存放其它变量地址的变量。

3.指针变量定义的一般形式:

类型标识符*指针变量名;

4.指针运算符

&(取变量地址运算符)和*(取值运算符)是互逆的运算符,右结合。

++,--,+,- 运算符是按地址计算规则进行的。

5.用指针作为函数参数,可以实现“调用函数改变变量的值,在主调函数中使用这些改变的值。

6.数组的指针是指数组的起始地址(首地址),数组元素的指针是指数组元素的地址。数组名代表数组的首地址,是地址常量。

实验内容

1.指针变量的说明,初始化和使用。

2.指针作为函数参数。

3.数组的指针和指针数组的指针变量的说明和使用

4. 数组名作为函数参数

实验步骤

读懂并输入程序,完成填空后输出结果,(下面程序中的中文注释可以不输入)

1. 输入a和b两个整数,按先大后小的顺序输出。

算法提示:不交换变量的值,而是交换两个指针变量的值,使p1指向较大的数,p2指向较小的数。

#include

using namespace std;

main()

{

int *p1,*p2, 【】;/* 变量说明语句*/

int a, b;

cout<<"\n Please input a and b:";

cin>>a>>b;

p1=&a;

p2=&b;

if (a

{ p=p1; p1=p2; p2=p;} /* p1和p2变量的值进行交换*/

cout<<"max=”<<【】<<”min="<<【】<

}

程序运行结果:

Please input a and b: 12 34

【】

2.输入三个整数,按由小到大的顺序输出。用函数和指针实现。

#include

using namespace std;

main()

{int a,b,c;

int *p1,*p2,*p3;

cout<<"\nInput 3 numbers:";

cin>>a>>b>>c;

p1=&a; p2=&b; p3=&c;

if (a>b) swap(【】); /* 函数调用*/

if (a>c) swap(【】); /* 函数调用*/

if (b>c) swap(【】); /* 函数调用*/

cout<<"\nThe sorted numbers:”<

}

swap(int *p1, int *p2)

{ int 【】;

p=*p1; *p1=*p2; *p2=p;

}

程序运行结果:

Input 3 numbers: 100 200 150

The sorted numbers: 【】

问答:上面程序中语句printf("\nThe sorted numbers: %d,%d,%d\n",a,b,c);

是否可改为如下的语句:printf("\nThe sorted numbers: %d,%d,%d\n",*p1,*p2,*p3); _____, 请验证.

3.输出数组中的数据元素。

#include

using namespace std;

#define N 5

main()

{ int *p,i,a[N];

p=a;

cout<<"\nInput 5 numbers:";

for (; p

【】;

【】; /* 修改指针变量p的值*/

cout<<"\nOutput array:";

for (; p

cout<< *p ;

}

程序运行结果:

Input 5 numbers: 1 3 5 7 9

Output array:【】

4. 在a数组中查找与x 值相同的元素的所在位置,用指针实现。#include

using namespace std;

main()

{int a[6],x,i;

cout<<"\nInput 5 numbers:";

for (i=1; i<=5; i++) cin>>a+i; /* 读数到a[1]…a[5] */

cout<<"\nInput x:";

cin>>x;

*a=x; i=5; /* 将x存入a[0]中*/

while (x!=*(a+i))

【】;

if (【】)cout<

else cout<

}

程序运行结果:

Input 5 numbers: 1 3 5 7 9

Input x: 3

3's position is 2

5. 有一个数组,内放5个学生成绩,求平均分,用函数实现。#include

using namespace std;

main()

{ float average();

static int score[5]={60,70,80,90,80}, i;

float aver;

printf("\nScores:");

for (i=0; i<5; i++)

cout<<*(score+i);

aver=【】;

cout<<"\nAverage score:"<

}

float average(int *array)

{int i;

float aver,sum=0;

for (i=0;i<5;i++)

sum=sum + *(array+i);

aver=sum/5;

【】

相关文档
最新文档