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,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。谢谢支持!