LATEST

Bài tập vòng lặp while trong C / C++

Trong bài viết này, codehow sẽ hướng dẫn các bạn giải các bài tập vòng lặp while trong C / C++. Ở các bài trước chúng ta đã học lý thuyết về vòng lặp while, do...while, vậy nên bây giờ chúng ta cần thực hành để có thể hiểu rõ hơn và nhớ lâu hơn.

Mình sẽ thực hiện giải các bài toán bằng hai ngôn ngữ khác nhau là C và C++. Ở mỗi bài, mình sẽ kết hợp giữa hai vòng lặp while và do...while luôn nhé.

Bài tập 1 vòng lặp while trong C / C++

Đề bài: Viết chương trình yêu cầu người dùng nhập vào một số lớn hơn 2, nếu nhập số nhỏ hơn 2 thì yêu cầu nhập lại. Sử dụng vòng lặp while trong C / C++ để tạo điều kiện và hiển thị các số chẵn từ 1 đến số mà người dùng nhập ra màn hình.

Ví dụ người dùng nhập vào là 100 thì hiển thị các số chẵn từ 1 đến 100.

Gợi ý:

  • Khai báo biến n và yêu cầu người dùng nhập giá trị cho n. Sử dụng vòng lặp do...while để tạo điều kiện n > 2, nếu nhỏ hơn 2 thì yêu cầu nhập lại.
  • Sử dụng vòng lặp while để tạo điều kiện kiểm tra các số chẵn từ 1 đến n.
  • Hiển thị các số chẵn ra màn hình.

Chương trình C:

#include <stdio.h>
#include <stdbool.h>
int main(void) {
  int n, i = 2;
  do{
    printf("Nhập vào số n lớn hơn 2: ");
    scanf("%d", &n);
  }while(n < 2);
  printf("Các số chẵn từ 1 đến %d là: ", n);
  while(i <= n){
    printf("%d ", i);
    i += 2;
  }
  
  printf("\n-------------------------\n");
  printf("Chương trình này được đăng tại codehow.net");
  return 0;
}

Kết quả:

bai19 08 png

Chương trình C++:

#include <iostream>
#include <math.h>
using namespace std;

