加载中…
个人资料
_伯灬爵_
_伯灬爵_
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,133
  • 关注人气:11
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据结构C语言将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)

(2012-10-12 09:29:06)
标签:

it

分类: C

将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)。

转换函数的原型为: void Convert (int n,  char str[], unsigned P); n:输入,待转换的数 str:输出,转换好的P进制字符串 P:输入,要转换的进制,取值可从2到16。如果在这范围之外,可认为输入错,不做转换。 将一个整数转换成P进制的数,我们可以采用如下的方法: 例:十进制转换成八进制(P等于8):(66)10=(102)8 66/8=8 余 2 8/8 =1 余 0 1/8 =0 余 1 当商为0时转换结束,转换结果为上述过程余数序列的逆序:102。 先求得的余数在写出结果时最后写出,最后求出的余数最先写出,符合栈的LIFO性质,故可用栈来实现数  制转换。 

 #include

#include

#define maxsize 100

typedef struct {  char data[maxsize]; 

int top;

}sqstack,*Stack;

Stack initstack() { 

Stack s; 

s=(Stack)malloc(sizeof(sqstack)); 

s->top=-1;  return s;

}

int push(Stack s,char ch)

if(s->top>=maxsize)  

return 0; 

else 

  s->data[++s->top]=ch;  

return 1; 

}

}

int pop(Stack s,char *ch)

{

  if(s->top==-1)

   return 0;

  else

  {

   *ch=s->data[s->top--];

   return 1;

  }

 }

 void Convert (int n, char str[], unsigned p)//十进制数据n向p进制转换

{

  Stack s;

  int i=0;

  s=initstack();

  while(n)

  

if(n%p<10)

    push(s,n%p+'0');

   else

    push(s,n%p+'A'-10);

   n=n/p;

 

 while(s->top!=-1)  

 pop(s,&str[i++]);

  str[i]='\0';

 }

void main()

 

 int n; 

char str[maxsize];

  unsigned p;

  printf("请输入数据n\n");

  scanf("%d",&n);

  printf("请输入数据p\n");

  scanf("%d",&p);

  Convert(n,str,p);

  printf("%s\n",str);

 }

0

阅读 收藏 喜欢 打印举报/Report
前一篇:exit与atexit
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有