如何识别数字是C中的二进制代码还是小数

时间:2015-03-12 07:04:30

标签: c pc

我尝试制作一个计算器,首先从用户读取输入,然后确定输入是二进制还是十进制,然后转换它。 我得到了几乎所有东西,但不能提出标识符!这是我得到的代码:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

int a;
char num[100];
int number[100];
int decimal_binary (int n);
int binary_decimal (int n);

void errorcode(void);
bool bin, decim;

int main (){
  bin (false);
  decim (false);
  printf ("enter a number: ");
  gets (num);
  a = strlen(num);
  if (a > 8){
    errorcode();
    //printf("That is an invalid number!");
    //exit(45);
  }

  for (int i=0; i < a; i++){
    number[i] = num[i] -'0';
    printf("%d", number[i]);
  }

  int decimal_binary(int n){
    int rem, i=1, binary = 0;
    while (n != 0)
    {
        rem =n%2;
        n/=2;
        binary+=rem *i;
        i*=10;
    }
    return binary;
  }

  int binary_decimal(int n)
  {
    int decimal = 0, i=0, rem;
    while (n!-0){
        rem = n%10;
        n/=10;
        decimal += rem *pow(2,i);
        ++i;
    }
    return decimal;
  }
}

void errorcode(void){
  printf("That is an invalid number!");
  exit(45);
}

1 个答案:

答案 0 :(得分:3)

通过分析输入数字的字符,无法检测输入的数字是二进制还是十进制。但是,如果您研究随操作系统一起提供的Microsoft Windows计算器应用程序,“程序员”类型的计算器会接受输入,无论输入的数字是用户的二进制还是十进制,然后在其代码内部检查是否输入number是有效的二进制或十进制数。

简而言之,您的代码必须告诉用户指定输入的号码。

我建议学习Microsoft计算器应用程序的“程序员”类型calc,以帮助您了解您想要实现的目标。