Sau khi đã tìm hiểu cách đếm số chữ số của một số nguyên dương trong C++, chúng ta có thể tính tổng các chữ số của một số nguyên dương trong C++. Các bước thực hiện như sau:
Bước 1 – Khai báo biến để lưu giá trị của số nguyên dương.
Bước 2 – Sử dụng vòng lặp để lấy từng chữ số của số nguyên đó.
Bước 3 – Trong mỗi lần lặp, ta lấy phần dư của phép chia số nguyên đó cho 10 để được chữ số cuối cùng của số đó.
Bước 4 – Cộng giá trị chữ số cuối cùng lấy được vào biến tổng.
Bước 5 – Sau đó, chia số đó cho 10 để xóa chữ số cuối cùng của số đó. Tiếp tục lặp lại cho đến khi số đó bằng 0.
Bước 6 – Cuối cùng, ta in ra tổng các chữ số đó.
Bài này sẽ hướng dẫn cách sử dụng vòng lặp while, for, và do…while để tính tổng các chữ số của một số nguyên dương trong C++.
1. Sử dụng vòng lặp while
Ở bài Đếm số chữ số của một số nguyên dương trong C++, vòng lặp while
được sử dụng để đếm các chữ số của một số nguyên. Để tính tổng các chữ số thì chúng ta chỉ cần thêm dòng lệnh cộng từng chữ số duyệt qua được. Cùng xem chương trình C++ bên dưới:
#include <iostream>
using namespace std;
int main() {
int n, sum=0;
cout << "Nhap vao mot so nguyen: ";
cin >> n;
while(n != 0) {
sum += n%10;
n /= 10;
}
cout << "Tong cac chu so cua so nguyen la: " << sum << endl;
return 0;
}
Biến n
lưu giá trị số nguyên được nhập vào. Biến sum
giúp tính tổng các chữ số của số nguyên n
. Trong vòng lặp while, lệnh sum += n%10;
giúp tính tổng các chữ số. Vòng lặp while dừng khi n==0
, là tức là đã duyệt qua hết các chữ số của số nguyên ban đầu.
Lưu ý: Muốn kiểm tra người dùng nhập số nguyên dương hợp lệ hay không thì các bạn xem lại bài đếm số chữ số của một số nguyên dương trong C++.
2. Sử dụng vòng lặp for
Nếu không muốn sử dụng vòng lặp while, các bạn có thể dùng vòng lặp for để tính tổng các chữ số.
#include <iostream>
using namespace std;
int main() {
int n, sum=0;
cout << "Nhap vao mot so nguyen: ";
cin >> n;
for(int i=n; i>0; i/=10) {
sum += i%10;
}
cout << "Tong cac chu so cua so nguyen la: " << sum << endl;
return 0;
}
Trong vòng lặp for, giá trị khởi tạo của biến i=n
. Sau đó, mỗi lần lặp sẽ gán lại i=i/10
. Trong vòng lặp lệnh tính tổng sum += i%10;
sẽ được thực thi. Vòng lặp for chỉ dừng khi i=0
.
3. Sử dụng vòng lặp do…while
Nếu bạn sử dụng do...while
để tính tổng các chữ số của một số nguyên thì cách thực hiện hoàn toàn giống while về điều kiện dừng, cách tính tổng, cách chia số nguyên cho 10.
#include <iostream>
using namespace std;
int main() {
int n, sum=0;
cout << "Nhap vao mot so nguyen: ";
cin >> n;
do {
sum += n % 10;
n /= 10;
} while (n != 0);
cout << "Tong cac chu so cua so nguyen la: " << sum << endl;
return 0;
}
4. Sử dụng hàm đệ quy
Ngoài sử dụng vòng lặp, chúng ta có thể sử dụng hàm đệ quy để tính tổng các chữ số của một số nguyên. Xem đoạn chương trình C++ bên dưới:
#include <iostream>
using namespace std;
int sumOfDigits(int n) {
if (n == 0) {
return 0;
}
return n%10 + sumOfDigits(n/10);
}
int main() {
int n;
cout << "Nhap vao mot so nguyen: ";
cin >> n;
cout << "Tong cac chu so cua so nguyen la: " << sumOfDigits(n) << endl;
return 0;
}
Trong chương trình trên, chúng ta sử dụng hàm sumOfDigits
để tính tổng các chữ số. Hàm này lấy một số nguyên làm tham số và sử dụng đệ quy để chia số đó cho 10. Nếu tham số của hàm
bằng 0 thì sumOfDigits
return 0
. Đây là điều kiện dừng của hàm đệ quy.
Trong hàm main
, chúng ta nhập một số nguyên dương từ người dùng và gọi hàm
để tính số chữ số. Sau đó, chúng ta in ra kết quả.sumOfDigits