数学与软件科学学院实验报告
学期:_20门_ 至一2012 第一 学期20 11年11月10
日
课程名称:C语言程序设计 专业:_会计学 2008 级
_旦班
实验编号:_08_实验项目:—指针 指导教师:王开端
姓名: 学号: 2008080513 实验成
绩: —、实验目的:
掌握C语言环境下指针的声明、定义和使用方法;
掌握指针和变量以及指针和数组的关系;
掌握指针、数组之间的关系;
掌握指针、函数之间的关系。
二、实验内容:
1?熟悉指针的基本使用方法。
(1)请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说 明。
程序段一:
main()
{
int i=3j=6,k=9; printf(ui=%d j=%d k=%d\n”,*(&i)jk);
}
程序段二:
main()
{
int a,*p;
float b,*q;
p=&a;
q 二&b;
scanf(“%d,%『,p, q);
*p=a*(*q);
printf(ua is %d, p is %d and *p is %d\n”,a9 p,*p); printf(ub is %f, q is %d and *q is %d\n”, a, q,*q); printf(up+l=%d q+l=%d\n”,p+l,q+l);
}
程序段三:
main()
int
p二&a;q二&p;r=&q;
printf(uPlease input a::\n,‘); scanf("%d”,**r);
printf(The results are :,,);
printf(ua, value is %d,%d,%d,%d\n,\a,*p,**q,***r); printf("a,p9q,r's value is %d,%d,%d,%d\nM,a,p,q,r);
}
(2)设计一个C程序,以测试以下表达式的运算顺序。
2.想使指针变量ptl指向变量a和b中的大者,pt2指向其小者,以下程序能 否实现此目的?为什么?如果不行,请给出实现的方法。
swap(int *ptl,int *pt2)
{
int *p;
p=pl;pl=p2;p2=p;
}
main()
{
int a,b;
int *ptl,*pt2;
scanf(“ %d,%d,',&a,&b);
ptl=&a;pt2= &b;
if (a
printf(“%d,%d\n”,*ptl,*pt2);
}
3?请仔细分析教材例6?8~6?9,上机调试之。记录并分析程序运行结果。
4?请仔细分析并执行以下程序段,并给出输入数据下的运行结果:
main()
{
int funl();
int fun2();
int fun3();
int fun4();
int (*function[4])();
int a=10,b=5,i;
function[0]=funl;
function[l]=fun2;
function[2]=fun3;
function[3]=fun4;
for (i=0;i<4;i++)
printf(ufun No.%d->%d\n,\i+l,execute(a,b,function[i]));
}
execute(int x,int y,int *func()) {return ((*fun)(x,y));}
funl(int x9int y) {return (x+y);}
fun2(int x9int y) {return (x-y);}
fun3(int x,int y) {return (x*y);}
fun4(int x,int y) {return (x/y);}
对如下main()函数,假设源程序名为list.c,则对编译连接后的list.txe程序, 在DOS界面运行时输入命令行时,其执行结果是什么?为什么?
/^Second main() program*/
main(int argc,char *argv[])
{
while (argc->l) printf(u%s\n9\*++argv);
}
三、实验准备:
编写所选实验题目的程序代码和流程图;
检查源程序并给出其可能的运行结果说明。
四、实验步骤及结果
实验步骤:
1?熟悉指针的基木使用方法。
编辑:
程序段一:
File Edit Run Compile Project Opt ions Debug Break/watch
Line 5 Col 40 Insert Indent Tab Fill Unindent * C:NONAME.C #include mai n()
C
pr i nt f ( *' i =Zcl j=Zd k=Zd