#include #include #define MIN_VALUE 0 #define MAX_VALUE 10000 int getInt(int, int); int inputDecimalNumber(); long convertDecimalToBinary(int); void outputBits(long binaryNum); int main() { int decimalNum; long binaryNum; do { decimalNum = inputDecimalNumber(); binaryNum = convertDecimalToBinary(decimalNum); outputBits(binaryNum); } while (1); } int getInt(int minValue, int maxValue) { int value; char check; //42a do { int rc = scanf("%d%c", &value, &check); fpurge(stdin); if (rc != 2 || check != '\n') { printf("Invalid value!\n"); } else if (value > maxValue || value < minValue) { printf("Value out of range!\n"); } else {// rc == 2 && check == '\n' return value; //break out of function } } while (1); } int inputDecimalNumber() { printf("\nConvert Decimal to Binary program\n"); printf("\tEnter a positive number: "); int decimalNum = getInt(MIN_VALUE, MAX_VALUE); return decimalNum; } long convertDecimalToBinary(int decimalNum) { long bit, i = 1, binaryNum = 0; do { bit = decimalNum % 2; binaryNum += (i * bit); decimalNum /= 2; i *= 10; //check process // printf("%ld----%ld-----%d----%ld\n", bit, i, decimalNum, binaryNum); } while (decimalNum > 0); return binaryNum; } void outputBits(long binaryNum) { printf("\tBinary number: %ld\n", binaryNum); printf("Press any key to do another conversion.\n"); }