网站大量收购独家精品文档,联系QQ:2885784924

出圈问题及进制转换.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
出圈问题及进制转换

出圈问题及进制转换 设n=100,c=1,m=10. (1)将1到n个人的序号存入一维数组p中; (2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置; (3)重复第(2)步直至圈中只剩下p[1]为止。 部分源程序已给出。 请勿改动主函数main()和输出数据函数writeDat()的内容。 #include stdio.h #define N 100 #define S 1 #define M 10 int p[100],n,s,m; void WriteDat(void); void Josegh(void) { } void main() { m=M; n=N; s=S; Josegh(); WriteDat(); } void WriteDat(void) { int i; FILE *fp; fp=fopen(out.dat , w ); for(i=N-1;i=0;i--){ printf( %4d ,p[i]); fprintf(fp, %4d ,p[i]); if(i % 10==0){ printf(\n ); fprintf(fp, \n ); } } fclose(fp); } -------------------------------------------------------------------------------- /* 注:题中第一个for()循环是先对数组p赋初值。在第二个for()中用i来控制没出圈的 总人数,s1=(s1+m-1)%i的作用是找出报数后出圈人的下标,其中对i求余的作用是使报 数按圈进行(即报到尾后又从头报),该算法在很多题目中都用到。由于求余的作用当 报数正好到最后一个时s1为0,故而要进行if(s1==0)的判断。内嵌的for()循环是将出圈 以后的人依次往前移。*/ void Josegh(void) { int i,j,s1,w; s1=s; for(i=1;i=n;i++) p[i-1]=i; for(i=n;i=2;i--) {s1=(s1+m-1)%i; if(s1==0) s1=i; w=p[s1-1]; for(j=s1;ji;j++) p[j-1]=p[j]; p[i-1]=w; } }   38、请编制函数readdat()实现从文件in.dat中读取100个十六进制数到字符串数组xx中 ;再编制函数h16to2(),将xx中的十六进制数转换成二进制数并把已转换的二进制数仍 存放在字符串数组xx,最后调用函数writedat()把结果输出到out.dat文件中。 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于 等于2000) 部分源程序已给出。 请勿改动主函数main()和输出数据函数writedat()的内容。 #include stdio.h #include stdlib.h #include string.h #includectype.h #define MAX 100 char xx[MAX][20]; void WriteDat(void) ; int ReadDat(void) { FILE *fp ; if((fp=fopen(in.dat,r))==NULL) return 1; fclose(fp) ; return 0 ; } void H16to2(void) { } void main() { int i ; for(i=0;iMAX;i++) memset(xx,0,20); if(ReadDat()) {printf(Cant open the data file in.dat!\007\n) ; return; } H16to2(); WriteDat(); } void WriteDat(void) { FILE *fp; int i; fp=fopen(out.dat, w) ; for(i=0;iMAX;i++) fprintf(fp,%s\n,xx[i]); fclose(fp) ; } --------------------------------------------------------------------------------   /*注:注意该题要编写readdat()函数,其中函数itoa(data,yy,16)的作用是将整数dat a转换成十六进制型式的字符串存入yy中,若要转成二进制型式的字符串则用itoa(data ,yy,2)。函数strtol(xx[i],NULL,16)的作用是将字符型转换成整型。*/ int ReadDat(void) { FILE

文档评论(0)

sy78219 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档