2進数を10進数または10進数にバイナリに変換するプログラムを作成しようとしています。私は条件があります。そのうちの1つは、関数で数値と数値システムの回答を得なければならないということです。私のプログラムでは、数値を使うためにchar文字列を整数値に変更しました。これは私の小さなプログラムです。Cプログラミングの小数点以下2進数
#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) || ((number[j]-48)!=1))
私は整数への文字列を変更したときに、その後、
(number[j]-48)
は私の数字を示し、さまざまなアイデアを試してみました。
しかし、私は私の元のプログラムの中で進数を入力しようとしたとき、私はちょうど「0」を使用し、「1」が、私はこの文に達しています:
printf("\nYou cannot use diffrent number in Binary form\n");
break;
私が何であるかを知りません正確な問題ですので、私はあなたの助けが必要です。
基本的なデバッグが必要なようです。あなたは 'number [j]'にあるものをチェックしましたか? – John3136
sidenote、 'printf("数字を入力してください); 'do 'while(getchat()!=' \ n ')continue ;;'の前に手動でバッファリングされた入力をクリアする必要があります。 – sjsam
else条件'0または1'でなければならないif条件は '! (0または1) 'これは'!0と!1'に変換される可能性があります。 – dvhh