搜档网
当前位置:搜档网 › C语言实验报告八

C语言实验报告八

C语言实验报告八
C语言实验报告八

C语言实验报告八

以下是为大家整理的c语言实验报告八的相关范文,本文关键词为语言,实验,报告,数学,软件,科学学院,实验,报告,学期,2,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

数学与软件科学学院实验报告

学期:_20XX_至_20XX_第__1学期20XX年_12月08日

课程名称:程序设计基础教程-c语言专业:数学与应用数学20XX_

级_1_班实验编号:08实验项目__指针_____指导教师姓名:学号:实验成绩:良+

一、实验目的及要求

(1)掌握c语言环境下指针的声明、定义和使用方法;(2)掌握指针和变量以及指针和数组的关系;(3)掌握指针、数组之间的关系;(4)掌握指针、函数之间的关系。

二、实验内容

1.熟悉指针的基本使用方法。

(1)请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。

1)程序段一:

intmain(){

inti=3,j=6,k=9;

printf(“i=%dj=%dk=%d\\n”,*(return0;}

2)程序段二:

intmain(void){

intnA,*p;floatfb,*q;p=q=

scanf(“%d,%f”,p,q);*p=nA*(*q);

printf(“nAis%d,pis%dand*pis%d\\n”,nA,p,*p);printf(“fbis%f,qis%dand*qi

s%d\\n”,nA,q,*q);printf(“p+1=%dq+1=%d\\n”,p+1,q+1);return0;}

3)程序段三:

intmain(void)

{

intnA,*p,**q,***r;p=q=r=

printf(“pleaseinputnA::\\n”);scanf(“%d”,**r);

printf(Theresultsare:”);

printf(“nA’valueis%d,%d,%d,%d\\n”,nA,*p,**q,***r);printf(“nA,p,q,r’sval ueis%d,%d,%d,%d\\n”,nA,p,q,r);return0;}

(2)设计一个c语言程序,以测试以下表达式的运算顺序。

2.想使指针变量pt1指向变量nA和nb中的大者,pt2指向其小者,以下程序能否实现此目的?为什么?如果不行,请给出实现的方法。

voidswap(int*pt1,int*pt2){

int*p;

p=p1;p1=p2;p2=p;}

