Bài tập lập trình c so dao nguoc

Viết chương trình C++ để nhập một số nguyên và in kết quả ra màn hình dưới dạng số đảo ngược (về thứ tự) của số nguyên vừa nhập đó.

Lời giải

Dưới đây là chương trình C++ để giải bài tập trên. Bạn sử dụng vòng lặp DO-WHILE để đảo ngược số nguyên vừa nhập, sau đó sử dụng lệnh count để in kết quả ra màn hình.

Quảng cáo

include

include

using namespace std; int main() { long int so1,so2,sodaonguoc=0; cout << "Nhap mot so nguyen : " << endl; cin>>so1; so2=so1; do { sodaonguoc=sodaonguoc*10; int digit=so1%10; sodaonguoc+=digit; so1/=10; } while(so1); cout << "So nguyen ban da nhap la " << so2 << "." << endl; cout << "So nguyen dao nguoc la " << sodaonguoc << "." << endl; return 0; }

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Quảng cáo

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Bài tập lập trình c so dao nguoc

Bài tập lập trình c so dao nguoc

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Yêu cầu bài tập là với một chuỗi dài, ví dụ Toi Yeu Lap Trinh, bạn đảo ngược các ký tự của từng từ của chuỗi đó, thành ioT ueY paL hnirT.

Lời giải

Dưới đây là chương trình C để giải bài tập đảo ngược các ký tự của từng từ cua một chuỗi trong C:

`

include

include

/

  • ham tinh do dai cua chuoi / int string_length(char s[]) { int i=0; while(s[i]!='\0')
      i++;  
    
    return i; } /*
  • ham dao nguoc chuoi / void string_reverse(char str[]) { int i, j, len; char ch; j = len = string_length(str) - 1; i = 0; while(i < j) {
      ch = str[j];  
      str[j] = str[i];  
      str[i] = ch;  
      i++;  
      j--;  
    
    } } /*
  • ham main */ int main (void) { char s1[] = "Toi Yeu Lap Trinh"; char reverse[100]=""; char temp[50]; int i, j, n; n = string_length(s1); for(i = 0; i < n; i++) {
      for(j = 0; i < n && s1[i]!=' '; ++i,++j) {  
         temp[j] = s1[i];  
      }  
      temp[j] = '\0';  
      string_reverse(temp);  
      strcat(reverse, temp);  
      strcat(reverse, " ");  
    
    } printf("Chuoi ban dau:\n %s", s1); printf("\nChuoi sau khi da dao nguoc:\n %s",reverse); return 0; }`

Chạy chương trình C trên cho kết quả như sau:

Bài tập lập trình c so dao nguoc

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.

Bài tập lập trình c so dao nguoc

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

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

Nhap vao mot so nguyen: 1901
So dao nguoc: 1091

0 (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:

numnum!=0phần dưreversedNum1901true10 * 10 + 1 = 1190true01 * 10 + 0 = 1019true910 * 10 + 9 = 1091true1109 * 10+1 = 10910false–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 
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

Trong chương trình trên, mảng

Nhap vao mot so nguyen: 1901
So dao nguoc: 1091

1 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

Nhap vao mot so nguyen: 1901
So dao nguoc: 1091

1 và in các chữ số ra để hiển thị được số đảo ngược.

Lưu ý: Khi khai báo mảng

Nhap vao mot so nguyen: 1901 So dao nguoc: 1091

4 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 

# include 

# include 
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.