数制转换程序设计算法..doc

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

设计要求: ?给定一个M进制的数x1)求出此数x的10进制值2)实现对x向任意的一个非M进制的数的转换Numtochar和chartonum,设定字符与数字之间的对应关系: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ……. 35 0 2 3 4 5 6 7 8 9 a b c d e f g h ……. z 函数调用关系图: main initstack numpush charpop chartonum push pop numtochar 程序代码: //数制转换程序的代码 #includestdio.h #includestdlib.h #define STACKSIZE 100 #define STACKINCR 10 #define OK 1 #define ERROR -1 typedef int elemint; //栈的结构 typedef struct{ int *top; int *base; int stacksize; }Number; //栈的初始化 int initstack(Number s){ s.base=(elemint*)malloc(STACKSIZE*sizeof(elemint)); if(!s.base) return ERROR; s.top=s.base; s.stacksize=STACKSIZE; return OK; } //入栈操作 int push(Number s,elemint e){ if((s.top-s.base)=s.stacksize){ s.base=(elemint*)realloc(s.base,(STACKSIZE+STACKINCR)*sizeof(elemint)); if(!s.base) return ERROR; s.top=s.base+s.stacksize; s.stacksize+=STACKINCR; } *(s.top)=e; s.top++; return OK; } //出栈操作 void pop(Number s,elemint e) { if(s.base!=s.top) { s.top--; e=*s.top; } else printf(栈为空!\n); } //字符变量转换数值变量函数 void chartonum(char c,elemint n) { if(c=1c=9) n=c-1+1; if(c==0) n=0; if(c=ac=z) n=c-a+10; } //数值变量转换字符变量函数 void numtochar(elemint n,char c) { if(n==0) c=0; if(n0n10) c=n-1+1; if(n=10n=35) c=n-10+a; } //输入字符变量(M进制)并转换为数值变量(M进制),入栈 void numpush(Number s) { int m,n,i,j; char a[50]; printf(输入M进制数(2~36):\n); scanf(%d,m); printf(输出N进制数(2~36):\n); scanf(%d,n); printf(输入%d进制数:\n,m); scanf(%s,a); for(i=0;a[i]!=\0;i++) { chartonum(a[i],j); push(s,j); } push(s,m); push(s,n); } //出栈,转换为数值变量并输出 void charpop(Number s) { int m,n,z=0,t=1,i; char c; pop(s,n); pop(s,m); while(s.base!=s.top) { pop(s,i); z=z+t*i; t=t*m; }//出栈,M进制转换为十进制 while(z!=0){ i=z%n; push(s,i); z=z/n; }//十进制转换为N进制 printf(输出的进制数为:\n); while(s.top!=s.base) { pop(s,i); numtochar(i,c); printf(%c,c); } printf(\n); scanf(%c); } void main() { Number s; initstack(s); numpush(s)

文档评论(0)

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

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

1亿VIP精品文档

相关文档