intmain(void){

intnA,nb;int*pt1,*pt2;

scanf(“%d,%d”,pt1=pt2=

if(nA 3.请仔细分析教材例9-2、9-3、9-6~9-11,上机调试之。

记录并分析程序运行结果。

4.请仔细分析并执行以下程序段,并给出输入数据下的运行结果:intmain(void){

intfun1();intfun2();intfun3();intfun4();

int(*function[4])();intnA=10,nb=5,i;function[0]=fun1;function[1]=fun2;fu nction[2]=fun3;function[3]=fun4;

for(i=0;i printf(“funno.%d->%d\\n”,i+1,execute(nA,nb,function[i]));return0;

}

intexecute(intnx,intnY,int*func()){return((*fun)(nx,nY));}intfun1(intnx,int nY){return(nx+nY);}intfun2(intnx,intnY){return(nx-nY);}intfun3(intnx,intn Y){return(nx*nY);}intfun4(intnx,intnY){return(nx/nY);}

对如下main()函数,假设源程序名为list.c,则对编译连接后的list.exe程序,在Dos界面运行时输入命令行时,其执行结果是什么?为什么?

/*secondmain()program*/intmain(intargc,char*argv[]){

while(argc?1)printf(“%s\\n”,*++argv);return0;}

三、实验预备

(1)编写所选实验题目的程序代码和流程图;(2)检查源程序并给出其可能的运行结果说明。

四、实验步骤

(1)上机验证所选题目,并做相应测试和分析;(2)进行实验分析;

(3)总结指针及其程序设计、实现方法和经验;(4)编写实验报告。

五、实验结果分析与评价

(1)根据测试目标写出测试报告;(2)测试结果分析说明;(3)测试程序代码清单。

1.熟悉指针的基本使用方法。

请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。

1)程序段一:

intmain(){

inti=3,j=6,k=9;

printf(“i=%dj=%dk=%d\\n”,*(

/*其中*(

}

运行结果如下:

2)程序段二:

intmain(void){

intnA,*p;/*申明两个指针变量p,q,并且使他们指向nA,fb*/floatfb,*q;p=q=

scanf(“%d,%f”,p,q);/*输入p,q的值*/

*p=nA*(*q);/*重新将*p初始化,使p里面的值等于nA*(*p)*/printf(“nAis%d,pis%uand*pis%d\\n”,nA,p,*p);

/*输出地址采用%u不带符号的*/

printf(“fbis%f,qis%uand*qis%f\\n”,nb,q,*q);printf(“p+1=%uq+1=%u\\n”, p+1,q+1);

/*由于p指向intnA,则+1后移动2个字节;由于q指向floatfb,则+1后移动4个字节*/

return0;}

运行结果如下:

3)程序段三:

intmain(void){

intnA,*p,**q,***r;/*此处*p是一级指针,

**q是二级指针,***r是三级指针*/

p=q=r=

printf(“pleaseinputnA::\\n”);scanf(“%d”,**r);

printf(Theresultsare:”);

printf(“nA’valueis%d,%d,%d,%d\\n”,nA,*p,**q,***r);

/*实际上nA,*p,**q,***r都是表示的是nA的值*/printf(“nA,p,q,r’svalueis%d,%d,%d,%d\\n”,nA,p,q,r);

/*而p,q,r则分别表示存储nA,p,q的地址*/return0;}

运行结果如下:

以下是为大家整理的c语言实验报告八(2)的相关范文,本文关键词为语言,实验,报告,数学,软件,科学学院,实验,报告,学期,2,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

2.想使指针变量pt1指向变量nA和nb中的大者,pt2指向其小者,以下程序能否实现此目的?为什么?如果不行,请给出实现的方法。

voidswap(int*pt1,int*pt2){

int*p;

p=p1;p1=p2;p2=p;/*只是指针值的改变,而不是改变了nA,nb的值,

实际上是交换了指向它们的指针变量值*/

}

intmain(void){

intnA,nb;int*pt1,*pt2;

scanf(“%d,%d”,pt1=pt2=

if(nA答:该程序有误。将此程序更改为:用指针交换两个值voidswap(int*pt1,int*pt2){

intnTemp;

nTemp=*pt1;*pt1=*pt2;*pt2=nTemp;/*通过指针变量实现,实际上就

是交换了nA,nb的值*/

}

intmain(void)

{

intnA,nb;

int*pt1,*pt2;clrscr();

scanf(\

pt1=pt2=/*先使得pt1指向nA,pt2指向nb*/

if(nA交换nA,nb的值,使得nA>nb*/

printf(\return0;

}

运行结果如下:

2.请仔细分析教材例9-2、9-3、9-6~9-11,上机调试之。记录并分析程序运行结果。

例9-2:变量的地址、指针以及通过地址或指针访问的实例。

#includeintmain(void){

intm,*pt_m;floatb,*pt_b;clrscr();pt_m=pt_b=

scanf(\可用pt_m,pt_b代替/*对*pt_m重新赋值*/

printf(\

/*分别输出m的值,地址值,通过指针访问其值*/

printf(\

/*分别输出b的值,地址值,通过指针访问其值*/printf(\/*将地址值加1后输出其地址。实际上是在原地址值上加一个字节和两个字节的长度*/return0;}

运行结果如下:

例9-7:

有关二维数组行地址、列地址、数组元素及其地址的访问对比。

程序如下:#include

intmain(void){

inti,j,nArr[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};printf(\for(i=0;i printf(\

printf(\输出数组地址,首行行首地址和第一个元素的地址*/}

printf(\

printf(\printf(\

printf(\%u%u%u%u\\n\

printf(\

/*利用数组地址和行地址输出元素地址或列地址*/

printf(\printf(\

printf(\%u%u%u%u\\n\*(nArr+1)+3);

printf(\%u%u%u%u\\n\

*(nArr+2)+3);/*用取地址的方法输出数组行的行首地址和元素地址*/

printf(\printf(\printf(\

printf(\return0;}

运行结果如下:

以下是为大家整理的c语言实验报告八(3)的相关范文,本文关键词为语言,实验,报告,数学,软件,科学学院,实验,报告,学期,2,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。谢谢支持!

相关主题