Trong bài học này, chúng ta cùng nhau đi luyện tập kiến thức về hàm bằng cách giải quyết bài tập kiểm tra số armstrong trong ngôn ngữ C/C++.
Nếu bạn chưa biết tới khóa “Học C Bá Đạo”, xem bài giới thiệu khóa học tại https://nguyenvanhieu.vn/lap-trinh-c/.
Bài tập kiểm tra số armstrong
Viết chương trình trên ngôn ngữ C để nhập một số nguyên và kiểm tra xem số đó có phải là số Armstrong hay không. Đưa thông báo kết quả kiểm tra lên màn hình.
Số armstrong là gì?
Số armstrong là số mà từng chữ số trong số đó lũy thừa với số chữ số của nó bằng chính nó. Ví dụ:
- 137 != 1^3 + 3^3 + 7^3 => 137 không phải là số armstrong
- 153 = 1^3 + 5^3 + 3^3 => 153 là số armstrong
Ý tưởng giải bài toán
- Đếm số lượng chữ số.
- Tính tổng các lũy thừa: cơ số là các chữ số, số mũ là số lượng chữ số.
- So sánh và kết luận.
Ý tưởng đếm số chữ số của số n
- Khởi tạo biến dem = 0.
- Chừng nào n còn lớn hơn 0. Thực hiện tăng đếm, xóa bỏ chữ số cuối của n
Video hướng dẫn kiểm tra số armstrong
[wpcc-iframe loading=”lazy” title=”Bài 35. Kiểm tra số armstrong trong C” width=”720″ height=”405″ src=”https://www.youtube.com/embed/9uyjBy_TfIg?list=PLh91SaQgRYnpj1GqVmVMq4acSAHtSKKwR” frameborder=”0″ allow=”accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share” allowfullscreen]
Lời giải cho bài toán kiểm tra số armstrong trong C
/* BT kiểm tra số Armstrong */ #include <stdio.h> #include <math.h> /* 1. Đếm số lượng chữ số 2. Tính tổng các lũy thừa: cơ số là các chữ số, số mũ là số lượng chữ số 3. So sánh và kết luận */ // Đếm số lượng chữ số của số n /* 1023 1. 102 2. 10 3. 1 4. 0 => Có 4 chữ số */ int CountDigit(int n) { int count = 0; while (n > 0) { n /= 10; ++count; } return count; } // Kiểm tra số armstrong /* n = 1023 => 1^4 + 0^4 + 2^4 + 3^4 so sánh với 1023 1023 % 10 = 3 1023 / 10 = 102 */ bool IsArmstrong(int n) { int numDigit = CountDigit(n); int tmp = n, sum = 0, last; while (tmp > 0) { last = tmp % 10; // lấy chữ số cuối cùng tmp /= 10; // bỏ chữ số cuối cùng sum += pow(last, numDigit); } if (sum == n) return true; return false; } int main() { int n; printf("nNhap n = "); scanf("%d", &n); if (IsArmstrong(n) == true) { printf("n%d la so armstrong!", n); }else{ printf("n%d khong la so armstrong!", n); } }
Kết quả chạy chương trình:
PS G:c_courcesday_35> g++ .ArmstrongNumber.cpp -o .ArmstrongNumber PS G:c_courcesday_35> .ArmstrongNumber.exe Nhap n = 135 135 khong la so armstrong! PS G:c_courcesday_35> .ArmstrongNumber.exe Nhap n = 153 153 la so armstrong!
Theo dõi lập trình không khó tại:
Để lại một bình luận