实验5 指针.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验5 指针

注意: 1、请大家每次上机都要带上c教材。 2、实验五指针上2次机4学时,第1次上机完成实验内容1~2,第2次上机完成实验内容3~4. 2、请认真按照实验要求做好实验预习工作,编好相关程序,有目的的上机! 实验5 指针 一、实验说明 ?实验项目名称:指针 ?实验类型:基础 ?实验课时:4 二、实验准备——实验预习理论基础知识 int a[10] , i , *p ; p=a; 则p++; p指向谁? p+i指向谁?、*p++ 、*(++p) 、(*p)++的作用分别是什么? 对int *p1 , (*p2)[3] , *p3[3] , a[4][3]; p1=a ; p2=a ; p3[0]=a ; p3[1]=a+1 ; p3[2]=a+2 ; p3[3]=a+3 ; 请分别用p1、p2、p3和数组名a描述数组a的第i行第j列的元素。 字符指针变量与字符数组的区别 函数的指针的含意?如何定义一个指向函数的指针变量? 指向指针的指针的含意?如何定义指向指针的指针变量? 三、实验目的 通过实验进一步掌握指针的概念,会定义和使用指针变量; 能正确使用数组的指针和指向数组的指针变量; 能正确实验字符串的指针和指向字符串的指针变量; 了解指向指针的指针的概念及其使用方法。 四、实验环境 实验所用主要仪器:微型计算机1台,安装中文版Windows 2000/XP操作系统、VC++6.0集成编程环境。   另外,要求同学们在上机前一定要预先编写好程序。 五、实验内容 有n个人围成一圈,顺序排号。从第s个人开始报数,凡是数到m的人退出圈子,问最后留下的是原来的第几号的人。要求从键盘中输入开始报数的位置s和报数号m,用指针方法实现。 #includestdio.h #define N 8 int out(int *,int,int); int out1(int *,int,int); void main() { int a[N]; int i,s,m; int s1,m1; for(i=0;iN;i++) a[i]=i+1; printf(1、覆盖法实验约瑟夫圈\n); printf(出圈前数组元素a[%d]=:,N); for(i=0;iN;i++) printf(%4d,a[i]); printf(\n请输入报数开始位置:s=); scanf(%d,s); printf(\n请输入报数号:m=); scanf(%d,m); printf(最后留下的是原来的第%d号!\n,out(a,s,m)); printf(\n2、标识法实验约瑟夫圈\n); for(i=0;iN;i++) a[i]=i+1; printf(出圈前数组元素a[%d]=:,N); for(i=0;iN;i++) printf(%4d,a[i]); printf(\n请输入报数开始位置:s1=); scanf(%d,s); printf(\n请输入报数号:m1=); scanf(%d,m); printf(最后留下的是原来的第%d号!\n,out(a,s,m)); } int out(int *p,int s,int m) { int i,j=s; int *t; int n=N; printf(出圈的顺序是:); while(n1) { j=(j+m-1)%n; if(j==0)j=n; t=p+j-1; printf(%3d,*t); for(i=j-1;in-1;i++) { *(p+i)=*(p+i+1); } *(p+i)=*t; n--; } printf(%3d\n,*p); return *p; } int out1(int *p,int s,int m) { int num; int *t; int n=N; s=s%N; printf(出圈的顺序是:); t=p+s-1; while(n1) { if(*t!=0) num++; if(num==m) { printf(%3d,*t); *t=0; num=0; n--; } t++; if(tp+N-1) t=p; } for(t=p;*t==0;t++); printf(%3d\n,*t); return *t; } 运行结果: 将一个3×3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素:,将数组名作为函数实参,在执行函数的过程中实现

文档评论(0)

dyn593 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档