int main() {
  int n, i = 2;
  do{
    cout<<"Nhập vào số n lớn hơn 2: ";
  cin>>n;
  }while(n < 2);
  cout<<"Các số chẵn từ 1 đến "<<n<<" là: ";
  while(i <= n){
    cout<<i<<" ";
    i += 2;
  }
  cout<<"\n-------------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai19 07 png

Bài tập 2 vòng lặp while trong C / C++

Ở bài này, chúng ta sẽ thao tác với mảng trong C / C++ nhé.

Đề bài: Viết chương trình yêu cầu người dùng nhập vào độ dài n của mảng với điều kiện n > 0. Nếu n <= 0 thì yêu cầu nhập lại. Sử dụng vòng lặp while trong C / C++ để nhập và in các giá trị trong mảng.

Gợi ý:

  • Khai báo mảng với độ dài n do người dùng nhập vào. Sử dụng vòng lặp do...while với điều kiện n > 0.
  • Sử dụng vòng lặp while thứ nhất với điều kiện i < n (độ dài của mảng), bên trong vòng lặp yêu cầu người dùng nhập vào các phần tử cho mảng.
  • Sử dụng vòng lặp while thứ hai với điều kiện i < n để in các phần tử trong mảng ra màn hình.

Chương trình C:

#include <stdio.h>
#include <stdbool.h>
int main(void) {
  int n;
  do{
    printf("Nhập vào số phần tử của mảng (lớn hơn 0): ");
    scanf("%d", &n);
  }while(n <= 0);
  
  int numbers[n];
  printf("Nhập các phần tử cho mảng.\n");
  int i = 0;
  //nhập các phần tử
  while (i < n){
    printf("Nhập phần tử thứ %d : ", i + 1);
    scanf("%d",&numbers[i]);
    i++;
  }
  i = 0;
  //in các phần tử
  printf("Các phần tử trong mảng là: ");
  do {
    printf("%d ", numbers[i]);
    i++;
  } while (i < n);
  
  printf("\n-------------------------\n");
  printf("Chương trình này được đăng tại codehow.net");
  return 0;
}

Kết quả:

bai19 06 png

Chương trình C++:

#include <iostream>
#include <math.h>
using namespace std;

int main() {
  int n;
  do{
    cout<<"Nhập vào số phần tử của mảng (lớn hơn 0): ";
  cin>>n;
  }while(n <= 0);
  
  int numbers[n];
  cout << "Nhập các phần tử cho mảng." << endl;
  int i = 0;
  //nhập các phần tử
  while (i < n){
    cout << "Nhập phần tử thứ " << i + 1 << ": ";
    cin >> numbers[i];
    i++;
  }
  i = 0;
  //in các phần tử
  cout<<"Các phần tử trong mảng là: ";
  do {
    cout << numbers[i] << " ";
    i++;
  } while (i < n);

  cout<<"\n-------------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai19 05 png

Bài tập 3 vòng lặp while trong C / C++

Đề bài: Viết chương trình yêu cầu người dùng nhập vào một số nguyên n bất kỳ, điều kiện n > 0, nếu n < 0 thì yêu cầu nhập lại. Sau đó in số đó ra màn hình cho đến khi người dùng nhập số 0 (nghĩa là nhập số 0 để thoát chương trình).

Gợi ý: Trong bài toán này chúng ta nên sử dụng vòng lặp while vì không biết trước số lần lặp là bao nhiêu.

  • Khai báo biến n và yêu cầu người dùng nhập vào từ bàn phím. Sử dụng vòng lặp do...while để tạo điều kiện n > 0, nếu n < 0 thì yêu cầu nhập lại.
  • Sử dụng vòng lặp while để in giá trị được nhập bởi người dùng. Cứ lặp lại cho đến khi người dùng nhập số 0 (nghĩa là n = 0).

Chương trình C:

#include <stdio.h>
#include <stdbool.h>
int main(void) {
  int num;
    while (true){
      printf("Nhập vào một số bất kì, nhập số 0 để thoát: ");
      scanf("%d", &num);
      if (num == 0){
        printf("Goodbye!!!");
        break;
      }
      else {
        printf("Số bạn vừa nhập là: %d\n", num);
      }
    }

  printf("\n-------------------------\n");
  printf("Chương trình này được đăng tại codehow.net");
  return 0;
}

Kết quả:

bai19 04 png

Chương trình C++:

#include <iostream>
#include <math.h>
using namespace std;

int main() {
  int num;
    while (true){
      cout << "Nhập vào một số bất kì, nhập số 0 để thoát: ";
      cin >> num;
      if (num == 0){
        cout<<"Goodbye!!!";
        break;
      }
      else {
        cout << "Số bạn vừa nhập là: " << num << endl;
      }
    }

  cout<<"\n-------------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai19 03 png

Bài tập 4 vòng lặp while trong C / C++

Ở bài này, chúng ta sẽ thực hiện một chương trình phức tạp hơn một tý, hãy cùng theo dõi nhé.

Đề bài:

  • Viết chương trình yêu cầu người dùng nhập vào hai số a lớn hơn 0, nếu <= 0 thì yêu cầu nhập lại.
  • Sử dụng vòng lặp do...while để tạo menu hiển thị các yêu cầu: In các số chẵn từ 1 đến a, in các số lẽ từ 1 đến a, in các số nguyên tố từ 1 đến a, nhấn các số khác ngoài menu để thoát.
  • Sử dụng vòng lặp for và while để thực hiện các yêu cầu theo menu.

Gợi ý:

  • Khai báo biến a và yêu cầu người dùng nhập vào một số a > 0, nếu <= 0 thì yêu cầu nhập lại.
  • Sử dụng vòng lặp do...while để tạo menu như đề bài yêu cầu.
  • In các số chẵn, lẻ và các số nguyên tố ta sử dụng vòng lặp while và for để xử lý.
  • Ở mỗi case sẽ hiển thị kết quả ra màn hình.

Chương trình C:

#include <stdio.h>
#include <math.h>
#include <stdbool.h>
int main(void) {
  int a, i = 1;
  bool flag;
  do{
    printf("Vui lòng nhập vào số a lớn hơn 0: ");
    scanf("%d", &a);
  }while(a <= 0);

  int selection;
  do{
    printf("-------Menu-------- \n");
		printf("1) In các số chẵn.\n");
		printf("2) In các số lẻ.\n");
		printf( "3) In các số nguyên tố\n");
		printf("4) Nhấn số khác để thoát.\n");
		printf("Nhập lựa chọn của bạn: ");
    scanf("%d", &selection);
    if(selection == 1){
      printf("Các số chẵn là: ");
      i = 2;
      while(i <= a){
        printf("%d ", i);
        i += 2;
      }
    }
    else if(selection == 2){
      printf("Các số lẻ là: ");
      i = 1;
      while(i <= a){
        printf("%d ", i);
        i += 2;
      }
    }
    else if(selection == 3){
      printf("Các số nguyên tố là: ");
      for (int i = 1; i <= a; i++){
        //KHởi tạo giá trị ban đầu cho biến flag
        flag = true;
        // Nêu i < 2 thì không phải là số nguyên tố
        if (i < 2){
          flag = false;
        }
        // Nếu i = 2 thì đó là số nguyên tố
        else if (i == 2){
          flag = true;
        }
        // Nếu i chia hết cho 2 thì không phải số nguyên tố  
        else if (i % 2 == 0){
          flag = false;
        }
        else{
          //Lặp các số từ 3 đến n - 1, nếu i chia hết cho số nào thì không phải số nguyên tố
          for (int j = 3; j < i; j += 2){
            if (i % j == 0){
              flag = false;
              break;
            }
          }
        }
        //In số nguyên tố ra màn hình
        if (flag){
          printf("%d ", i);
        }
      }
    }
    else{
      break;
    }
  }while(selection < 1|| selection > 3 );

  printf("\n-------------------------\n");
  printf("Chương trình này được đăng tại codehow.net");
  return 0;
}

Kết quả:

bai19 02 png

Chương trình C++:

#include <iostream>
#include <math.h>
using namespace std;

int main() {
  int a, i = 1;
  bool flag;
  do{
    cout<<"Vui lòng nhập vào số a lớn hơn 0: ";
    cin>>a;
  }while(a <= 0);

  int selection;
  do{
    cout << "-------Menu-------- \n";
    cout << "1) In các số chẵn.\n";
    cout << "2) In các số lẻ.\n";
    cout << "3) In các số nguyên tố\n";
   cout << "4) Nhấn số khác để thoát.\n";
   cout << "Nhập lựa chọn của bạn: ";
    cin>>selection;
    if(selection == 1){
      cout<<"Các số chẵn là: ";
      i = 2;
      while(i <= a){
        cout<<i<<" ";
        i += 2;
      }
    }
    else if(selection == 2){
      cout<<"Các số lẻ là: ";
      i = 1;
      while(i <= a){
        cout<<i<<" ";
        i += 2;
      }
    }
    else if(selection == 3){
      cout<<"Các số nguyên tố là: ";
      for (int i = 1; i <= a; i++){
        //KHởi tạo giá trị ban đầu cho biến flag
        flag = true;
        // Nêu i < 2 thì không phải là số nguyên tố
        if (i < 2){
          flag = false;
        }
        // Nếu i = 2 thì đó là số nguyên tố
        else if (i == 2){
          flag = true;
        }
        // Nếu i chia hết cho 2 thì không phải số nguyên tố  
        else if (i % 2 == 0){
          flag = false;
        }
        else{
          //Lặp các số từ 3 đến n - 1, nếu i chia hết cho số nào thì không phải số nguyên tố
          for (int j = 3; j < i; j += 2){
            if (i % j == 0){
              flag = false;
              break;
            }
          }
        }
        //In số nguyên tố ra màn hình
        if (flag){
          cout << i << " ";
        }
      }
    }
    else{
      break;
    }
  }while(selection < 1|| selection > 3 );

  cout<<"\n-------------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai19 01 png

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn