Câu lệnh if trong c (Bài 4)

Bắt đầu bài học câu lệnh if trong c với yêu cầu (yêu cầu 1): Viết chương trình xếp loại kết quả học tập dựa vào điểm trung bình khoá học theo tiêu chí sau:

  • Nếu điểm trung bình (sau đây gọi là dtb) nhỏ hơn 5, xếp loại “Yếu”
  • Nếu dtb lớn hơn hoặc bằng 5 và nhỏ hơn 6.5, xếp loại “Trung bình”
  • Nếu dtb lớn hơn hoặc bằng 6.5 và nhỏ hơn 8, xếp loại “Khá”
  • Nếu dtb lớn hơn hoặc bằng 8 và nhỏ hơn 10, xếp loại “Giỏi”
  • Nếu dtb bằng 10, xếp loại “Xuất sắc”

Một yêu cầu khác (yêu cầu 2): Viết chương trình nhập vào 2 số nguyên, hiển thị chức năng cho phép người dùng lựa chọn

  • Nhấn phím số 1: Thực hiện phép cộng
  • Nhấn phím số 2: Thực hiện phép trừ
  • Nhấn phím số 3: Thực hiện phép nhân
  • Nhấn phím số 4: Thực hiện phép chia

Câu lệnh if trong c – Phân tích yêu cầu

Đối với vấn đề 1, chúng ta phải dựa vào điểm trung bình và xét 5 trường hợp tương ứng với Yếu, Trung bình, Khá, Giỏi và Xuất sắc. Để xử lý được yêu cầu này chương trình sẽ phải lập và kiểm tra biểu thức điều kiện như sau:

  • Nếu dtb < 5 thì “Yếu”
  • Ngược lại nếu dtb < 6.5 thì “Trung bình”
  • Ngược lại nếu dtb < 8 thì “Khá”
  • Ngược lại nếu dtb < 10 thì “Giỏi”
  • Ngược lại “Xuất sắc”

Đối với vấn đề 2 phải xử lý để cho phép người sử dụng lựa chọn phép tính được qui định theo những con số: 1 tương đương với phép cộng, 2 tương đương với phép trừ, 3 tương đương với phép nhân, 4 tương đương với phép chia. Vậy trong trường hợp này, chương trình sẽ xử lý như sau:

  • Nếu biến pheptinh = 1 thì thực hiện phép tổng
  • Nếu biến pheptinh = 2 thì thực hiện phép trừ
  • Nếu biến pheptinh = 3 thì thực hiện phép nhân
  • Nếu biến pheptinh = 4 thì thực hiện phép chia

Để giải quyết 2 vấn đề trên chúng ta phải sử dụng đến câu lệnh if-else/switch-case. Chi tiết về cú pháp và cách sử dụng, bạn đọc xem bên dưới

Câu lệnh if trong c – Câu lệnh if-else

Được sử dụng để kiểm tra điều kiện và thực hiện xử lý tương ứng với điều kiện đó. Ví dụ nếu điểm trung bình nhỏ hơn 5 thì xếp loại yếu. Trong trường hợp này, điều kiện là điểm trung bình < 5 thì thực hiện xử lý hiển thị thông báo ra màn hình là yếu.

Cú pháp:

Câu lệnh if trong c – Đối với một trường hợp

if(Biểu_Thức_Điều_Kiện) {
  Xử lý trong trường hợp biểu thức điều kiện đúng
}

Nếu điểm trung bình (dtb) nhỏ hơn < 5 thì hiển thị thông báo “Loại yếu”

if(dtb<5) {
  printf("Loại yếu");
}

Câu lệnh if trong c – Đối với hai trường hợp

if(Biểu_Thức_Điều_Kiện) {
   Xử lý 1;
} else {
   Xử lý 2;
}

Nếu điểm trung bình < 5 thì thông báo “Loại yếu”, ngược lại thông báo “Loại trung bình”

if(dtb<5) {
   printf("Loại yếu");
} else {
   printf("Loại trung bình");
}

Câu lệnh if trong c – Đối với nhiều hơn 2 trường hợp

if(Biểu_Thức_Điều_Kiện_1) {
   Xử lý 1;
} else if(Biểu_Thức_Điều_Kiện_2) {
   Xử lý 2;
} else if(Biểu_Thức_Điều_Kiện_N-1) {
   Xử lý N-1;
} else {
   Xử lý N;
}

Ví dụ:

 Yêu cầu Kết luận
Nếu điểm trung bình < 5 thì thông báo “Loại yếu” Trường hợp thứ nhất
Nếu điểm trung bình < 6.5 thì thông báo “Loại trung bình” Trường hợp thứ hai
Nếu điểm trung bình < 8 thì thông báo “Loại khá” Trường hợp thứ ba
Nếu điểm trung bình < 10 thì thông báo “Loại giỏi” Trường hợp thứ tư
Ngược lại thì thông báo “Loại xuất sắc” Trường hợp thứ năm

Với yêu cầu này, chúng ta phải sử dụng if-else lồng nhau. Tức là trong biểu thức else chúng ta đặt biểu thức if và cứ như vậy cho đến hết các trường hợp.

//Trường hợp thứ nhất
if(dtb<5) {
   printf("Loại yếu");
//Trường hợp thứ hai
} else if(dtb<6.5) {
   printf("Loại trung bình");
//Trường hợp thứ ba
} else if(dtb<8) {
   printf("Loại khá");
//Trường hợp thứ tư
} else if(dtb<10) {
   printf("Loại giỏi");
//Trường hợp thứ năm
} else {
   printf("Loại xuất sắc");
}

Lưu ý trong biểu thức điều kiện, chúng ta có thể sử dụng toán tử và (&&), toán tử hoặc (||) để lập biểu thức điều kiện. Ví dụ viết xử lý tìm số lớn nhất trong 3 số nguyên tương ứng là a, b, c. Câu lệnh if sẽ được viết như sau

if(a>b && a>c) {
  printf("Số lớn nhất là %d", a);
}

Giải thích: Nếu a lớn hơn b và đồng thời a lớn hơn c thì số lớn nhất trong 3 số a, b, c là a. Trong xử lý trên, nếu a = 10, b = 3, c = 9 thì chương trình sẽ thông báo “Số lớn nhất là 10”. Các bạn có thể xem lại phần xử lý xuất của bài 3 tại đây để ôn lại cú pháp và cách sử dụng của hàm xử lý xuất printf.

Câu lệnh if trong c – Câu lệnh switch-case

Nếu biểu thức điều kiện so sánh bằng với với một hằng kiểu số nguyên hoặc ký tự thì chúng ta nên sử dụng câu lệnh switch-case vì 2 lý do: Mã nguồn (source code) dễ đọc và Chương trình sẽ thực thi nhanh hơn.

Cú pháp:

switch(Biến) {
  case Giá_Trị_1:
    Xử lý 1;
    break;
  case Giá_Trị_2:
    Xử lý 2;
    break;
  case Giá_Trị_N-1:
    Xử lý N-1;
    break;
  default:
    Xử lý N;
}

Giải thích cú pháp switch-case

Thực hiện so sánh biến với từng case và nếu thoả case nào thì sẽ thực hiện xử lý bên trong của case đó và kết thúc một case bằng lệnh break. Trường hợp không thỏa bất kỳ case nào thì xử lý bên trong default sẽ được thực hiện.

Ví dụ chương trình cho phép người dùng lựa chọn phép tính cho 2 số nguyên, cụ thể như sau:

  • Nếu biến pheptinh = 1 thì thực hiện phép tổng
  • Nếu biến pheptinh = 2 thì thực hiện phép trừ
  • Nếu biến pheptinh = 3 thì thực hiện phép nhân
  • Nếu biến pheptinh = 4 thì thực hiện phép chia
int a, b, pheptinh;
printf("a = "); scanf("%d", &a);
printf("b = "); scanf("%d", &b);
printf("Nhap phep tinh ");
scanf("%d", &pheptinh);
switch(pheptinh) {
   case 1: //Phép cộng
     printf("Tong 2 so la %d", a+b);
     break;
   case 2: //Phép trừ
     printf("Hieu 2 so la %d", a-b);
     break;
   case 2: //Phép nhân
     printf("Tich 2 so la %d", a*b);
     break;
   case 4: //Phép chia
     printf("Thuong 2 so la %f", (float)a/b);
     break;
   default:
     printf("Nhap sai phep tinh");
}

Kết luận: Những xử lý bằng switch-case đều xử lý được với if-else nhưng ngược lại thì KHÔNG vì switch-case chỉ chấp nhận kiểu số nguyên và kiểu ký tự và chỉ xử lý SO SÁNH BẰNG.

Câu lệnh if trong c – Tổng kết

  • Câu lệnh if trong c
  • Câu lệnh switch trong c

Câu lệnh if trong c – Bài tập thực hành

Bài thực hành số 1: Viết chương trình nhập vào 2 số a và b và kiểm tra có thể thực hiện được phép chia a cho b hay không?

Bài thực hành số 2: Viết chương trình tìm số lớn nhất trong 3 số thực a, b và c.

Bài thực hành số 3: Viết chương trình để thể hiện khả năng của máy tính. Người dùng nhập vào một ký tự và chương trình sẽ hiển thị ngôn ngữ tương ứng. Sử dụng switch-case để chọn và hiển thị thông báo. Sử dụng default để hiển thị thông báo “Bạn đã nhập sai” trong trường hợp người dùng nhập không khớp với các ký tự như đã mô tả ở cột đầu vào của bảng sau

Đầu vào (Input) Đầu ra (Output)
A hoặc a Ada
B hoặc b Basic
C hoặc c Cobol
D hoặc d Android
F hoặc f Fortran
W hoặc w Windows Phone

Bài thực hành số 4: Viết chương trình tính lương thực lãnh của nhân viên, biết rằng lương thực lãnh = lương + phụ cấp. Trong đó phụ cấp sẽ dựa vào thứ hạng của nhân viên.

Nhập lương, thứ hạng và tính lương thực lãnh của nhân viên. Cho bảng phụ cấp dựa vào thứ hạng

Thứ hạng của nhân viên Phụ cấp
A 300
B 200
C 100

Bài thực hành số 5: Viết chương trình giải phương trình bậc hai (ax2 + bx + c = 0) với a,b,c nhập từ bàn phím.

Xem giáo trình môn lập trình c

5 thoughts on “Câu lệnh if trong c (Bài 4)

  1. toan

    add có thể giai thích rõ cấu trúc này được không
    if(!A) là gì và dùng thế nào ạ

    và bên lề một chút câu lệnh sau có nghĩa là gì,

    class::class():fun(), fdep(), fscor(0)
    {}

    cám ơn add

    1. admin Post author

      Đối với kiểu dữ liệu luận lý (boolean) thì chúng ta có 2 cách viết. Chúng tôi lấy ví dụ như sau:

      //Khai báo biến A kiểu boolean. Kiểu này chỉ nhận một trong 2 giá trị là true (đúng) hoặc false (sai)
      boolean A = false;

      //Cách viết thứ nhất
      if (A == false) {

      }

      //Cách viết thứ hai
      if (!A) {

      }

      Trong trường hợp này 2 cách viết trên là tương tự nhau.

      BQT – http://giasutinhoc.vn

  2. anh

    #include
    using namespace std;
    int luachon;
    int main(){
    cout<<"nhap tuoi can xet";
    cout<>luachon;
    switch(luachon){
    case 1..12:cout<<"\n Tuoi thieu nien";(cai nay trong pascal thif chay trong c++ thi lam the nao)
    case 13..30:cout<<"\n Tuoi thanh nien";
    case 31..40:cout<<"\n Tuoi trung nien";
    case 41..50:cout<<"\n Tuoi cao nien";
    case 50..80:cout<<"\n Tuoi lao nien";
    default: cout<<"\nban da nhap sai";
    }
    return 0;
    }

Trả lời