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:

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