C语言-十进制/二进制数的互相转化

妖狐艹你老母 2023-07-06 04:59 44阅读 0赞

一、编写一个程序,将输入的十进制数转化为二进制表示。例如:输入十进制数64,输出二进制数表示1000000

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1bGVpZG5m_size_16_color_FFFFFF_t_70

  1. void deTobi(int a) {
  2. int i = 0, stack[10], r, s;
  3. do {
  4. r = a / 2;
  5. s = a % 2;
  6. stack[i] = s;
  7. if (r != 0) {
  8. ++i;
  9. a = r;
  10. }
  11. } while (r);
  12. for (; i >= 0; --i) {
  13. printf("%d", stack[i]);
  14. }
  15. printf("\n");
  16. }
  17. int main(int argc, const char *argv[]) {
  18. int a;
  19. printf("Please input aDecimal digit less than 1023\n");
  20. scanf("%d", &a);
  21. deTobi(a);
  22. return 0;
  23. }

调试运行:

20200216145843839.png

如果只是单纯打印我们可以利用递归巧妙的打印出某数的二进制,代码很精简

  1. void binary(int n) {
  2. if (n / 2) {
  3. binary(n / 2);
  4. }
  5. printf("%d", n % 2);
  6. }

二、递归实现二进制转化为十进制

  1. #include "math.h"
  2. void biTode2(int n,int *sum,int *m){
  3. char c;
  4. scanf("%c",&c);
  5. if (c!='#') {
  6. *m = *m+1;
  7. biTode2(n+1, &(*sum), &(*m));
  8. }
  9. if(c=='1') *sum=*sum+pow(2, (*m)-n-1);
  10. }
  11. int main(int argc, const char *argv[]) {
  12. int sum = 0,m = 0;
  13. printf("Please input a binary number ending for '#'\n");
  14. biTode2(0, &sum, &m);
  15. printf("The Decimal Decimal digit is \n");
  16. printf("%d ",sum);
  17. return 0;
  18. }

结果:

20200223232633817.png

发表评论

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

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

相关阅读