SIMPLE
STRING
ARRAY
SORTING
POINTER
CALCULATION
NUMBER
OTHER
C
BÀI TẬP C
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

[Bài tập C] Đảo ngược một dãy số bằng đệ quy và vòng lặp while

Trong bài này chúng ta sẽ giải bài toán "đảo ngược một số" trong C bằng cách sử dụng đệ quy và vòng lặp while. Làm theo hướng dẫn này bạn hiểu được hai cách giải:

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
  • Sử dụng đệ quy
  • Sử dụng vòng lặp while

Đảo ngược một số bằng đệ quy

Trong chương trình này, tôi đang gọi một hàm do người dùng định nghĩa là reverse_function, hàm này đang tự gọi đệ quy vì nó gọi đến chính nó.

Để tránh bị đệ quy vô hạn thì bạn phải có điều kiện dừng, như trong bài này là dừng khi số cần xử lý bằng 0. Bài giải như sau:

#include<stdio.h>
int main(){
   int num,reverse_number;

   //User nhap so can dao nguoc
   printf("\nNhap mot so bat ki:");
   scanf("%d", &num);

   //Goi ham de quy
   reverse_number = reverse_function(num);
   printf("\nSau khi dao nguoc :%d", reverse_number);
   return 0;
}

int reverse_function(int num){
   int sum = 0, rem;
   if(num){
      rem = num % 10;
      sum = (sum*10) + rem;
      reverse_function(num/10);
   }
   else
      return sum; // điều kiện dừng
   return sum;
}

Kết quả: Giả sử bạn nhập số 23456.

Bài viết này được đăng tại [free tuts .net]

Nhap mot so bat ki: 23456
Sau khi dao nguoc: 65432

Đảo ngược một số bằng vòng lặp While

Trong chương trình trên, chúng ta đã học cách đảo ngược một số bằng hàm đệ quy. Ở đây chúng ta sẽ tìm hiểu làm thế nào để làm điều đó bằng cách sử dụng vòng lặp while.

#include<stdio.h>
int main()
{
   int num,rem,reverse_num=0;
   //Input number
   printf("\nNhap mot so bat ki:");
   scanf("%d",&num);

   while(num>=1)
   {
      rem = num % 10;
      reverse_num = reverse_num * 10 + rem;
      num = num / 10;
   }

   printf("\nSo sau khi dao nguoc la: %d", reverse_num);
   return 0;
}

Kết quả: Giả sử ta nhập số 49212.

Nhap mot so bat ki: 49212
So sau khi dao nguoc la: 21294

Lưu ý: Để lấy số cuối cùng thì ta sẽ chia lấy dư cho 0.

Ví dụ để lấy số cuối của dãy 2312 thì ta lấy 2312 % 10 = 2,

Cùng chuyên mục:

[STL] Cách tìm kiếm và xóa phần tử của một container trong C++

[STL] Cách tìm kiếm và xóa phần tử của một container trong C++

[STL] Cách sắp xếp một vector trong C++

[STL] Cách sắp xếp một vector trong C++

[STL] So sánh giữa Map và Unordered Map trong C++

[STL] So sánh giữa Map và Unordered Map trong C++

[STL] So sánh giữa Vector và List trong C++

[STL] So sánh giữa Vector và List trong C++

[STL] Sử dụng Algorithm trong C++

[STL] Sử dụng Algorithm trong C++

[STL] Sử dụng Set trong C++

[STL] Sử dụng Set trong C++

Chuyển đổi một số nguyên thành dạng số La Mã trong C

Chuyển đổi một số nguyên thành dạng số La Mã trong C

Kiểm tra một số có phải là số Armstrong hay không trong C

Kiểm tra một số có phải là số Armstrong hay không trong C

Tính giai thừa của một số lớn trong C

Tính giai thừa của một số lớn trong C

Tính tổng các ước số của một số nguyên trong C

Tính tổng các ước số của một số nguyên trong C

Tính tổng các số nguyên trong một mảng sử dụng con trỏ trong C

Tính tổng các số nguyên trong một mảng sử dụng con trỏ trong C

Sử dụng con trỏ để sắp xếp một mảng số nguyên một cách tăng dần trong C

Sử dụng con trỏ để sắp xếp một mảng số nguyên một cách tăng dần trong C

Sử dụng con trỏ để tìm vị trí của một phần tử trong mảng trong C

Sử dụng con trỏ để tìm vị trí của một phần tử trong mảng trong C

Sắp xếp một mảng số nguyên sao trong C

Sắp xếp một mảng số nguyên sao trong C

Sắp xếp một mảng chuỗi theo thứ tự từ điển sử dụng thuật toán radix sort trong C

Sắp xếp một mảng chuỗi theo thứ tự từ điển sử dụng thuật toán radix sort trong C

Sắp xếp một mảng số nguyên sử dụng thuật toán heap sort trong C

Sắp xếp một mảng số nguyên sử dụng thuật toán heap sort trong C

Tìm phần tử lớn thứ k trong mảng với thuật toán Quickselect trong C

Tìm phần tử lớn thứ k trong mảng với thuật toán Quickselect trong C

Chia một mảng thành các phần con có độ dài bằng nhau trong C

Chia một mảng thành các phần con có độ dài bằng nhau trong C

Tìm tất cả các phần tử lớn hơn một số x trong mảng trong C

Tìm tất cả các phần tử lớn hơn một số x trong mảng trong C

Kiểm tra mảng có phải là một dãy số Fibonacci hay không trong C

Kiểm tra mảng có phải là một dãy số Fibonacci hay không trong C

Top