Trong ví dụ này, bạn sẽ học cách chuyển đổi số octal thành thập phân và ngược lại bằng cách tạo chức năng do người dùng xác định.
Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình C sau:
- C chức năng
- C Chức năng do người dùng xác định
Ví dụ 1: Chương trình chuyển đổi thập phân sang bát phân
#include <stdio.h> #include <math.h> // function prototype int convertDecimalToOctal(int decimalNumber); int main() { int decimalNumber; printf("Enter a decimal number: "); scanf("%d", &decimalNumber); printf("%d in decimal = %d in octal", decimalNumber, convertDecimalToOctal(decimalNumber)); return 0; } // function to convert decimalNumber to octal int convertDecimalToOctal(int decimalNumber) { int octalNumber = 0, i = 1; while (decimalNumber != 0) { octalNumber += (decimalNumber % 8) * i; decimalNumber /= 8; i *= 10; } return octalNumber; }Đầu ra
Enter a decimal number: 78 78 in decimal = 116 in octalVí dụ 2: Chương trình chuyển đổi Octal thành thập phân
#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; }Đầu ra
Enter an octal number: 116 116 in octal = 78 in decimalVí dụ 2: Chương trình chuyển đổi Octal thành thập phân This program doesn't work if we input non-octal numbers i.e., numbers that contain 8 or 9. For example, 187, 96, 985, etc., are not octal numbers.
Lưu ý: Chương trình này không hoạt động nếu chúng ta nhập các số phi octal, tức là, các số có chứa 8 hoặc 9. Ví dụ: 187, 96, 985, v.v., không phải là số octal.
#include <stdio.h> #include <math.h> // function prototypes int checkOctal(int); long long convertOctalToDecimal(int); int main() { int octalNumber; int condition; // repeat loop as long as user // gives a non-octal number do { printf("Enter an octal number: "); scanf("%d", &octalNumber); // check if number is octal condition = checkOctal(octalNumber); if (!condition) { printf("%d is not an octal number!\n", octalNumber); } } while (condition == 0); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to check octal number int checkOctal(int octalNumber) { int remainder; // check each digit of input number while(octalNumber != 0) { remainder = octalNumber % 10; // return 0 if a digit is 8 or 9 if (remainder >= 8) { return 0; } octalNumber/= 10; } // return 1 if number is octal return 1; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimalCải thiện bài viết
Lưu bài viết
Ở đây, chúng tôi sẽ chuyển đổi Octal thành một số thập phân bằng cách sử dụng 4 cách tiếp cận khác nhau trong ngôn ngữ C:
- Sử dụng định dạng xác định Format Specifier
- Mà không sử dụng pow ()using pow()
- Sử dụng pow () pow()
- Sử dụng phương pháp tiêu chuẩnStandard method
Input:
octal number = 67Output:
decimal number = 55Cách tiếp cận 1: Sử dụng trình xác định định dạng
C
Enter a decimal number: 78 78 in decimal = 116 in octal1
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal3
Enter a decimal number: 78 78 in decimal = 116 in octal4
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal7
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal9#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 0#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 1#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 2
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 4#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 0#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 6#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 7
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 9 Enter an octal number: 116 116 in octal = 78 in decimal 0
Enter an octal number: 116 116 in octal = 78 in decimal 1
Output:
Đầu ra
Cách tiếp cận 2: Không sử dụng hàm pow ()
C
Enter a decimal number: 78 78 in decimal = 116 in octal1
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal3
Enter a decimal number: 78 78 in decimal = 116 in octal4
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal7
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 9 Enter an octal number: 116 116 in octal = 78 in decimal 0
Đầu ra
Cách tiếp cận 2: Không sử dụng hàm pow ()
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter an octal number: 116 116 in octal = 78 in decimal 4Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter an octal number: 116 116 in octal = 78 in decimal 6
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 4
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 6
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 8
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter an octal number: 116 116 in octal = 78 in decimal 1
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 #include <stdio.h> #include <math.h> // function prototypes int checkOctal(int); long long convertOctalToDecimal(int); int main() { int octalNumber; int condition; // repeat loop as long as user // gives a non-octal number do { printf("Enter an octal number: "); scanf("%d", &octalNumber); // check if number is octal condition = checkOctal(octalNumber); if (!condition) { printf("%d is not an octal number!\n", octalNumber); } } while (condition == 0); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to check octal number int checkOctal(int octalNumber) { int remainder; // check each digit of input number while(octalNumber != 0) { remainder = octalNumber % 10; // return 0 if a digit is 8 or 9 if (remainder >= 8) { return 0; } octalNumber/= 10; } // return 1 if number is octal return 1; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 0
Enter an octal number: 116 116 in octal = 78 in decimal 1
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal3
Enter a decimal number: 78 78 in decimal = 116 in octal4
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal7
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 4#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 0decimal number = 554decimal number = 555
decimal number = 556decimal number = 557
Enter an octal number: 116 116 in octal = 78 in decimal 1
Đầu ra
decimal number is 55Cách tiếp cận 2: Không sử dụng hàm pow ()
C
decimal number = 559
Enter a decimal number: 78 78 in decimal = 116 in octal1
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal3
Enter a decimal number: 78 78 in decimal = 116 in octal4
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal7
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 9 Enter an octal number: 116 116 in octal = 78 in decimal 0
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0decimal number is 553
decimal number is 554decimal number is 555decimal number is 556decimal number is 557
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0decimal number is 559
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter an octal number: 116 116 in octal = 78 in decimal 1
Đầu ra
Enter an octal number: 116 116 in octal = 78 in decimal 1
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal3
Enter a decimal number: 78 78 in decimal = 116 in octal4
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal7
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 4#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 0decimal number = 554decimal number = 555
decimal number = 556Enter a decimal number: 78 78 in decimal = 116 in octal18
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 9 Enter an octal number: 116 116 in octal = 78 in decimal 0
Enter an octal number: 116 116 in octal = 78 in decimal 1
Đầu ra
decimal number is 55Cách tiếp cận 2: Không sử dụng hàm pow ()
C
decimal number = 559
Enter a decimal number: 78 78 in decimal = 116 in octal1
Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal3
Enter a decimal number: 78 78 in decimal = 116 in octal4
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter a decimal number: 78 78 in decimal = 116 in octal2 Enter a decimal number: 78 78 in decimal = 116 in octal7
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 9 Enter an octal number: 116 116 in octal = 78 in decimal 0
Đầu ra
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0Enter a decimal number: 78 78 in decimal = 116 in octal38
Cách tiếp cận 2: Không sử dụng hàm pow ()
Enter an octal number: 96 96 is not an octal number! Enter an octal number: 25 25 in octal = 21 in decimal 0Enter a decimal number: 78 78 in decimal = 116 in octal44
Enter a decimal number: 78 78 in decimal = 116 in octal5Enter an octal number: 116 116 in octal = 78 in decimal 1
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 4#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 0Enter a decimal number: 78 78 in decimal = 116 in octal50Enter a decimal number: 78 78 in decimal = 116 in octal51
Enter a decimal number: 78 78 in decimal = 116 in octal5#include <stdio.h> #include <math.h> // function prototype long long convertOctalToDecimal(int octalNumber); int main() { int octalNumber; printf("Enter an octal number: "); scanf("%d", &octalNumber); printf("%d in octal = %lld in decimal", octalNumber, convertOctalToDecimal(octalNumber)); return 0; } // function to convert octalNumber to decimal long long convertOctalToDecimal(int octalNumber) { int decimalNumber = 0, i = 0; while(octalNumber != 0) { decimalNumber += (octalNumber%10) * pow(8,i); ++i; octalNumber/=10; } i = 1; return decimalNumber; } 9 Enter an octal number: 116 116 in octal = 78 in decimal 0
Enter an octal number: 116 116 in octal = 78 in decimal 1
Đầu ra
Enter a decimal number: 78 78 in decimal = 116 in octal0