Trong bài học này, bạn đọc sẽ cùng Lập Trình Không Khó tiếp tục luyện tập kiến thức về hàm đã được học trong khóa học Học C Bá Đạo ở các bài học trước. Lần này chúng ta sẽ giải quyết bài toán chuyển đổi số thập phân sang bát phân và ngược lại, đổi số bá tphân sang hệ thập phân.
Cách đổi số thập phân sang bát phân và ngược lại
[wpcc-iframe loading=”lazy” title=”Bài 38. Chuyển cơ số 10 sang cơ số 8 và ngược lại” width=”720″ height=”405″ src=”https://www.youtube.com/embed/gIZnrMx4Emk?list=PLh91SaQgRYnpj1GqVmVMq4acSAHtSKKwR” frameborder=”0″ allow=”accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share” allowfullscreen]
Cách đổi thập phân sang bát phân
/*
Chuyển cơ số 10 sang cơ số 8
Ta có hệ cơ số 10: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0
Còn với hệ cơ số 8: 25 = 2 * 8 ^ 1 + 5 * 8 ^ 0 = 21
*/
Vậy cách chuyển đổi hệ thập phân sang bát phân như sau:
Giả sử n = 100, chừng nào n còn lớn hơn không ta chia dư n cho 8 và sau đó chia n cho 8.
4, 12 vì 100 % 8 = 4, 100 / 8 = 12
4, 1 vì 12 % 8 = 4, 12 / 8 = 1
1, 0 vì 1 % 8 = 1, 1 / 8 = 0
Sau cùng ta đảo ngược số dư của nó. Vậy 100 ở cơ số 10 là 144 ở hệ cơ số 8.
=> 144 = 1 * 8^2 + 4 * 8 + 4.
Dưới đây là lời giải tham khảo:
/* Chuyển cơ số 10 sang cơ số 8 hệ cơ số 10: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 hệ cơ số 8: 25 = 2 * 8 ^ 1 + 5 * 8 ^ 0 = 21 */ /* Cách chuyển 10 sang 8 Giả sử n = 100 4, 12 4, 1 1, 0 => 144 = 1 * 8^2 + 4 * 8 + 4 */ #include <stdio.h> #include <math.h> int DecToOct(int number){ int p = 0; int octNumber = 0; while(number > 0){ octNumber += (number % 8) * pow(10, p); p++; number /= 8; } return octNumber; } int main(){ int decimalNumber; printf("nNhap so o co so 10: "); scanf("%d", &decimalNumber); printf("nOct = %d", DecToOct(decimalNumber)); }
Kết quả chạy:
PS G:c_courcesday_38> .Dec2Oct.exe Nhap so o co so 10: 100 Oct = 144 PS G:c_courcesday_38> .Dec2Oct.exe Nhap so o co so 10: 8 Oct = 10
Đổi hệ bát phân sang thập phân
/* Chuyển cơ số 8 sang cơ số 10 */ /* Cách chuyển 8 sang 10 n = 144 4 * 8 ^ 0 4 * 8 ^ 1 1 * 8 ^ 2 = 100 */ #include <stdio.h> #include <math.h> int Oct2Dec(int number){ int p = 0; int decNumber = 0; while(number > 0){ decNumber += (number % 10) * pow(8, p); p++; number /= 10; } return decNumber; } int main(){ int octNumber; printf("nNhap so o co so 8: "); scanf("%d", &octNumber); printf("nDec = %d", Oct2Dec(octNumber)); }
Kết quả chạy chương trình:
PS G:c_courcesday_38> .Oct2Dec.exe Nhap so o co so 8: 10 Dec = 8 PS G:c_courcesday_38> .Oct2Dec.exe Nhap so o co so 8: 144 Dec = 100
Theo dõi lập trình không khó tại:
Để lại một bình luận