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