C语言实验报告(16)(7)

2019-04-09 15:04

【实验报告】

实习时间: 实习地点: 实习机号: 具 体 实 验 内 容 31

程 序 调 试 过 程 实 习 小 结 32

实验九 指针程序设计

【实验目的】

1.掌握变量的指针及其基本用法。 2.掌握一维数组的指针及其基本用法。

3.掌握指针变量作为函数的参数时,参数的传递过程及其用法。

【上机实习指导】

1.对以下程序进行单步运行,并从中了解变量的指针和指针变量的概念。 # include “stdio.h” void main()

{ int a=5,b=5,*p; p=&a;

*p=8; p=&b; b=10; }

按以下步骤操作:

①输入程序后,连续按三次F8,使绿条停留在P=&a诵句行上。

②用Ctrl一F7操作分别将a,b,&a,&b,p及*p显示出来。

③查看观察窗口中的内容,可发现此时a、b己有确定的地址(&a和&b)和确定的值,而p还没荷确定的值(此时语句p=&a还未执行),即p还没有明确的指向,因而它所指向的内存单元(*p)中的内容也是不确定的。

④按F8往下执行一步后再查看观察窗中的内容,可发现p已有确定的值,它与&a的值一致,说明p中存放了变量a的地址,也就是说p是指向变量a的指针变量。同时可发现,*p的内容与a的内容一致,

即p所指向的内存单元中的内容就是a的内容;从而可以理解*p等效于a,表示同一内存单元。

⑤按F8往下执行一步后再查看观察窗中的内容,可发现*p和a的内容都已发生变化,从而可理解通过改变指针变量p所指向的内存单元中的内容可以间接地改变a中的内容。

⑥再按F8往下执行一步,可发现p的值己发生变化,它与&b的值一致,说明p已经是指向变量b的指针变量,它不再是指向a,*p的内容也已变为b的内容,从而可理解指针变量的指向是随时可以改变的。

⑦再按F8往下执行一步,可发现,b的值和*p的值都已发生变化,即改变b的内容就等于改变指针变量p所指向的内存单元中的内容。

2.单步运行以下程序,观察&a[0],&a[i])和P的变化,然后回答以下问题: ①程序的功能是什么?

②在开始进入循环体之前,p指向谁?

③循环每增加一次,p的值(地址)增加多少?它指向谁? ④退出循环后,p指向谁?

⑤你是否初步掌握了通过指针变搔引用数组元素的方法? # include “stdio.h” void main()

{ int i,*p,s=0,a[5]={5,6,7,8,9}; p=a;

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

33

s+=*p;

printf(“\\n s=%d”,s); }

3.先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。

# include “stdio.h”

void main( )

{ int i,s1=0, s2=0, s3=0, s4=0,*p,a[5]={1,2,3,4,5}; p=a;

for(i=0;i<5;i++) s1+=p[i]; for(i=0;i<5;i++) s2+=*(p+i); for(p=a;p

p=a;

for(i=0;i<5;i++) s4+=*p++;

printf(“\\n s1=%d, s2=%d, s3=%d, s4=%d”s1,s2,s3,s4); }

【自编程序上机】

1.编写函数实现计算一元二次方程的两个实根,然后编写主函数调用此函数。

要求:在同一个函数内求出方程的两个实根,此函数不准使用全局变量进行数据传递,也不能使用return语句,只能通过指针进行数据传递。

2.编写函数,将n个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成:①输入10个数;②调用此函数进行重排;③输出重排后的结果。

3.编写程序,从键盘输入3个整数,通过函数调用的方式,将输入的3个整数求出被10除后的余数之和以及余数的乘积,并通过形参传送回主调函数,进行输出。

34

【实验报告】

实习时间: 实习地点: 实习机号: 具 体 实 验 内 容 35


C语言实验报告(16)(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高中化学实验探究教学的实践研究开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: