- Biết cách sử dụng vòng lặp while
- Biết cách sử dụng vòng lặp do while
LÝ THUYẾT:
- Biết cách sử dụng vòng lặp do while
LÝ THUYẾT:
while
/*
int ra màn hình 10 chữ Hello
*/
#include<stdio.h>
int main()
{
int i;
i = 0;
while (i < 10) { //khi i < 10
printf("\nHello %d", i); // xuất ra dòng chữ Hello
i++; // tăng i lên 1 đơn vị
}
}
/*
int ra màn hình 10 chữ Hello
*/
#include<stdio.h>
int main()
{
int i;
for (i = 0 ; i < 10 ; i++) { // tương tự như while, biến khởi tạo, điều kiện, bước nhảy nằm trên 1 dòng lệnh
printf("\nHello %d", i);
}
}
Cách chuyển đổi while sang for
do - while
Ví dụ:
#include<stdio.h>
int main()
{
int a;
a = 6;
do {
printf("\nHello %d", a);
a++;
} while (a < 3); // điều kiện là a = 3, tuy nhiên chương trình vẫn in dữ liệu ra ngay cả a = 6
}
Khác nhau while và do while
break - continue
Ví dụ:
/*
int ra màn hình 10 chữ Hello
tuy nhiên gặp break nó phải thoát ra khỏi vòng lặp
Kết quả:
Hello 0
Hello 1
Hello 2
Hello 3
*/
#include<stdio.h>
int main()
{
int i;
for (i = 0 ; i < 10 ; i++) {
if (i == 4) // nếu i = 4 thì
break; // thoát ra khỏi vòng lặp gần nó nhất
printf("\nHello %d", i);
}
}
Continue: Câu lệnh continue lệnh ngắt/bỏ qua một lần lặp và không thực hiện khối lệnh phía sau nó (trong vòng lặp), nếu một điều kiện cụ thể xảy ra và tiếp tục với lần lặp tiếp theo trong vòng lặp.
Ví dụ:
/*
int ra màn hình 10 chữ Hello
tuy nhiên gặp continue nó bỏ qua không thực hiện lệnh sau đó mà quay lại vòng lặp
Kết quả:
Hello 0
Hello 1
Hello 2
Hello 3
Hello 5
Hello 6
Hello 7
Hello 8
Hello 9
*/
#include<stdio.h>
int main()
{
int i;
for (i = 0 ; i < 10 ; i++) {
if (i == 4) // nếu i = 4 thì
continue; // không in dòng Hello mà quay lại vòng lặp
printf("\nHello %d", i);
}
}
goto
goto: Câu lệnh goto cung cấp một bước
nhảy vô điều kiện
đến một câu lệnh có nhãn trong cùng một hàm
Bài 1: Tính trung bình tổng các số tự nhiên chia hết cho 2
Input: nhập từ bàn phím 2 giá trị min, max
Output: Trung bình tổng của các số tự nhiên chia hết cho 2 từ min tới max
Bài 2: Xác định số nhập vào có phải là số nguyên tố hay không
Output: Trung bình tổng của các số tự nhiên chia hết cho 2 từ min tới max
Bài 2: Xác định số nhập vào có phải là số nguyên tố hay không
Input: Nhập vào từ bàn phím số x
Output: Kết luận x có phải là số nguyên tố hay không
Biết rằng: Số nguyên tố là số chỉ chia hết cho 1 và chính nó.
Output: Kết luận x có phải là số nguyên tố hay không
Biết rằng: Số nguyên tố là số chỉ chia hết cho 1 và chính nó.
Bài 3: Xây dựng chương trình xây dựng số chính phương
Input: Nhập vào từ bàn phím số x
Output: Kết luận x có phải là số chính phƣơng hay không?
Biết rằng: Số chính phƣơng là một số mà giá trị của nó là bình phƣơng của một số tự nhiên. (ví dụ: 9 = 3 x 3; 16 = 4 x 4; 25 = 5 x 5; 1,000,000 = 1,000 x 1,000)
Output: Kết luận x có phải là số chính phƣơng hay không?
Biết rằng: Số chính phƣơng là một số mà giá trị của nó là bình phƣơng của một số tự nhiên. (ví dụ: 9 = 3 x 3; 16 = 4 x 4; 25 = 5 x 5; 1,000,000 = 1,000 x 1,000)
Bài 4: Xây dựng menu cho 3 bài tập trên
Yêu cầu:
- Nếu người dùng nhập từ bàn phím số 1: -> Chạy chương trình bài 1
- Nếu người dùng nhập từ bàn phím số 2: -> Chạy chƣơng trình bài 2
- Nếu người dùng nhập từ bàn phím số 3: -> Chạy chƣơng trình bài 3
- Nếu người dùng nhập từ bàn phím số 4: -> Thoát khỏi chương trình
- Nếu người dùng nhập từ bàn phím số khác: Hiển thị menu như cũ
Gợi ý: Sử dụng vòng lặp do while kết hợp với cách tạo menu thông thường để làm bài tập số 4
THỰC HIỆN:
Bài 2: Xác định số nhập vào có phải là số nguyên tố hay không
Xong!
- Nếu người dùng nhập từ bàn phím số 1: -> Chạy chương trình bài 1
- Nếu người dùng nhập từ bàn phím số 2: -> Chạy chƣơng trình bài 2
- Nếu người dùng nhập từ bàn phím số 3: -> Chạy chƣơng trình bài 3
- Nếu người dùng nhập từ bàn phím số 4: -> Thoát khỏi chương trình
- Nếu người dùng nhập từ bàn phím số khác: Hiển thị menu như cũ
Gợi ý: Sử dụng vòng lặp do while kết hợp với cách tạo menu thông thường để làm bài tập số 4
THỰC HIỆN:
Bài 1: Tính trung bình tổng các số tự nhiên chia hết cho 2
Input: nhập từ bàn phím 2 giá trị min, max
Output: Trung bình tổng của các số tự nhiên chia hết cho 2 từ min tới max
Output: Trung bình tổng của các số tự nhiên chia hết cho 2 từ min tới max
code:
/*
Bài 1: Tính trung bình tổng các số tự nhiên chia hết cho 2
Input: nhập từ bàn phím 2 giá trị min, max
Output: Trung bình tổng của các số tự nhiên chia hết cho 2 từ min tới max
*/
#include<stdio.h>
int main()
{
int min, max;
int tong = 0, trungBinhTong = 0;
int bienDem = 0;
printf("Nhap vao so min: ");
scanf("%d", &min);
printf("Nhap vao so max: ");
scanf("%d", &max);
int i = min;
while (i <= max)
{
if (i % 2 == 0) // chia lấy dư
{
tong = tong + i; // tong +=i
bienDem ++; // tăng biến đếm lên 1
}
i ++; // tăng i lên 1, đây là điều kiện dừng nếu không tăng thì chương trình lặp vô hạn
}
trungBinhTong = tong/bienDem;
printf("\n============================\n");
printf("Trung binh tong so chia het cho 2 la: %d", trungBinhTong);
}
Bài 2: Xác định số nhập vào có phải là số nguyên tố hay không
Input: Nhập vào từ bàn phím số x
Output: Kết luận x có phải là số nguyên tố hay không
Biết rằng: Số nguyên tố là số chỉ chia hết cho 1 và chính nó.
Output: Kết luận x có phải là số nguyên tố hay không
Biết rằng: Số nguyên tố là số chỉ chia hết cho 1 và chính nó.
code:
/*
Kiểm tra nguyên tố
Input: Nhập vào từ bàn phím số x
Output: Kết luận x có phải là số nguyên tố hay không
Biết rằng: Số nguyên tố là số chỉ chia hết cho 1 và chính nó (phải đảm bảo 2 điều kiện).
*/
#include<stdio.h>
int main(){
int x;
int bienDem = 0;
// bool kiemTra = true; // giả thiết số nhập vào là số nguyên tố
printf("Nhap vao so can kiem tra X: ");
scanf("%d", &x);
for (int i = 2; i < x; i++){
if (x % i == 0)
{
bienDem ++; // mục đích là đánh dấu số chia hết i
// kiemTra = false;
break; // nếu chia hết cho bất kỳ số nào trong khoảng từ i đến x là có thể khẳng định KHÔNG phải là số nguyên tố
}
}
if (bienDem == 0)
// if (kiemTra == true)
{
printf("%d la so NGUYEN TO!", x);
}
else {
printf("%d KHONG PHAI so nguyen to!", x);
}
}
Bài 3: Xây dựng chương trình xây dựng số chính phương
Input: Nhập vào từ bàn phím số x
Output: Kết luận x có phải là số chính phương hay không?
Biết rằng: Số chính phương là một số mà giá trị của nó là bình phương của một số tự nhiên. (ví dụ: 9 = 3 x 3; 16 = 4 x 4; 25 = 5 x 5; 1,000,000 = 1,000 x 1,000)
Output: Kết luận x có phải là số chính phương hay không?
Biết rằng: Số chính phương là một số mà giá trị của nó là bình phương của một số tự nhiên. (ví dụ: 9 = 3 x 3; 16 = 4 x 4; 25 = 5 x 5; 1,000,000 = 1,000 x 1,000)
code:
/*
Kiểm tra số chính phương
Input: Nhập vào từ bàn phím số x
Output: Kết luận x có phải là số chính phƣơng hay không?
Biết rằng: Số chính phƣơng là một số mà giá trị của nó là bình phƣơng của một số
tự nhiên. (ví dụ: 9 = 3 x 3; 16 = 4 x 4; 25 = 5 x 5; 1,000,000 = 1,000 x 1,000)
*/
#include<stdio.h>
int main(){
int x;
printf("Nhap vao so can kiem tra X: ");
scanf("%d", &x);
int i;
int bienDem = 0;
// char kiemTra = 'k'; // đánh dấu biến kiểm tra 'k'
for ( i = 1; i < x; i++)
{
if (i * i == x)
{
bienDem = 1;
// kiemTra = 'c'; // đánh dấu = 'c' là số chính phương
break;
}
}
if (bienDem == 1)
// if (kiemTra == 'c')
{
printf("%d la so CHINH PHUONG!", x);
}
else
{
printf("%d KHONG PHAI so chinh phuong!", x);
}
}
Tham khảo thêm kiểm tra số chính phương KHÔNG DÙNG VÒNG LẶP:
#include<stdio.h>
#include<math.h>
int main(){
int n;
int kiemTra = 0;
printf("\nNhap so can kiem tra: ");scanf("%d", &n);
// n = 9;
int canBacHai = sqrt(n);
if(canBacHai * canBacHai == n){
kiemTra = 1;
}
if(kiemTra == 1){
printf("%d la SO CHINH PHUONG!\n", n);
}else{
printf("%d KHONG PHAI so chinh phuong!\n", n);
}
}
Bài 4: Xây
dựng menu cho 3 bài tập trên
Yêu cầu:
- Nếu người dùng nhập từ bàn phím số 1: -> Chạy chương trình bài 1
- Nếu người dùng nhập từ bàn phím số 2: -> Chạy chƣơng trình bài 2
- Nếu người dùng nhập từ bàn phím số 3: -> Chạy chƣơng trình bài 3
- Nếu người dùng nhập từ bàn phím số 4: -> Thoát khỏi chương trình
- Nếu người dùng nhập từ bàn phím số khác: Hiển thị menu như cũ
Gợi ý: Sử dụng vòng lặp do while kết hợp với cách tạo menu thông thường để làm bài tập số 4
- Nếu người dùng nhập từ bàn phím số 1: -> Chạy chương trình bài 1
- Nếu người dùng nhập từ bàn phím số 2: -> Chạy chƣơng trình bài 2
- Nếu người dùng nhập từ bàn phím số 3: -> Chạy chƣơng trình bài 3
- Nếu người dùng nhập từ bàn phím số 4: -> Thoát khỏi chương trình
- Nếu người dùng nhập từ bàn phím số khác: Hiển thị menu như cũ
Gợi ý: Sử dụng vòng lặp do while kết hợp với cách tạo menu thông thường để làm bài tập số 4
code:
/*Xây dựng menu cho 3 bài trên
Yêu cầu:
-Nếu ngƣời dùng nhập từ bàn phím số 1: -> Chạy chƣơng trình bài 1
-Nếu ngƣời dùng nhập từ bàn phím số 2: -> Chạy chƣơng trình bài 2
-Nếu ngƣời dùng nhập từ bàn phím số 3: -> Chạy chƣơng trình bài 3
-Nếu ngƣời dùng nhập từ bàn phím số 4: -> Thoát khỏi chƣơng trình
-Nếu ngƣời dùng nhập từ bàn phím số khác: Hiển thị menu nhƣ cũ
*/
#include<stdio.h>
// trung bình tổng chẳn
int bai_01()
{
int min, max;
int tong = 0, trungBinhTong = 0;
int bienDem = 0;
printf("Nhap vao so min: ");
scanf("%d", &min);
printf("Nhap vao so max: ");
scanf("%d", &max);
int i = min;
while (i <= max)
{
if (i % 2 == 0) // chia lấy dư
{
tong = tong + i; // tong +=i
bienDem ++; // tăng biến đếm lên 1
}
i ++; // tăng i lên 1, đây là điều kiện dừng nếu không tăng thì chương trình lặp vô hạn
}
trungBinhTong = tong/bienDem;
printf("\n============================\n");
printf("Trung binh tong so chia het cho 2 la: %d", trungBinhTong);
}
// kiểm tra nguyên tố
int bai_02(){
int x;
int bienDem = 0;
printf("Nhap vao so can kiem tra X: ");
scanf("%d", &x);
for (int i = 2; i < x; i++){
if (x % i == 0)
{
bienDem ++; // mục đích là đánh dấu số chia hết i
break;
}
}
if (bienDem == 0)
{
printf("%d la so NGUYEN TO!", x);
}
else {
printf("%d KHONG PHAI so nguyen to!", x);
}
}
// kiểm tra số chính phương
int bai_03(){
int x;
printf("Nhap vao so can kiem tra X: ");
scanf("%d", &x);
int i;
int bienDem = 0;
for ( i = 1; i < x; i++)
{
if (i * i == x)
{
bienDem = 1;
break;
}
}
if (bienDem == 1)
{
printf("%d la so CHINH PHUONG!", x);
}
else
{
printf("%d KHONG PHAI so chinh phuong!", x);
}
}
// hàm chính
int main()
{
int luaChon;
do
{
printf("\n=========== MENU LUA CHON =========\n");
printf("1. Trung Binh Tong\n");
printf("2. Kiem Tra Nguyen To\n");
printf("3. Kiem Tra Chinh Phuong\n");
printf("0. THOAT CHUONG TRINH!\n");
printf("\n");
printf("Lua chon cua ban la: ");
scanf("%d", &luaChon);
printf("==================================\n");
switch (luaChon)
{
case 1:
bai_01(); // gọi hàm bai_1 phía trên hàm main()
break;
case 2:
bai_02();
break;
case 3:
bai_03();
break;
case 0:
break;
default:
printf("Lua chon KHONG DUNG!\n");
break;
}
} while (luaChon != 0);
}