// 二進数を十進数に変換するプログラム /* 二進数の入力関数 * bin 二進数各桁の配列 * n 桁数の最大値 * return データ数 or -1 */ int input(int *bin, int n) { int bit; // 二進数の1桁 int i; printf("二進数の各桁 0 or 1(%d 個以内,最後に -1) > ", n); for (i = 0; i < n; i++) { scanf("%d", &bit); if (bit < 0) return (i); // 入力終了,データ数を返す if (bit > 1) return (-1); // 入力不正,-1 を返す bin[i] = bit; } return (-1); // 入力多杉,-1 を返す } /* 二進数→十進数変換関数 * bin 二進数各桁の配列 * n 桁数 * return 十進数 */ int bin2dec(int *bin, int n) { int dec = 0; // 十進数 int i; for (i = 0; i < n; i++) { dec = dec*2 + bin[i]; } return (dec); } main() { int bin[8]; // 二進数 int n; // 二進数の桁数 int dec; // 十進数 n = input(bin, 8); if (n < 0) goto ERROR; dec = bin2dec(bin, n); printf("%d\n", dec); return; ERROR: printf("入力エラー\n"); }