Giả sử, ta có một số nguyên dương 1901. Số đảo ngược của số nguyên dương này sẽ là 1091. Trong bài này, chúng ta sẽ sử dụng C++ để tìm số đảo ngược của một số nguyên dương.
1. Sử dụng phép toán số học và vòng lặp while
Đoạn code bên dưới sử dụng các phép toán số học và vòng lặp while để đảo ngược một số nguyên trong C++.
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++.
#include <iostream>
using namespace std;
int main() {
int num;
cout << "Nhap vao mot so nguyen: ";
cin >> num;
int reversedNum = 0;
while (num != 0) {
int digit = num % 10; // Lay chu so cuoi cung
reversedNum = reversedNum * 10 + digit;
num /= 10; // Loai bo chu so cuoi cung
}
cout << "So dao nguoc: " << reversedNum <<endl;
return 0;
}
Kết quả
Nhap vao mot so nguyen: 1901
So dao nguoc: 1091
Chương trình trên yêu cầu người dùng nhập một số nguyên và lưu nó vào biến num
. Sau đó, vòng lặp while được lặp lại cho đến khi num != 0
là sai. Trong mỗi lần lặp, chúng ta lấy chữ số cuối cùng của num
bằng cách lấy phần dư của phép chia num
cho 10, tính giá trị số đảo ngược reversedNum
. Sau đó, gán num=num/10
(tức là num giảm đi 10 lần).
Hãy xem các bước chạy chi tiết chương trình bên dưới:num num!=0 phần dư reversedNum 1901 true 1 0 * 10 + 1 = 1 190 true 0 1 * 10 + 0 = 10 19 true 9 10 * 10 + 9 = 109 1 true 1 109 * 10+1 = 1091 0 false – dừng vòng lặp
2. Sử dụng mảng (array)
Một cách khác là chúng ta có thể sử dụng mảng (array) để lưu các chữ số trong số nguyên cần đảo ngược. Với cách này, chúng ta sẽ in ra từng chữ số đảo ngược của số nguyên chứ không tính ra giá trị của số đảo ngược.
#include <iostream>
using namespace std;
int main() {
int num;
cout << "Nhap vao mot so nguyen: ";
cin >> num;
int arr[10], i = 0;
while (num != 0) {
arr[i] = num % 10;// Lay chu so cuoi cung
num /= 10; // Loai bo chu so cuoi cung
i++;//tang bien index cho mang arr
}
cout << "So dao nguoc: ";
for (int j = 0; j<i; j++) {
cout << arr[j];
}
return 0;
}
Trong chương trình trên, mảng arr
giúp lưu các chữ số cuối cùng đến đầu tiên của số nguyên num
. Chúng ta chỉ cần duyệt mảng arr
và in các chữ số ra để hiển thị được số đảo ngược.
Lưu ý: Khi khai báo mảng
arr[10]
thì mảng này chỉ lưu tối đa được 10 chữ số mà thôi. Các bạn có thể khai báo mảng với nhiều hoặc ít phần tử hơn tùy yêu cầu.
3. Sử dụng chuỗi (string)
Chúng ta hoàn toàn có thể chuyển số nguyên thành chuỗi. Sau đó, sử dụng các hàm trên chuỗi để đảo ngược chuỗi.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int num;
cout << "Nhap vao mot so nguyen: ";
cin >> num;
// Chuyen so thanh chuoi
string numString = to_string(num);
// Dao nguoc chuoi
reverse(numString.begin(), numString.end());
// Chuyen chuoi thanh so
int reversedNum = stoi(numString);
cout << "So dao nguoc: " << reversedNum;
return 0;
}
Lưu ý: Nếu gặp các lỗi như bên dưới thì các bạn nên kiểm tra xem trình biên dịch C++ của mình có hỗ trợ C++ 11 hay không nhé.
In function 'int main()': [Error] 'to_string' was not declared in this scope [Error] 'stoi' was not declared in this scope
Các bạn có thể sử dụng các trình biên dịch C++ online để chạy chương trình.
Các ví dụ trong bài này áp dụng cho số nguyên dương. Nếu bạn muốn xử lý số âm hoặc số thực, bạn cần thực hiện các xử lý bổ sung.