版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实用标准文案实验八 指针的应用一、实验目的1.掌握指针变量的定义和引用。2.掌握指针与变量的程序设计方法3.掌握指针与数组的程序设计方法4.掌握指针与字符串的程序设计方法5.掌握指针与函数的程序设计方法二、实验内容1.[目的]访问变量的地址。[ 题 目 内 容 ] 已 知 , char a;int x;float p,q; 而 且a=’A’;x=125;p=10.25;q=18.75; 编写程序显示变量 a,x,p,q的值及其地址。[输入]无[输出]变量a,x,p,q的值及其地址[提示]使用运算符&,地址输出采用%u格式(因为内存地址是无符号的整数)。#include<stdio.h>voidmain(){chara;intx;floatp,q;a='A';x=125;p=10.25;q=18.75;printf("%cisstoredataddr%u.\n",a,&a);printf("%disstoredataddr%u.\n",x,&x);printf("%fisstoredataddr%u.\n",p,&p);精彩文档实用标准文案printf("%fisstoredataddr%u.\n",q,&q);}Aisstoredataddr1245052.125isstoredataddr1245048.10.250000isstoredataddr1245044.18.750000isstoredataddr1245040.Pressanykeytocontinue2.[目的]通过指针访问变量。[题目内容]已知,intx,y;int*ptr; 而且x=10;ptr=&x;y=*ptr; ,运行下列程序,使用运算符*来访问指针所指的值。[输入]无[输出]x,&x、*&x,&x、*ptr,ptr、y,&*ptr、ptr,&ptr 、y,&y。[提示]地址输出采用%u格式#include<stdio.h>voidmain(){intx,y;int*ptr;x=10;ptr=&x;y=*ptr;printf("%disstoredataddr%u.\n",x,&x);精彩文档实用标准文案printf("%disstoredataddr%u.\n",*&x,&x);printf("%disstoredataddr%u.\n",*ptr,ptr);printf("%disstoredataddr%u.\n",y,&*ptr);printf("%disstoredataddr%u.\n",ptr,&ptr);printf("%disstoredataddr%u.\n",y,&y);*ptr=25;printf("\nNowx=%d\n",x);}3.[目的]练习指针表达式。[ 题 目 内 容 ] 已 知 , int x,y,a,b;int *ptr1,*ptr2; 而 且x=12;y=4;ptr=&x;ptr2=&y; ,编写程序,当执行表达式: a=*ptr1**ptr2-6;以及: b=(4*(-*ptr2))/(*ptr1)+10; 后,各变量的值分别为多少?[输入]无[输出]各变量的值。[提示]地址输出采用%u格式#include<stdio.h>voidmain(){intx,y,a,b;int*ptr1,*ptr2;x=12;y=4;ptr1=&x;精彩文档实用标准文案ptr2=&y;a=*ptr1**ptr2-6;b=(4*(-*ptr2))/(*ptr1)+10;printf("%disstoredataddr%u.\n",x,&x);printf("%disstoredataddr%u.\n",y,&y);printf("%disstoredataddr%u.\n",*ptr1,ptr1);printf("%disstoredataddr%u.\n",*ptr2,ptr2);printf("a=%d \n",a);printf("b=%d \n",b);}4.[目的]指针与数组[题目内容]已知,int*p,sum,i; int x[5]={5,9,6,3,7}; ,编写程序,使用指针来计算数组中所有元素的总和。[输入]无[输出]Element Value Addressx[0]51245024x[1]91245028x[2]61245032x[3]31245036x[4]71245040精彩文档实用标准文案sum=30[提示]关键语句:sum=sum+*p; 以及p++;#include<stdio.h>voidmain(){int*p,sum=0,i;intx[5]={5,9,6,3,7};p=x;printf("Element Value Address\n\n");for(i=0;i<5;i++){printf("x[%d] %d %u\n",i,*p,p);sum=sum+*p;p++;}printf("sum=%d\n",sum);}5.[目的]指针与数组[题目内容]编写一个函数,用于对作为参数的数组中的元素求平均值,函数以指针方式进行处理。平均值为函数的返回值。[输入]10个实数[输出]平均值精彩文档实用标准文案[提示]函数原型 floataverage(intx[],intn); 关键语句:float*p;p=x;for(i=0;i<n;i++,p++)sum=sum+*p;#include<stdio.h>voidmain(){floataverage(floatx[],intn);inti;floata[10],ave;printf("Enter10numbers:");for(i=0;i<10;i++)scanf("%f",&a[i]);ave=average(a,10);printf("ave=%f\n",ave);}floataverage(floatx[],intn){floatave1,sum=0.0;inti;float*p;精彩文档实用标准文案p=x;for(i=0;i<n;i++,p++)sum=sum+*p;ave1=sum/n;returnave1;}6.[目的]指针与字符串[题目内容] 已知,char name[20]="DELHIk"; int length; char*cptr=name;,编写程序,使用指针来确定字符串的长度。[输入]无[输出]字符串的长度[提示]关键语句: while(*cptr!='\0') cptr++; length=cptr-name; 先将指针定位于字符串开始处,利用循环结构将指针移动到字符串尾部,length=cptr-name; 即为字符串长度。#include<stdio.h>voidmain(){charname[20]="DELHIk";intlength;char*cptr=name;精彩文档实用标准文案printf("%s\n",name);while(*cptr!='\0'){printf("%c %u\n",*cptr,cptr);cptr++;}length=cptr-name;printf("length=%d\n",length);}7.[目的]指针与函数[题目内容]使用指针作函数参数,编写用于交换两个参数值的函数。调用该函数用于对从键盘输入的两个整数进行交换。[输入]x=100,y=200[输出]x=200,y=100[提示]用于交换两个参数值的函数原型为: exchange(int*a,int*b);#include<stdio.h>voidmain(){voidexchange(int*a,int*b);intx,y;printf("Entertwointegers:");scanf("%d%d",&x,&y);精彩文档实用标准文案printf("x=%d y=%d\n",x,y);exchange(&x,&y);printf("x=%d y=%d\n",x,y);}voidexchange(int*a,int*b){intt;t=*a;*a=*b;*b=t;}8.[目的]函数返回指针[题目内容]有函数:int*larger(int*a,int*b){if(*a>*b)returna;elsereturnb;}和主函数:#include<stdio.h>voidmain()精彩文档实用标准文案{int*larger(int*a,int*b);intx=10,y=20;int*p;p=larger(&x,&y);printf("%d\n",*p);}运行程序,给出运行结果,并说明此程序的功能。9.[目的]指针综合应用[题目内容]假设已有函数:voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}编写程序,输入 3个整数,调用 swap函数,完成将 3个整数按从小到大顺序输出的功能。[输入]3个数[输出]从小到大顺序输出[提示]关键语句:if(a>b)swap(p1,p2);if(a>c)swap(p1,p3);精彩文档实用标准文案if(b>c)swap(p2,p3);#include<stdio.h>voidmain(){voidswap(int*p1,int*p2);inta,b,c;int*p1,*p2,*p3;pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年租赁合同样本:办公设备租赁协议
- 牙科正畸治疗面部与颌面部评估
- 商丘医学高等专科学校《小学蒙语文课程与教学论》2023-2024学年第一学期期末试卷
- 凉山商场保安合同范例
- 闭孔泡沫板施工方案
- 物业解聘保安合同范例
- 2024至2030年配套镇流器项目投资价值分析报告
- 广州电梯设备合同范例
- 酒吧代运营合同范例
- 襄樊租房合同范例
- (高清版)TDT 1018-2008 建设用地节约集约利用评价规程
- 建筑遗产的保护与管理
- 评标专家考核试题库及答案
- 确保煤粉仓安全措施
- 2019年一级注册消防工程师继续教育三科题库+答案
- 园林装饰行业分析
- 大学广播与主持培养主持能力
- 美术创作中的家国情怀艺术家的民族自豪与国家认同
- 健康龙江行动监测评估报告
- 2024年安徽马钢集团招聘笔试参考题库含答案解析
- 2023年广东中考语文真题试卷及答案解析(文本版)
评论
0/150
提交评论