Kiểm tra số đối xứng trong C / C++
Trong bài viết này, codehow sẽ hướng dẫn các bạn cách kiểm tra số đối xứng trong C / C++. Đây là dạng bài tập thường gặp khi các bạn bắt đầu học bất kỳ một ngôn ngữ lập trình nào.
Để hiểu được chương trình, các bạn cần có kiến thức về câu điều kiện if...else trong C / C++, mình đã có hướng dẫn trong serries học lập trình C / C++.
Trước khi đi vào viết chương trình, các bạn hãy cùng mình tìm hiểu về số đối xứng là gì? Ví dụ về số đối xứng đã nhé.
Ví dụ: mình có số 123321 là một số đối xứng, vì khi đảo ngược số này thì vẫn giữ nguyên là 123321 mà thôi.
Vậy làm thế nào để viết được chương trình kiểm tra số đối xứng trong C / C++, hãy bắt đầu cùng mình thôi nhé.
Kiểm tra số đối xứng trong C / C++
Trước khi viết chương trình, các bạn hãy xem qua thuật toán kiểm tra số đối xứng trong C / C++ dưới đây đã nhé.
int num, reverse_num=0, remainder,temp; temp=num; while(temp!=0) { remainder=temp%10; reverse_num=reverse_num*10+remainder; temp/=10; }
Giải thích thuật toán:
Mình có biến num là số cần kiểm tra, biến temp là một bản sao của biến num (được dùng để tính toán thay cho biến num). Biến remainder là giá trị sau khi một vòng lặp được chạy, biến reverse_num là giá trị đối xứng.
- Đầu tiên mình sẽ gán giá trị từ num cho biến temp, lúc này ta sẽ lấy biến temp để tính toán thay cho biến num.
- Sử dụng vòng lặp while để lặp cho đến khi temp = 0.
Giả sử mình có số 121, khi này thuật toán sẽ chạy như sau:
- Vòng lặp 1
- remainder = temp % 10 = 121 % 10 = 1.
- reverse_num = reverse_num * 10 + remainder = 0 * 10 + 1 = 1.
- temp = tem / 10 = 121 / 10 = 12.
- Vòng lặp 2
- remainder = 12 % 10 = 2.
- reverse_num = 1 * 10 + 2 = 12.
- temp = 12 / 10 = 1.
- Vòng lặp 3
- remainder = 1 % 10 = 1.
- reverse_num = 12 * 10 + 1 = 121.
- temp = 1 / 10 = 0.
Khi này temp = 0 thì vòng lặp sẽ kết thúc, lúc này biến reverse_num = num = 121. Nhu vậy số 121 chính là số đối xứng.
Dưới đây là chương trình kiểm tra số đối xứng trong C / C++, các bạn có thể tham khảo nhé.
Chương trình C:
#include <stdio.h> int main(void) { int num, reverse_num=0, remainder,temp; printf("Nhập vào một số: "); scanf("%d", &num); temp=num; while(temp!=0) { remainder=temp%10; reverse_num=reverse_num*10+remainder; temp/=10; } if(reverse_num==num) printf("%d là số đối xứng", num); else printf("%d không phải là số đối xứng", num); printf("\n-------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> using namespace std; int main() { int num, reverse_num=0, remainder,temp; cout<<"Nhập vào một số: "; cin>>num; temp=num; while(temp!=0) { remainder=temp%10; reverse_num=reverse_num*10+remainder; temp/=10; } if(reverse_num==num) cout<<num<<" là số đối xứng"; else cout<<num<<" không phải là số đối xứng"; cout<<"\n----------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; }
Kết quả:
Kiểm tra số đối xứng trong C / C++ sử dụng hàm đệ quy
Trong chương trình này mình sẽ tạo một hàm đệ quy để kiểm tra số đối xứng trong C / C++. Điều này sẽ tối ưu hơn rất nhiều khi chúng ta có thể tái sử dụng hàm bất kì khi nào chúng ta muốn.
Chương trình C:
#include <stdio.h> int check_palindrome(int num){ static int reverse_num=0,rem; if(num!=0){ rem=num%10; reverse_num=reverse_num*10+rem; check_palindrome(num/10); } return reverse_num; } int main(void) { int num, reverse_num=0, remainder,temp; printf("Nhập vào một số: "); scanf("%d", &num); reverse_num = check_palindrome(num); if(reverse_num==num) printf("%d là số đối xứng", num); else printf("%d không phải là số đối xứng", num); printf("\n-------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> using namespace std; int check_palindrome(int num){ static int reverse_num=0,rem; if(num!=0){ rem=num%10; reverse_num=reverse_num*10+rem; check_palindrome(num/10); } return reverse_num; } int main(){ int num, reverse_num; cout<<"Nhập vào một số: "; cin>>num; reverse_num = check_palindrome(num); if(num==reverse_num) cout<<num<<" là số đối xứng"; else cout<<num<<" không phải là số đối xứng"; cout<<"\n----------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; }
Kết quả:
Như vậy là chúng ta đã cùng nhau tìm hiểu về cách kiểm tra số đối xứng trong C / C++. Trong serries bài tập C / C++ codehow có rất nhiều dạng bài tập, các bạn có thể tham khảo nhé. Cảm ơn các bạn rất nhiều.