Bài viết ngày hôm nay mình sẽ hướng dẫn các bạn cách tính tổng các chữ số chẵn của số nguyên dương n bằng C++.
Giới thiệu bài toán tính tổng các chữ số chẵn của số nguyên dương
Bài toán: Nhập vào một số nguyên dương n hãy tính tổng các chữ số chẵn của số nguyên dương n.
Ý tưởng:
- Đầu tiên các bạn phải biết cách lấy từng chữ số của n ra.
- Để lấy được chữ số hàng đơn vị của n thì ta dùng phép chia lấy dư
%
của n cho 10. - Ví dụ:
15 % 10 = 5
vậy 5 là chữ số đầu tiên ta có thể lấy ra. - Tiếp theo bạn hãy lấy
n = n /10
sau đó lại chia lấy dưn % 10
thì các bạn có thể lấy chữ số thứ hai. - Ví dụ:
15 / 10 = 1
sau đó1 % 10 = 1
vậy 1 là chữ số thứ hai mà các bạn có thể lấy ra được. - Các chữ số tiếp theo các bạn làm tương tự như vậy.
- Lưu ý: trong quá trình các bạn lấy từng số ra thì các bạn nên kiểm tra nó là chẵn hay lẻ. Nếu chẵn thì ta tiến hành cộng luôn.
Code bài giải tính tổng các chữ số của số nguyên
#include<iostream> using namespace std; int main() { int n; int sum = 0, temp; cout << "Nhap so nguyen : "; cin >> n; while (n != 0) { temp = n % 10; if (temp % 2 == 0) sum += temp; n /= 10; } cout << "Tong cac so chan trong so nguyen la: " << sum; system("pause"); return 0; }
Sau khi chạy chương trình trên ta có kết quả
Nhap so nguyen : 123456 Tong cac so chan trong so nguyen la: 12
Giải bằng phương pháp đệ quy
- Cách này thì hơi phức tạp nên mình khuyên các bạn nên làm theo cách trên
- Các bạn dùng một biến
static
sum để lưu các giá trị của chữ số chẵn trong số nguyên n. - Sau khi gọi hàm
tinhtong (n)
thì các bạn lại gọi hàmtinhtong(n/10)
.
#include<iostream> using namespace std; static int sum = 0; int tinhtong(int n) { if (n == 0) return sum; int temp = n % 10; if (temp % 2 == 0) sum += temp; return tinhtong(n / 10); } int main() { int n; cout << "Nhap so nguyen: "; cin >> n; cout << "Tong cac chu so chan cua so nguyen la: " << tinhtong(n)<< endl; system("pause"); return 0; }
Sau khi chạy chương trình trên ta có kết quả
Nhap so nguyen: 123456 Tong cac chu so chan cua so nguyen la: 12
Bài viết của mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
Để lại một bình luận