C程序设计中的二进制到十进制

C程序设计中的二进制到十进制,c,C,我正试图写一个程序,将二进制数转换为十进制数或十进制数转换为二进制数。我有条件,其中之一是我必须用get函数得到数字和数字系统的答案。在我的程序中,为了使用数字,我将字符字符串更改为整数值。这是我的小程序 #include <stdio.h> #include <stdlib.h> #include <string.h> int i,j,m, testnumber,realnumber,indx, total,k,x[10]; char numbersyst

我正试图写一个程序,将二进制数转换为十进制数或十进制数转换为二进制数。我有条件,其中之一是我必须用get函数得到数字和数字系统的答案。在我的程序中,为了使用数字,我将字符字符串更改为整数值。这是我的小程序

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

int i,j,m, testnumber,realnumber,indx, total,k,x[10];
char numbersystem;
char number[10];

int main (){
    printf("Is your number \"decimal\" (d) or \"binary\" (b)) ");
    numbersystem = getchar();
    getchar();

    printf("Please Type your numbers");
    gets(number);

i=0;
realnumber=0;
while(number[i]!='\0'){
    realnumber = realnumber*10 + (number[i]-48);
    i++;
}

testnumber = i;
indx=1;

  if( numbersystem == 'b'){
      for(j=0; j<testnumber; j++){
         if (((number[j]-48)!=0) || ((number[j]-48)!=1)) {
             printf("\nYou cannot use diffrent number in Binary form\n");
             break;
         }else {
            for(k=testnumber-1; k>0; k--){
               if((number[k]-48)=='1'){
                for(m=0; m<j; m++){
                    indx = indx*number[m];
                }
                total = total + indx;
            }
          }
      }
   }
     printf("Number %d\n\n",total );
  }
}
我尝试了不同的想法,然后当我把字符字符串改成整数

(number[j]-48) 
给我看了一个数字

但当我试图在我的原始程序中键入二进制数时,我只使用了0和1,但我得出了以下结论:

printf("\nYou cannot use diffrent number in Binary form\n");
             break;
我不知道到底是什么问题,所以我需要你的帮助。

这种情况:

((number[j]-48)!=0) || ((number[j]-48)!=1))
将始终评估为真。您可能希望将这两个测试与and(而不是or)结合起来,如下所示:

((number[j]-48)!=0) && ((number[j]-48)!=1))

看起来你需要做一些基本的调试。您是否检查了数字[j]中的内容?旁注,在打印前,应手动清除行缓冲输入。请键入您的数字;在聊天的时候做\继续;;在此之前,else条件应为0或1,然后if条件应为!可以转换为的0或1!0和!1谁在告诉您使用gets函数?这一职能本身就是危险的。它在1999年的C语言版本中被弃用,在C11中被完全删除。不要使用幻数!若要减去“0”的代码,请使用“0”和无模糊整数常量!更好:直接与字符常量进行比较。你为什么要去那里?这是为了一些混淆比赛吗?@Ren,这个网站对初学者的问题可能有点苛刻,尤其是对英语学习者。你的问题很好,但有点难理解。我做了一些修改来改进语法,所以可能否决票会停止。。。
((number[j]-48)!=0) && ((number[j]-48)!=1))