四川师范大学数学与软件科学学院程序设计实验报告实验八
数学与软件科学学院实验报告
一、实验目的
(1) 掌握C语言环境下指针的声明、定义和使用方法;
(2) 掌握指针和变量以及指针和数组的关系;
(3) 掌握指针、数组之间的关系;
(4) 掌握指针、函数之间的关系。
二、实验内容
1.熟悉指针的基本使用方法。
(1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。
1) 程序段一:
#include
main()
{
int i=3,j=7,k=9;
printf("i=%d,j=%d,k=%d",*(&i),*(&j),*(&k));
}
2) 程序段二:
#include
main()
{
int a,*p;
float b,*q;
p=&a;
q=&b;
scanf("%d,%f",p,q);
*p=a*(*q);
printf("a=%d,p=%d,*p=%d\n",a,p,*p);
printf("b=%f,q=%d,*q=%f\n",b,q,*q);
printf("p+1=%d,q+1=%d",p+1,q+1);
}
2. 想使指针变量pt1指向变量a和b中的大者,pt2指向其小者,以下程序能
否实现此目的?为什么?如果不行,请给出实现的方法。
#include
swap(int *p1,int *p2);
main()
{
int a,b;
int *p1,*p2,*p;
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
if(a
{
swap(p1,p2);
}
else
printf("%d,%d",*p1,*p2);
}
swap(int *p1,int *p2)
{
int *p;
p=p1;
p1=p2;
p2=p;
printf("%d,%d",*p1,*p2);
}
3.请仔细分析教材例6-8~6-9,上机调试之。记录并分析程序运行结果。#include
main()
{
int *p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
if(a
{
p=p1;
p1=p2;
p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
}
三、实验准备
(1) 编写所选实验题目的程序代码和流程图;
(2) 检查源程序并给出其可能的运行结果说明。
四、实验步骤
(1) 上机验证所选题目,并做相应测试和分析;
(2) 进行实验分析;
(3) 总结指针及其程序设计、实现方法和经验;
(4) 编写实验报告。
五、实验结果
1.熟悉指针的基本使用方法。
(1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。
1) 程序段一:
2) 程序段二:
2.想使指针变量pt1指向变量a和b中的大者,pt2指向其小者,以下程序能否实现此目的?为什么?如果不行,请给出实现的方法。
不行,因为函数调用之后就不存在了,本质上,pt1和pt2是没有改变的:
3.请仔细分析教材例6-8~6-9,上机调试之。记录并分析程序运行结果。输入两个数,并使其从大到小输出: