LATEST

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é.

Số đối xứng là một số mà khi chúng ta đảo ngược số đó vẫn giữ nguyên giá trị của nó.

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ả:

bai8 01 png

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ả:

bai8 02 png

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ả:

bai8 03 png

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ả:

bai8 04 png

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.

Cùng chuyên mục:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top