C语言栈实现十进制转二进制

深藏阁楼爱情的钟 2023-06-16 07:28 76阅读 0赞

C语言栈实现十进制转二进制

利用栈的先进后出的性质,与十进制转二进制时的2除法相似
(先算的余数放在后位)

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MaxSize 100
  4. typedef struct stack
  5. {
  6. int Data[MaxSize]; // 存储元素的数组
  7. int Top; //栈顶指针
  8. } SeqStack;
  9. SeqStack* creatstack()
  10. {
  11. SeqStack *p = (SeqStack*)malloc(sizeof(SeqStack));
  12. p->Top = -1;
  13. return p;
  14. }
  15. void Push(SeqStack *p,int x)
  16. {
  17. p->Top++;
  18. p->Data[p->Top] = x;
  19. }
  20. void convNum(SeqStack *p,int n, int R)
  21. {
  22. while (n!=0)
  23. {
  24. Push(p,n%R);
  25. n/=R;
  26. }
  27. }
  28. int main()
  29. {
  30. SeqStack *s;
  31. s = creatstack();
  32. int x; //原数
  33. int r=2; //要转化的进制数
  34. scanf("%d", &x);
  35. convNum(s,x,r);
  36. while (s->Top!=-1)
  37. {
  38. printf("%d", s->Data[s->Top--]);
  39. }
  40. return 0;
  41. }

发表评论

表情:
评论列表 (有 0 条评论,76人围观)

还没有评论,来说两句吧...

相关阅读