c语言实验八指针程序设计答案.doc
实验八指针的应用一、实验目的1.掌握指针变量的定义和引用。2.掌握指针与变量的程序设计方法3.掌握指针与数组的程序设计方法4.掌握指针与字符串的程序设计方法5.掌握指针与函数的程序设计方法二、实验内容1.[目的]访问变量的地址。[题目内容]已知,chara;intx;floatp,q;而且a’A’;x125;p10.25;q18.75;编写程序显示变量a,x,p,q的值及其地址。[输入]无[输出]变量a,x,p,q的值及其地址[提示]使用运算符,地址输出采用u格式(因为内存地址是无符号的整数)。includevoidmain{chara;intx;floatp,q;aA;x125;p10.25;q18.75;printfcisstoredataddru.\n,a,printfdisstoredataddru.\n,x,printffisstoredataddru.\n,p,printffisstoredataddru.\n,q,}Aisstoredataddr1245052.125isstoredataddr1245048.10.250000isstoredataddr1245044.18.750000isstoredataddr1245040.Pressanykeytocontinue2.[目的]通过指针访问变量。[题目内容]已知,intx,y;int*ptr;而且x10;ptr,运行下列程序,使用运算符*来访问指针所指的值。[输入]无[输出]x,x、*x,x、*ptr,ptr、y,*ptr、ptr,ptr、y,y。[提示]地址输出采用u格式includevoidmain{intx,y;int*ptr;x10;ptry*ptr;printfdisstoredataddru.\n,x,printfdisstoredataddru.\n,*printfdisstoredataddru.\n,*ptr,ptr;printfdisstoredataddru.\n,y,printfdisstoredataddru.\n,ptr,printfdisstoredataddru.\n,y,*ptr25;printf\nNowxd\n,x;}3.[目的]练习指针表达式。[题目内容]已知,intx,y,a,b;int*ptr1,*ptr2;而且x12;y4;ptr,编写程序,当执行表达式a*ptr1**ptr2-6;以及b4*-*ptr2/*ptr110;后,各变量的值分别为多少[输入]无[输出]各变量的值。[提示]地址输出采用u格式includevoidmain{intx,y,a,b;int*ptr1,*ptr2;x12;y4;ptr1ptr2a*ptr1**ptr2-6;b4*-*ptr2/*ptr110;printfdisstoredataddru.\n,x,printfdisstoredataddru.\n,y,printfdisstoredataddru.\n,*ptr1,ptr1;printfdisstoredataddru.\n,*ptr2,ptr2;printfad\n,a;printfbd\n,b;}4.[目的]指针与数组[题目内容]已知,int*p,sum,i;intx[5]{5,9,6,3,7};,编写程序,使用指针来计算数组中所有元素的总和。[输入]无[输出]ElementValueAddressx[0]51245024x[1]91245028x[2]61245032x[3]31245036x[4]71245040sum30[提示]关键语句sumsum*p;以及p;includevoidmain{int*p,sum0,i;intx[5]{5,9,6,3,7};px;printfElementValueAddress\n\n;fori0;ivoidmain{floataveragefloatx[],intn;inti;floata[10],ave;printfEnter10numbers;fori0;ivoidmain{charname[20]DELHIk;intlength;char*cptrname;printfs\n,name;while*cptr\0{printfcu\n,*cptr,cptr;cptr;}lengthcptr-name;printflengthd\n,length;}7.[目的]指针与函数[题目内容]使用指针作函数参数,编写用于交换两个参数值的函数。调用该函数用于对从键盘输入的两个整数进行交换。[输入]x100,y200[输出]x200,y100[提示]用于交换两个参数值的函数原型为exchangeint*a,int*b;includevoidmain{voidexchangeint*a,int*b;intx,y;printfEntertwointegers;scanfdd,printfxdyd\n,x,y;exchangeprintfxdyd\n,x,y;}voidexchangeint*a,int*b{intt;t*a;*a*b;*bt;}8.[目的]函数返回指针[题目内容]有函数int*largerint*a,int*b{if*a*breturna;elsereturnb;}和主函数includevoidmain{int*largerint*a,int*b;intx10,y20;int*p;plargerprintfd\n,*p;}运行程序,给出运行结果,并说明此程序的功能。9.[目的]指针综合应用[题目内容]假设已有函数voidswapint*p1,int*p2{inttemp;temp*p1;*p1*p2;*p2temp;}编写程序,输入3个整数,调用swap函数,完成将3个整数按从小到大顺序输出的功能。[输入]3个数[输出]从小到大顺序输出[提示]关键语句ifabswapp1,p2;ifacswapp1,p3;ifbcswapp2,p3;includevoidmain{voidswapint*p1,int*p2;inta,b,c;int*p1,*p2,*p3;printfEnter3numbers;scanfddd,p1ifabswapp1,p2;ifacswapp1,p3;ifbcswapp2,p3;printfddd,a,b,c;}